// This is shared between SSGI and RTGI IndirectDiffuseMode GetIndirectDiffuseMode(HDCamera hdCamera) { IndirectDiffuseMode mode = IndirectDiffuseMode.Off; if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.SSGI)) { var settings = hdCamera.volumeStack.GetComponent <GlobalIllumination>(); if (settings.enable.value) { // RTGI is only valid if raytracing is enabled bool raytracing = hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && settings.rayTracing.value; mode = raytracing ? IndirectDiffuseMode.Raytrace : IndirectDiffuseMode.ScreenSpace; } } return(mode); }
// This is shared between SSGI and RTGI IndirectDiffuseMode GetIndirectDiffuseMode(HDCamera hdCamera) { IndirectDiffuseMode mode = IndirectDiffuseMode.Off; if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.SSGI)) { var settings = hdCamera.volumeStack.GetComponent <GlobalIllumination>(); if (settings.enable.value) { bool allowSsgi = hdCamera.colorPyramidHistoryIsValid && !hdCamera.isFirstFrame; // RTGI is only valid if raytracing is enabled bool raytracing = hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && settings.tracing.value != RayCastingMode.RayMarching; mode = raytracing ? IndirectDiffuseMode.Raytrace : (allowSsgi ? IndirectDiffuseMode.ScreenSpace : IndirectDiffuseMode.Off); } } return(mode); }
// This is shared between SSGI and RTGI IndirectDiffuseMode GetIndirectDiffuseMode(HDCamera hdCamera) { IndirectDiffuseMode mode = IndirectDiffuseMode.Off; if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.SSGI)) { var settings = hdCamera.volumeStack.GetComponent <GlobalIllumination>(); if (settings.enable.value) { bool allowSsgi = hdCamera.colorPyramidHistoryIsValid && !hdCamera.isFirstFrame; // We can use the ray tracing version of the effect if: // - It is enabled in the frame settings // - It is enabled in the volume // - The RTAS has been build validated // - The RTLightCluster has been validated bool raytracing = hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && settings.tracing.value != RayCastingMode.RayMarching && GetRayTracingState() && GetRayTracingClusterState(); mode = raytracing ? IndirectDiffuseMode.Raytrace : (allowSsgi ? IndirectDiffuseMode.ScreenSpace : IndirectDiffuseMode.Off); } } return(mode); }