Ejemplo n.º 1
0
    public void Render(ScriptableRenderContext context, Camera camera,
                       ref RenderingSetting renderingSetting,
                       ref BatchingSetting batchingSetting,
                       ref ShadowSetting shadowSetting,
                       ref PostFXSetting postFXSetting)
    {
        _context     = context;
        _camera      = camera;
        _cmdBuf.name = camera.name;
        _useHDR      = renderingSetting.allowHDR && camera.allowHDR;

        EmitSceneUIGeometry();

        if (!Cull(ref shadowSetting))
        {
            return;
        }

        _postFXStack.SetUp(context, camera, ref postFXSetting, renderingSetting.allowHDR);
        SetUp(ref renderingSetting, ref shadowSetting);

        DrawVisibleGeometry(ref batchingSetting);
        DrawUnsupportedShaders();
        DrawGizmosPreImageEffect();
        _postFXStack.Render(IntermediateRT);
        DrawGizmosPostImageEffect();

        Submit();
    }
Ejemplo n.º 2
0
    private void DrawVisibleGeometry(ref BatchingSetting batchingSetting)
    {
        var sortSettings = new SortingSettings(_camera)
        {
            criteria = SortingCriteria.CommonOpaque
        };
        var drawSettings   = new DrawingSettings();
        var filterSettings = new FilteringSettings(RenderQueueRange.opaque);

        drawSettings.SetShaderPassName(0, UnlitShaderTagId);
        drawSettings.SetShaderPassName(1, LitShaderTagId);
        drawSettings.perObjectData = PerObjectData.Lightmaps | PerObjectData.LightProbe | PerObjectData.LightProbeProxyVolume
                                     | PerObjectData.ShadowMask | PerObjectData.OcclusionProbe | PerObjectData.OcclusionProbeProxyVolume
                                     | PerObjectData.ReflectionProbes;
        drawSettings.sortingSettings       = sortSettings;
        drawSettings.enableDynamicBatching = batchingSetting.useDynamicBatching;
        drawSettings.enableInstancing      = batchingSetting.useGPUInstancing;

        _context.DrawRenderers(_cullResults, ref drawSettings, ref filterSettings);  // draw opaques

        _context.DrawSkybox(_camera);

        filterSettings.renderQueueRange = RenderQueueRange.transparent;
        sortSettings.criteria           = SortingCriteria.CommonTransparent;
        drawSettings.sortingSettings    = sortSettings;
        _context.DrawRenderers(_cullResults, ref drawSettings, ref filterSettings); // draw transparent
    }
Ejemplo n.º 3
0
 public CustomRenderPipeline(ref RenderingSetting renderingSetting, ref BatchingSetting batchingSetting, ref ShadowSetting shadowSetting, ref PostFXSetting postFXSetting)
 {
     _batchingSetting  = batchingSetting;
     _shadowSetting    = shadowSetting;
     _renderingSetting = renderingSetting;
     _postFXSetting    = postFXSetting;
     GraphicsSettings.useScriptableRenderPipelineBatching = _batchingSetting.useSRPBatching;
 }