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