コード例 #1
0
    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();
        }
    }
コード例 #2
0
 public SRP02Instance(SRP02CustomParameter SRP02CustomParameter)
 {
     SRP02CP = SRP02CustomParameter;
 }