Exemple #1
0
        public override void SetupCullingParameters(ref ScriptableCullingParameters cullingParameters, ref CameraData cameraData)
        {
            DynamicShadowProjectorComponents components            = GetDynamicShadowProjectorComponents(cameraData.camera);
            ShadowTextureRenderer            shadowTextureRenderer = components.shadowTextureRenderer;

            if (shadowTextureRenderer == null)
            {
#if UNITY_EDITOR
                Debug.LogWarning("No ShadowTextureRenderer found.");
#endif
                return;
            }
            shadowTextureRenderer.UpdateVisibilityAndPrepareRendering();
            cullingParameters.cullingMask = 0;
            if (shadowTextureRenderer.isProjectorVisible && shadowTextureRenderer.isActiveAndEnabled)
            {
                DrawSceneObject drawScene = components.drawSceneObject;
                if (drawScene != null)
                {
                    cullingParameters.cullingMask = (uint)drawScene.cullingMask.value;
                }
                DrawTargetObject drawTarget = components.drawTargetObject;
                if (drawTarget != null)
                {
                    drawTarget.SendMessage("OnPreCull");
                }
                shadowTextureRenderer.ConfigureRenderTarget(m_renderShadowTexturePass, ref cameraData);
            }
            cullingParameters.cullingOptions = CullingOptions.None;
            cullingParameters.shadowDistance = 0;
        }
Exemple #2
0
        public override void Setup(ScriptableRenderContext context, ref RenderingData renderingData)
        {
            renderingData.cameraData.isStereoEnabled   = false;
            renderingData.cameraData.isSceneViewCamera = false;
            DynamicShadowProjectorComponents components            = GetDynamicShadowProjectorComponents(renderingData.cameraData.camera);
            ShadowTextureRenderer            shadowTextureRenderer = components.shadowTextureRenderer;

            if (shadowTextureRenderer != null && shadowTextureRenderer.isActiveAndEnabled && shadowTextureRenderer.isProjectorVisible)
            {
                EnqueuePass(m_renderShadowTexturePass);
            }
        }
Exemple #3
0
        public DynamicShadowProjectorComponents GetDynamicShadowProjectorComponents(Camera camera)
        {
            DynamicShadowProjectorComponents components;

            if (!m_cameraToComponents.TryGetValue(camera, out components))
            {
                components = new DynamicShadowProjectorComponents();
                components.SetComponentsFromCamera(camera);
                m_cameraToComponents.Add(camera, components);
            }
            else if (!components.IsValid())
            {
                components.SetComponentsFromCamera(camera);
            }
            return(components);
        }