public bool enableMSAA = false ;
// Setup by system
public bool enableMaterialDisplayDebug = false ;
public bool enableShadowMask = false ;
}
public void CopyTo ( FrameSettings frameSettings )
{
frameSettings . lightingSettings . enableShadow = this . lightingSettings . enableShadow ;
frameSettings . lightingSettings . enableSSR = this . lightingSettings . enableSSR ;
frameSettings . lightingSettings . enableSSAO = this . lightingSettings . enableSSAO ;
frameSettings . lightingSettings . enableShadow = this . lightingSettings . enableShadow ;
frameSettings . lightingSettings . enableSSR = this . lightingSettings . enableSSR ;
frameSettings . lightingSettings . enableSSAO = this . lightingSettings . enableSSAO ;
frameSettings . lightingSettings . diffuseGlobalDimmer = this . lightingSettings . diffuseGlobalDimmer ;
frameSettings . lightingSettings . specularGlobalDimmer = this . lightingSettings . specularGlobalDimmer ;
frameSettings . lightingSettings . diffuseGlobalDimmer = this . lightingSettings . diffuseGlobalDimmer ;
frameSettings . lightingSettings . specularGlobalDimmer = this . lightingSettings . specularGlobalDimmer ;
frameSettings . renderSettings . enableForwardRenderingOnly = this . renderSettings . enableForwardRenderingOnly ;
frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering = this . renderSettings . enableDepthPrepassWithDeferredRendering ;
frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass = this . renderSettings . enableAlphaTestOnlyInDeferredPrepass ;
frameSettings . renderSettings . enableForwardRenderingOnly = this . renderSettings . enableForwardRenderingOnly ;
frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering = this . renderSettings . enableDepthPrepassWithDeferredRendering ;
frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass = this . renderSettings . enableAlphaTestOnlyInDeferredPrepass ;
frameSettings . renderSettings . enableTransparentPrePass = this . renderSettings . enableTransparentPrePass ;
frameSettings . renderSettings . enableMotionVectors = this . renderSettings . enableMotionVectors ;
frameSettings . renderSettings . enableDBuffer = this . renderSettings . enableDBuffer ;
frameSettings . renderSettings . enableAtmosphericScattering = this . renderSettings . enableAtmosphericScattering ;
frameSettings . renderSettings . enableRoughRefraction = this . renderSettings . enableRoughRefraction ;
frameSettings . renderSettings . enableTransparentPostPass = this . renderSettings . enableTransparentPostPass ;
frameSettings . renderSettings . enableDistortion = this . renderSettings . enableDistortion ;
frameSettings . renderSettings . enablePostprocess = this . renderSettings . enablePostprocess ;
frameSettings . renderSettings . enableTransparentPrePass = this . renderSettings . enableTransparentPrePass ;
frameSettings . renderSettings . enableMotionVectors = this . renderSettings . enableMotionVectors ;
frameSettings . renderSettings . enableDBuffer = this . renderSettings . enableDBuffer ;
frameSettings . renderSettings . enableAtmosphericScattering = this . renderSettings . enableAtmosphericScattering ;
frameSettings . renderSettings . enableRoughRefraction = this . renderSettings . enableRoughRefraction ;
frameSettings . renderSettings . enableTransparentPostPass = this . renderSettings . enableTransparentPostPass ;
frameSettings . renderSettings . enableDistortion = this . renderSettings . enableDistortion ;
frameSettings . renderSettings . enablePostprocess = this . renderSettings . enablePostprocess ;
frameSettings . renderSettings . enableStereo = this . renderSettings . enableStereo ;
frameSettings . renderSettings . enableForwardRenderingOnly = this . renderSettings . enableForwardRenderingOnly ;
frameSettings . renderSettings . enableStereo = this . renderSettings . enableStereo ;
frameSettings . renderSettings . enableForwardRenderingOnly = this . renderSettings . enableForwardRenderingOnly ;
frameSettings . renderSettings . enableOpaqueObjects = this . renderSettings . enableOpaqueObjects ;
frameSettings . renderSettings . enableTransparentObjects = this . renderSettings . enableTransparentObjects ;
frameSettings . renderSettings . enableOpaqueObjects = this . renderSettings . enableOpaqueObjects ;
frameSettings . renderSettings . enableTransparentObjects = this . renderSettings . enableTransparentObjects ;
frameSettings . renderSettings . enableAsyncCompute = this . renderSettings . enableAsyncCompute ;
frameSettings . renderSettings . enableAsyncCompute = this . renderSettings . enableAsyncCompute ;
frameSettings . renderSettings . enableMSAA = this . renderSettings . enableMSAA ;
frameSettings . renderSettings . enableMSAA = this . renderSettings . enableMSAA ;
frameSettings . renderSettings . enableMaterialDisplayDebug = this . renderSettings . enableMaterialDisplayDebug ;
frameSettings . renderSettings . enableShadowMask = this . renderSettings . enableShadowMask ;
frameSettings . renderSettings . enableShadowMask = this . renderSettings . enableShadowMask ;
this . lightLoopSettings . CopyTo ( frameSettings . lightLoopSettings ) ;
}
// When rendering reflection probe we disable specular as it is view dependent
if ( camera . cameraType = = CameraType . Reflection )
{
aggregate . lightingSettings . diffuseGlobalDimmer = 1.0f ;
aggregate . lightingSettings . diffuseGlobalDimmer = 1.0f ;
aggregate . lightingSettings . diffuseGlobalDimmer = 1.0f ;
aggregate . lightingSettings . diffuseGlobalDimmer = 1.0f ;
aggregate . lightingSettings . enableShadow = frameSettings . lightingSettings . enableShadow ;
aggregate . lightingSettings . enableSSR = frameSettings . lightingSettings . enableSSR & & globalFrameSettings . lightingSettings . supportSSR ;
aggregate . lightingSettings . enableSSAO = frameSettings . lightingSettings . enableSSAO & & globalFrameSettings . lightingSettings . supportSSAO ;
aggregate . lightingSettings . enableSSSAndTransmission = frameSettings . lightingSettings . enableSSSAndTransmission & & globalFrameSettings . lightingSettings . supportSSSAndTransmission ;
aggregate . lightingSettings . enableShadow = frameSettings . lightingSettings . enableShadow ;
aggregate . lightingSettings . enableSSR = camera . cameraType = = CameraType . Reflection ? false : frameSettings . lightingSettings . enableSSR & & globalFrameSettings . lightingSettings . supportSSR ;
aggregate . lightingSettings . enableSSAO = frameSettings . lightingSettings . enableSSAO & & globalFrameSettings . lightingSettings . supportSSAO ;
aggregate . lightingSettings . enableSSSAndTransmission = camera . cameraType = = CameraType . Reflection ? false : frameSettings . lightingSettings . enableSSSAndTransmission & & globalFrameSettings . lightingSettings . supportSSSAndTransmission ;
aggregate . renderSettings . enableForwardRenderingOnly = frameSettings . renderSettings . enableForwardRenderingOnly | | GL . wireframe ;
aggregate . renderSettings . enableDepthPrepassWithDeferredRendering = frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering ;
aggregate . renderSettings . enableAlphaTestOnlyInDeferredPrepass = frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass ;
aggregate . renderSettings . enableForwardRenderingOnly = frameSettings . renderSettings . enableForwardRenderingOnly | | GL . wireframe ;
aggregate . renderSettings . enableDepthPrepassWithDeferredRendering = frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering ;
aggregate . renderSettings . enableAlphaTestOnlyInDeferredPrepass = frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass ;
aggregate . renderSettings . enableTransparentPrePass = frameSettings . renderSettings . enableTransparentPrePass ;
aggregate . renderSettings . enableMotionVectors = frameSettings . renderSettings . enableMotionVectors ;
aggregate . renderSettings . enableDBuffer = frameSettings . renderSettings . enableDBuffer & & globalFrameSettings . renderSettings . supportDBuffer ;
aggregate . renderSettings . enableAtmosphericScattering = frameSettings . renderSettings . enableAtmosphericScattering ;
aggregate . renderSettings . enableRoughRefraction = frameSettings . renderSettings . enableRoughRefraction ;
aggregate . renderSettings . enableTransparentPostPass = frameSettings . renderSettings . enableTransparentPostPass ;
aggregate . renderSettings . enableDistortion = frameSettings . renderSettings . enableDistortion ;
aggregate . renderSettings . enablePostprocess = frameSettings . renderSettings . enablePostprocess ;
aggregate . renderSettings . enableTransparentPrePass = frameSettings . renderSettings . enableTransparentPrePass ;
aggregate . renderSettings . enableMotionVectors = camera . cameraType = = CameraType . Reflection ? false : frameSettings . renderSettings . enableMotionVectors ;
aggregate . renderSettings . enableDBuffer = frameSettings . renderSettings . enableDBuffer & & globalFrameSettings . renderSettings . supportDBuffer ;
aggregate . renderSettings . enableAtmosphericScattering = frameSettings . renderSettings . enableAtmosphericScattering ;
aggregate . renderSettings . enableRoughRefraction = frameSettings . renderSettings . enableRoughRefraction ;
aggregate . renderSettings . enableTransparentPostPass = frameSettings . renderSettings . enableTransparentPostPass ;
aggregate . renderSettings . enableDistortion = camera . cameraType = = CameraType . Reflection ? false : frameSettings . renderSettings . enableDistortion ;
// Planar and real time cubemap doesn't need post process and render in FP16
aggregate . renderSettings . enablePostprocess = camera . cameraType = = CameraType . Reflection ? false : frameSettings . renderSettings . enablePostprocess ;
aggregate . renderSettings . enableStereo = frameSettings . renderSettings . enableStereo & & UnityEngine . XR . XRSettings . isDeviceActive & & ( camera . stereoTargetEye = = StereoTargetEyeMask . Both ) ;
aggregate . renderSettings . enableStereo = camera . cameraType = = CameraType . Reflection ? false : frameSettings . renderSettings . enableStereo & & UnityEngine . XR . XRSettings . isDeviceActive & & ( camera . stereoTargetEye = = StereoTargetEyeMask . Both ) ;
aggregate . renderSettings . enableForwardRenderingOnly = aggregate . renderSettings . enableForwardRenderingOnly | | aggregate . renderSettings . enableStereo ;
aggregate . renderSettings . enableForwardRenderingOnly = aggregate . renderSettings . enableForwardRenderingOnly | | aggregate . renderSettings . enableStereo ;
aggregate . renderSettings . enableAsyncCompute = frameSettings . renderSettings . enableAsyncCompute ;
aggregate . renderSettings . enableAsyncCompute = frameSettings . renderSettings . enableAsyncCompute ;
aggregate . renderSettings . enableOpaqueObjects = frameSettings . renderSettings . enableOpaqueObjects ;
aggregate . renderSettings . enableTransparentObjects = frameSettings . renderSettings . enableTransparentObjects ;
aggregate . renderSettings . enableOpaqueObjects = frameSettings . renderSettings . enableOpaqueObjects ;
aggregate . renderSettings . enableTransparentObjects = frameSettings . renderSettings . enableTransparentObjects ;
aggregate . renderSettings . enableMSAA = frameSettings . renderSettings . enableMSAA & & globalFrameSettings . renderSettings . supportMSAA ;
aggregate . renderSettings . enableMSAA = frameSettings . renderSettings . enableMSAA & & globalFrameSettings . renderSettings . supportMSAA ;
aggregate . renderSettings . enableMaterialDisplayDebug = false ;
aggregate . renderSettings . enableShadowMask = globalFrameSettings . lightingSettings . supportShadowMask ;
aggregate . renderSettings . enableShadowMask = globalFrameSettings . lightingSettings . supportShadowMask ;
}
static public void RegisterDebug ( String menuName , FrameSettings frameSettings )
{
// Register the camera into the debug menu
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Shadow" , ( ) = > frameSettings . lightingSettings . enableShadow , ( value ) = > frameSettings . lightingSettings . enableShadow = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable SSR" , ( ) = > frameSettings . lightingSettings . enableSSR , ( value ) = > frameSettings . lightingSettings . enableSSR = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable SSAO" , ( ) = > frameSettings . lightingSettings . enableSSR , ( value ) = > frameSettings . lightingSettings . enableSSR = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable SSS and Transmission" , ( ) = > frameSettings . lightingSettings . enableSSSAndTransmission , ( value ) = > frameSettings . lightingSettings . enableSSSAndTransmission = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Forward Only" , ( ) = > frameSettings . renderSettings . enableForwardRenderingOnly , ( value ) = > frameSettings . renderSettings . enableForwardRenderingOnly = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Deferred Depth Prepass" , ( ) = > frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering , ( value ) = > frameSettings . renderSettings . enableDepthPrepassWithDeferredRendering = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Deferred Depth Prepass ATest Only" , ( ) = > frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass , ( value ) = > frameSettings . renderSettings . enableAlphaTestOnlyInDeferredPrepass = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Transparent Prepass" , ( ) = > frameSettings . renderSettings . enableTransparentPrePass , ( value ) = > frameSettings . renderSettings . enableTransparentPrePass = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Motion Vectors" , ( ) = > frameSettings . renderSettings . enableMotionVectors , ( value ) = > frameSettings . renderSettings . enableMotionVectors = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable DBuffer" , ( ) = > frameSettings . renderSettings . enableDBuffer , ( value ) = > frameSettings . renderSettings . enableDBuffer = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Atmospheric Scattering" , ( ) = > frameSettings . renderSettings . enableAtmosphericScattering , ( value ) = > frameSettings . renderSettings . enableAtmosphericScattering = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Rough Refraction" , ( ) = > frameSettings . renderSettings . enableRoughRefraction , ( value ) = > frameSettings . renderSettings . enableRoughRefraction = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Transparent Postpass" , ( ) = > frameSettings . renderSettings . enableTransparentPostPass , ( value ) = > frameSettings . renderSettings . enableTransparentPostPass = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Distortion" , ( ) = > frameSettings . renderSettings . enableDistortion , ( value ) = > frameSettings . renderSettings . enableDistortion = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Postprocess" , ( ) = > frameSettings . renderSettings . enablePostprocess , ( value ) = > frameSettings . renderSettings . enablePostprocess = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Stereo Rendering" , ( ) = > frameSettings . renderSettings . enableStereo , ( value ) = > frameSettings . renderSettings . enableStereo = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Async Compute" , ( ) = > frameSettings . renderSettings . enableAsyncCompute , ( value ) = > frameSettings . renderSettings . enableAsyncCompute = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Opaque Objects" , ( ) = > frameSettings . renderSettings . enableOpaqueObjects , ( value ) = > frameSettings . renderSettings . enableOpaqueObjects = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Transparent Objects" , ( ) = > frameSettings . renderSettings . enableTransparentObjects , ( value ) = > frameSettings . renderSettings . enableTransparentObjects = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable MSAA" , ( ) = > frameSettings . renderSettings . enableMSAA , ( value ) = > frameSettings . renderSettings . enableMSAA = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable ShadowMask" , ( ) = > frameSettings . renderSettings . enableShadowMask , ( value ) = > frameSettings . renderSettings . enableShadowMask = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Tile/Cluster" , ( ) = > frameSettings . lightLoopSettings . enableTileAndCluster , ( value ) = > frameSettings . lightLoopSettings . enableTileAndCluster = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Big Tile" , ( ) = > frameSettings . lightLoopSettings . enableBigTilePrepass , ( value ) = > frameSettings . lightLoopSettings . enableBigTilePrepass = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Compute Lighting" , ( ) = > frameSettings . lightLoopSettings . enableComputeLightEvaluation , ( value ) = > frameSettings . lightLoopSettings . enableComputeLightEvaluation = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Light Classification" , ( ) = > frameSettings . lightLoopSettings . enableComputeLightVariants , ( value ) = > frameSettings . lightLoopSettings . enableComputeLightVariants = ( bool ) value ) ;
DebugMenuManager . instance . AddDebugItem < bool > ( menuName , "Enable Material Classification" , ( ) = > frameSettings . lightLoopSettings . enableComputeMaterialVariants , ( value ) = > frameSettings . lightLoopSettings . enableComputeMaterialVariants = ( bool ) value ) ;
}
}
}