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
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,
|
|
};
|
|
}
|
|
}
|
|
}
|