You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

235 lines
12 KiB

using System;
namespace UnityEngine.Rendering.HighDefinition
{
static class FrameSettingsDefaults
{
private static uint[] s_CameraDefaultbitDatas = new uint[]
{
(uint)FrameSettingsField.ShadowMaps,
(uint)FrameSettingsField.ContactShadows,
(uint)FrameSettingsField.Shadowmask,
(uint)FrameSettingsField.ScreenSpaceShadows,
(uint)FrameSettingsField.SSR,
(uint)FrameSettingsField.TransparentSSR,
(uint)FrameSettingsField.SSAO,
(uint)FrameSettingsField.SSGI,
(uint)FrameSettingsField.SubsurfaceScattering,
(uint)FrameSettingsField
.Transmission, // Caution: this is only for debug, it doesn't save the cost of Transmission execution
(uint)FrameSettingsField.AtmosphericScattering,
(uint)FrameSettingsField.Volumetrics,
(uint)FrameSettingsField.ReprojectionForVolumetrics,
(uint)FrameSettingsField.LightLayers,
(uint)FrameSettingsField.ExposureControl,
(uint)FrameSettingsField.LitShaderMode, //deffered ; enum with only two value saved as a bool
(uint)FrameSettingsField.TransparentPrepass,
(uint)FrameSettingsField.TransparentPostpass,
(uint)FrameSettingsField.CustomPass,
(uint)FrameSettingsField.VirtualTexturing,
(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
(uint)FrameSettingsField.ObjectMotionVectors,
(uint)FrameSettingsField.RenderingLayerMaskBuffer,
(uint)FrameSettingsField.Decals,
(uint)FrameSettingsField.DecalLayers,
(uint)FrameSettingsField
.Refraction, // Depends on DepthPyramid - If not enable, just do a copy of the scene color (?) - how to disable refraction ?
(uint)FrameSettingsField.Distortion,
(uint)FrameSettingsField.RoughDistortion,
(uint)FrameSettingsField.Postprocess,
(uint)FrameSettingsField.CustomPostProcess,
(uint)FrameSettingsField.StopNaN,
(uint)FrameSettingsField.DepthOfField,
(uint)FrameSettingsField.MotionBlur,
(uint)FrameSettingsField.PaniniProjection,
(uint)FrameSettingsField.Bloom,
(uint)FrameSettingsField.LensFlareDataDriven,
(uint)FrameSettingsField.LensDistortion,
(uint)FrameSettingsField.LensFlareScreenSpace,
(uint)FrameSettingsField.ChromaticAberration,
(uint)FrameSettingsField.Vignette,
(uint)FrameSettingsField.ColorGrading,
(uint)FrameSettingsField.Tonemapping,
(uint)FrameSettingsField.FilmGrain,
(uint)FrameSettingsField.Dithering,
(uint)FrameSettingsField.Antialiasing,
(uint)FrameSettingsField.AfterPostprocess,
(uint)FrameSettingsField.LowResTransparent,
(uint)FrameSettingsField.ZTestAfterPostProcessTAA,
(uint)FrameSettingsField.OpaqueObjects,
(uint)FrameSettingsField.TransparentObjects,
(uint)FrameSettingsField.AsyncCompute,
(uint)FrameSettingsField.LightListAsync,
(uint)FrameSettingsField.SSRAsync,
(uint)FrameSettingsField.SSRAsync,
(uint)FrameSettingsField.SSAOAsync,
(uint)FrameSettingsField.ContactShadowsAsync,
(uint)FrameSettingsField.VolumeVoxelizationsAsync,
(uint)FrameSettingsField.HighQualityLineRendering,
(uint)FrameSettingsField.HighQualityLinesAsync,
(uint)FrameSettingsField.ComputeLightVariants,
(uint)FrameSettingsField.ComputeMaterialVariants,
(uint)FrameSettingsField.FPTLForForwardOpaque,
(uint)FrameSettingsField.BigTilePrepass,
(uint)FrameSettingsField.TransparentsWriteMotionVector,
(uint)FrameSettingsField.ReflectionProbe,
(uint)FrameSettingsField.PlanarProbe,
(uint)FrameSettingsField.SkyReflection,
(uint)FrameSettingsField.DirectSpecularLighting,
(uint)FrameSettingsField.RayTracing,
(uint)FrameSettingsField.RaytracingVFX,
(uint)FrameSettingsField.AdaptiveProbeVolume,
(uint)FrameSettingsField.VolumetricClouds,
(uint)FrameSettingsField.Water,
(uint)FrameSettingsField.WaterDeformation,
(uint)FrameSettingsField.WaterExclusion,
(uint)FrameSettingsField.ComputeThickness
// (uint)FullResolutionCloudsForSky
};
private static uint[] s_BakedOrCustomReflectionbitDatas = new uint[]
{
(uint)FrameSettingsField.ShadowMaps,
//(uint)FrameSettingsField.ContactShadow,
//(uint)FrameSettingsField.ShadowMask,
//(uint)FrameSettingsField.SSR,
//(uint)FrameSettingsField.SSAO,
//(uint)FrameSettingsField.SSGI,
(uint)FrameSettingsField.SubsurfaceScattering,
(uint)FrameSettingsField
.Transmission, // Caution: this is only for debug, it doesn't save the cost of Transmission execution
//(uint)FrameSettingsField.AtmosphericScaterring,
(uint)FrameSettingsField.Volumetrics,
(uint)FrameSettingsField.ReprojectionForVolumetrics,
(uint)FrameSettingsField.LightLayers,
//(uint)FrameSettingsField.ExposureControl,
(uint)FrameSettingsField.LitShaderMode, //deffered ; enum with only two value saved as a bool
(uint)FrameSettingsField.TransparentPrepass,
(uint)FrameSettingsField.TransparentPostpass,
(uint)FrameSettingsField.CustomPass,
(uint)FrameSettingsField.VirtualTexturing,
(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
(uint)FrameSettingsField.ObjectMotionVectors,
(uint)FrameSettingsField.Decals,
(uint)FrameSettingsField.DecalLayers,
//(uint)FrameSettingsField.Refraction, // Depends on DepthPyramid - If not enable, just do a copy of the scene color (?) - how to disable refraction ?
//(uint)FrameSettingsField.Distortion,
//(uint)FrameSettingsField.RoughDistortion,
//(uint)FrameSettingsField.Postprocess,
//(uint)FrameSettingsField.CustomPostProcess,
//(uint)FrameSettingsField.AfterPostprocess,
(uint)FrameSettingsField.OpaqueObjects,
(uint)FrameSettingsField.TransparentObjects,
(uint)FrameSettingsField.AsyncCompute,
(uint)FrameSettingsField.LightListAsync,
(uint)FrameSettingsField.SSRAsync,
(uint)FrameSettingsField.SSRAsync,
(uint)FrameSettingsField.SSAOAsync,
(uint)FrameSettingsField.ContactShadowsAsync,
(uint)FrameSettingsField.VolumeVoxelizationsAsync,
(uint)FrameSettingsField.HighQualityLinesAsync,
(uint)FrameSettingsField.ComputeLightVariants,
(uint)FrameSettingsField.ComputeMaterialVariants,
(uint)FrameSettingsField.FPTLForForwardOpaque,
(uint)FrameSettingsField.BigTilePrepass,
(uint)FrameSettingsField.ReflectionProbe,
(uint)FrameSettingsField.RayTracing,
(uint)FrameSettingsField.RaytracingVFX,
// (uint)FrameSettingsField.EnableSkyReflection,
(uint)FrameSettingsField.AdaptiveProbeVolume,
(uint)FrameSettingsField.DirectSpecularLighting,
// (uint)FrameSettingsField.VolumetricClouds,
// (uint)FrameSettingsField.Water,
// (uint)FrameSettingsField.WaterExclusion,
// (uint)FullResolutionCloudsForSky
};
private static uint[] s_RealtimeReflectionbitDatas = new uint[]
{
(uint)FrameSettingsField.ShadowMaps,
(uint)FrameSettingsField.ContactShadows,
(uint)FrameSettingsField.Shadowmask,
//(uint)FrameSettingsField.SSR,
(uint)FrameSettingsField.SSAO,
//(uint)FrameSettingsField.SSGI,
(uint)FrameSettingsField.SubsurfaceScattering,
(uint)FrameSettingsField
.Transmission, // Caution: this is only for debug, it doesn't save the cost of Transmission execution
(uint)FrameSettingsField.AtmosphericScattering,
(uint)FrameSettingsField.Volumetrics,
(uint)FrameSettingsField.ReprojectionForVolumetrics,
(uint)FrameSettingsField.LightLayers,
//(uint)FrameSettingsField.ExposureControl,
(uint)FrameSettingsField.LitShaderMode, //deffered ; enum with only two value saved as a bool
(uint)FrameSettingsField.TransparentPrepass,
(uint)FrameSettingsField.TransparentPostpass,
(uint)FrameSettingsField.CustomPass,
(uint)FrameSettingsField.VirtualTexturing,
//(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
//(uint)FrameSettingsField.ObjectMotionVectors,
(uint)FrameSettingsField.Decals,
(uint)FrameSettingsField.DecalLayers,
(uint)FrameSettingsField
.Refraction, // Depends on DepthPyramid - If not enable, just do a copy of the scene color (?) - how to disable rough refraction ?
(uint)FrameSettingsField.Distortion,
(uint)FrameSettingsField.RoughDistortion,
//(uint)FrameSettingsField.Postprocess,
//(uint)FrameSettingsField.CustomPostProcess,
//(uint)FrameSettingsField.AfterPostprocess,
(uint)FrameSettingsField.OpaqueObjects,
(uint)FrameSettingsField.TransparentObjects,
(uint)FrameSettingsField.AsyncCompute,
(uint)FrameSettingsField.LightListAsync,
//(uint)FrameSettingsField.SSRAsync,
(uint)FrameSettingsField.SSAOAsync,
(uint)FrameSettingsField.ContactShadowsAsync,
(uint)FrameSettingsField.VolumeVoxelizationsAsync,
(uint)FrameSettingsField.HighQualityLineRendering,
(uint)FrameSettingsField.HighQualityLinesAsync,
(uint)FrameSettingsField.ComputeLightVariants,
(uint)FrameSettingsField.ComputeMaterialVariants,
(uint)FrameSettingsField.FPTLForForwardOpaque,
(uint)FrameSettingsField.BigTilePrepass,
(uint)FrameSettingsField.ReplaceDiffuseForIndirect,
// (uint)FrameSettingsField.EnableSkyReflection,
// (uint)FrameSettingsField.DirectSpecularLighting,
(uint)FrameSettingsField.VolumetricClouds,
(uint)FrameSettingsField.Water,
(uint)FrameSettingsField.WaterDeformation,
(uint)FrameSettingsField.WaterExclusion,
(uint)FrameSettingsField.AdaptiveProbeVolume,
// (uint)FullResolutionCloudsForSky
};
static uint[] GetFrameSettingsRenderTypeBitDatas(FrameSettingsRenderType defaultFrameSettingsRenderType)
{
switch (defaultFrameSettingsRenderType)
{
case FrameSettingsRenderType.Camera:
return s_CameraDefaultbitDatas;
case FrameSettingsRenderType.CustomOrBakedReflection:
return s_BakedOrCustomReflectionbitDatas;
case FrameSettingsRenderType.RealtimeReflection:
return s_RealtimeReflectionbitDatas;
default:
throw new ArgumentException($"Unhandled {nameof(FrameSettingsRenderType)} defaults");
}
}
public static FrameSettings Get(FrameSettingsRenderType defaultFrameSettingsRenderType)
{
return new FrameSettings()
{
bitDatas = new BitArray128(GetFrameSettingsRenderTypeBitDatas(defaultFrameSettingsRenderType)),
lodBias = 1,
sssQualityMode = SssQualityMode.FromQualitySettings,
sssQualityLevel = 0,
sssCustomSampleBudget = (int)DefaultSssSampleBudgetForQualityLevel.Low,
sssCustomDownsampleSteps = (int)DefaultSssDownsampleSteps.Low,
msaaMode = MSAAMode.None,
};
}
}
}