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