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; }
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); } }
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); }