Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }