private static readonly ShaderPassName m_UnlitPassName = new ShaderPassName("SRPDefaultUnlit"); //For default shaders public static void Render(ScriptableRenderContext context, Camera[] cameras, SRP02CustomParameter SRP02CP) { RenderPipeline.BeginFrameRendering(cameras); foreach (Camera camera in cameras) { RenderPipeline.BeginCameraRendering(camera); //Culling ScriptableCullingParameters cullingParams; if (!CullResults.GetCullingParameters(camera, out cullingParams)) { continue; } CullResults cull = new CullResults(); CullResults.Cull(ref cullingParams, context, ref cull); context.SetupCameraProperties(camera); if (camera.renderingPath == RenderingPath.UsePlayerSettings) { // clear depth buffer CommandBuffer cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, !SRP02CP.DrawSkybox, SRP02CP.ClearColor); context.ExecuteCommandBuffer(cmd); cmd.Release(); // Setup global lighting shader variables //SetupLightShaderVariables(cull.visibleLights, context); // Setup DrawSettings and FilterSettings ShaderPassName passName = new ShaderPassName("BasicPass"); DrawRendererSettings drawSettings = new DrawRendererSettings(camera, passName); FilterRenderersSettings filterSettings = new FilterRenderersSettings(true); //Draw passes that has no light mode (default) ShaderPassName passNameDefault = new ShaderPassName(""); DrawRendererSettings drawSettingsDefault = new DrawRendererSettings(camera, passNameDefault); drawSettingsDefault.SetShaderPassName(1, m_UnlitPassName); if (SRP02CP.DrawSkybox) { context.DrawSkybox(camera); } if (SRP02CP.DrawOpaque) { drawSettings.sorting.flags = SortFlags.CommonOpaque; filterSettings.renderQueueRange = RenderQueueRange.opaque; context.DrawRenderers(cull.visibleRenderers, ref drawSettings, filterSettings); } // Default drawSettingsDefault.sorting.flags = SortFlags.CommonOpaque; context.DrawRenderers(cull.visibleRenderers, ref drawSettingsDefault, filterSettings); if (SRP02CP.DrawTransparent) { drawSettings.sorting.flags = SortFlags.CommonTransparent; filterSettings.renderQueueRange = RenderQueueRange.transparent; context.DrawRenderers(cull.visibleRenderers, ref drawSettings, filterSettings); } // Default drawSettingsDefault.sorting.flags = SortFlags.CommonTransparent; context.DrawRenderers(cull.visibleRenderers, ref drawSettingsDefault, filterSettings); } context.Submit(); } }
public SRP02Instance(SRP02CustomParameter SRP02CustomParameter) { SRP02CP = SRP02CustomParameter; }