Esempio 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();
    }
Esempio n. 2
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;
 }
Esempio n. 3
0
 void SetUpIntermediateRT(ref RenderingSetting renderingSetting)
 {
     if (_postFXStack.isActive)
     {
         _cmdBuf.GetTemporaryRT(IntermediateRT, _camera.pixelWidth, _camera.pixelHeight, 24, FilterMode.Bilinear, _useHDR ? RenderTextureFormat.DefaultHDR : RenderTextureFormat.Default, RenderTextureReadWrite.sRGB, (int)renderingSetting.antiAliasing);
         _cmdBuf.SetRenderTarget(IntermediateRT, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store);
         ExecuteCommandBuffer();
     }
 }
Esempio n. 4
0
    private void SetUp(ref RenderingSetting renderingSetting, ref ShadowSetting shadowSetting)
    {
        _cmdBuf.BeginSample(_cmdBuf.name);
        ExecuteCommandBuffer();
        _lightMgr.SetUp(ref _context, ref _cullResults, ref shadowSetting);
        _cmdBuf.EndSample(_cmdBuf.name);

        _context.SetupCameraProperties(_camera);
        SetUpIntermediateRT(ref renderingSetting);

        CameraClearFlags clearFlags = _camera.clearFlags;

        _cmdBuf.ClearRenderTarget(clearFlags <= CameraClearFlags.Depth, clearFlags <= CameraClearFlags.Color, clearFlags <= CameraClearFlags.Color ? _camera.backgroundColor.linear : Color.clear);
        _cmdBuf.BeginSample(_cmdBuf.name);
        ExecuteCommandBuffer();
    }
        void DoRenderingMode()
        {
            RenderingMode mode = RenderingMode.Opaque;

            shouldShowAlphaCutoff = false;
            if (IsKeywordEnabled("_RENDERING_CUTOUT"))
            {
                mode = RenderingMode.Cutout;
                shouldShowAlphaCutoff = true;
            }
            else if (IsKeywordEnabled("_RENDERING_FADE"))
            {
                mode = RenderingMode.Fade;
            }
            else if (IsKeywordEnabled("_RENDERING_TRANSPARENT"))
            {
                mode = RenderingMode.Transparent;
            }

            EditorGUI.BeginChangeCheck();
            mode = (RenderingMode)EditorGUILayout.EnumPopup(
                MakeLabel("Rendering Mode"), mode
                );
            if (EditorGUI.EndChangeCheck())
            {
                RecordAction("Rendering Mode");
                SetKeyword("_RENDERING_CUTOUT", mode == RenderingMode.Cutout);
                SetKeyword("_RENDERING_FADE", mode == RenderingMode.Fade);
                SetKeyword("_RENDERING_TRANSPARENT", mode == RenderingMode.Transparent);

                RenderingSetting settings = RenderingSetting.modes[(int)mode];
                foreach (Material m in editor.targets)
                {
                    m.renderQueue = (int)settings.queue;
                    m.SetOverrideTag("RenderType", settings.renderType);
                    m.SetInt("_SrcBlend", (int)settings.srcBlend);
                    m.SetInt("_DstBlend", (int)settings.dstBlend);
                    m.SetInt("_ZWrite", settings.zWrite ? 1 : 0);
                }
            }
            if (mode == RenderingMode.Fade || mode == RenderingMode.Transparent)
            {
                DoSemitransparentShadows();
            }
        }