Example #1
0
        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
            }
        }
Example #2
0
        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
            }
        }
Example #3
0
        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
            }
        }