private void RenderLit(HDRenderPipeline.GBufferRenderData data) { if (pointCloudRenderers == null || pointCloudRenderers.Length == 0) { return; } var doLitPass = pointCloudRenderers.Any(pcr => pcr.SupportsLighting); if (!doLitPass) { return; } // TODO: Add support for multiple GBuffer texture count (up to 6) if (rtiCache4 == null) { rtiCache4 = new RenderTargetIdentifier[4]; } for (var i = 0; i < rtiCache4.Length; ++i) { rtiCache4[i] = data.gBuffer[i]; } RenderPipeline.ForceRenderSky(data.camera, data.context.cmd, data.customPassColorBuffer, data.customPassDepthBuffer); foreach (var pcr in pointCloudRenderers) { if (!pcr.SupportsLighting) { continue; } PointCloudManager.Resources.UpdateSHCoefficients(data.context.cmd, pcr.transform.position); pcr.Render(data.context.cmd, data.camera, rtiCache4, data.depthBuffer, data.customPassColorBuffer); } }
private void RenderLit(HDRenderPipeline.GBufferRenderData data) { if (pointCloudRenderers == null || pointCloudRenderers.Length == 0) { return; } var doLitPass = pointCloudRenderers.Any(pcr => pcr.SupportsLighting); if (!doLitPass) { return; } var lightLayers = data.camera.frameSettings.IsEnabled(FrameSettingsField.LightLayers); RenderTargetIdentifier[] rtiCache; if (lightLayers) { if (rtiCache5 == null) { rtiCache5 = new RenderTargetIdentifier[5]; } for (var i = 0; i < rtiCache5.Length; ++i) { rtiCache5[i] = data.gBuffer[i]; } rtiCache = rtiCache5; // Note: GBuffer5 can still be present if shadowmasking is enabled, but we can't bake static shadows // into point cloud data anyway, so it's safe to ignore it in this context. } else { if (rtiCache4 == null) { rtiCache4 = new RenderTargetIdentifier[4]; } for (var i = 0; i < rtiCache4.Length; ++i) { rtiCache4[i] = data.gBuffer[i]; } rtiCache = rtiCache4; } RenderPipeline.ForceRenderSky(data.camera, data.context.cmd, data.customPassColorBuffer, data.customPassDepthBuffer); foreach (var pcr in pointCloudRenderers) { if (!pcr.SupportsLighting) { continue; } PointCloudManager.Resources.UpdateSHCoefficients(data.context.cmd, pcr.transform.position); pcr.Render(data.context.cmd, data.camera, rtiCache, data.depthBuffer, data.customPassColorBuffer); } }