void UpdateCameraRelatedProperties(Camera cam) { if (cam && m_Master) { if (m_CustomMaterial == null) { meshRenderer.GetPropertyBlock(MaterialManager.materialPropertyBlock); } var camPosOS = m_Master.transform.InverseTransformPoint(cam.transform.position); var camForwardVectorOSN = transform.InverseTransformDirection(cam.transform.forward).normalized; float camIsInsideBeamFactor = cam.orthographic ? -1f : m_Master.GetInsideBeamFactorFromObjectSpacePos(camPosOS); SetMaterialProp("_CameraParams", new Vector4(camForwardVectorOSN.x, camForwardVectorOSN.y, camForwardVectorOSN.z, camIsInsideBeamFactor)); if (m_Master.colorMode == ColorMode.Gradient) { // Send the gradient matrix every frame since it's not a shader's property SetMaterialProp("_ColorGradientMatrix", m_ColorGradientMatrix); } if (m_CustomMaterial == null) { meshRenderer.SetPropertyBlock(MaterialManager.materialPropertyBlock); } #if FORCE_CURRENT_CAMERA_DEPTH_TEXTURE_MODE if (m_Master.depthBlendDistance > 0f) { cam.depthTextureMode |= DepthTextureMode.Depth; } #endif } }
void UpdateCameraRelatedProperties(Camera cam) { if (cam && m_Master) { MaterialChangeStart(); { var camPosOS = m_Master.transform.InverseTransformPoint(cam.transform.position); var camForwardVectorOSN = transform.InverseTransformDirection(cam.transform.forward).normalized; float camIsInsideBeamFactor = cam.orthographic ? -1f : m_Master.GetInsideBeamFactorFromObjectSpacePos(camPosOS); SetMaterialProp(ShaderProperties.CameraParams, new Vector4(camForwardVectorOSN.x, camForwardVectorOSN.y, camForwardVectorOSN.z, camIsInsideBeamFactor)); #if UNITY_2017_3_OR_NEWER && VLB_SRP_SUPPORT // ScalableBufferManager introduced in Unity 2017.3 if (IsUsingCustomRenderPipeline()) { var bufferSize = cam.allowDynamicResolution ? new Vector2(ScalableBufferManager.widthScaleFactor, ScalableBufferManager.heightScaleFactor) : Vector2.one; SetMaterialProp(ShaderProperties.CameraBufferSizeSRP, bufferSize); } #endif if (m_Master.colorMode == ColorMode.Gradient) { // Send the gradient matrix every frame since it's not a shader's property SetMaterialProp(ShaderProperties.ColorGradientMatrix, m_ColorGradientMatrix); } } MaterialChangeStop(); #if FORCE_CURRENT_CAMERA_DEPTH_TEXTURE_MODE if (m_Master.depthBlendDistance > 0f) { cam.depthTextureMode |= DepthTextureMode.Depth; } #endif } }
void UpdateCameraRelatedProperties(Camera cam) { if (cam && m_Master) { MaterialChangeStart(); { var camPosOS = m_Master.transform.InverseTransformPoint(cam.transform.position); var camForwardVectorOSN = transform.InverseTransformDirection(cam.transform.forward).normalized; float camIsInsideBeamFactor = cam.orthographic ? -1f : m_Master.GetInsideBeamFactorFromObjectSpacePos(camPosOS); SetMaterialProp(ShaderProperties.CameraParams, new Vector4(camForwardVectorOSN.x, camForwardVectorOSN.y, camForwardVectorOSN.z, camIsInsideBeamFactor)); #if VLB_SRP_SUPPORT // This update is to be able to move beams without trackChangesDuringPlaytime enabled with SRP & GPU Instancing UpdateMatricesPropertiesForGPUInstancingSRP(); #endif if (m_Master.usedColorMode == ColorMode.Gradient) { // Send the gradient matrix every frame since it's not a shader's property SetMaterialProp(ShaderProperties.ColorGradientMatrix, m_ColorGradientMatrix); } } MaterialChangeStop(); #if FORCE_CURRENT_CAMERA_DEPTH_TEXTURE_MODE if (m_Master.depthBlendDistance > 0f) { cam.depthTextureMode |= DepthTextureMode.Depth; } #endif } }