diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2008_Light_Volumetrics.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2008_Light_Volumetrics.unity index f0d812f183e..e1086832f61 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2008_Light_Volumetrics.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2008_Light_Volumetrics.unity @@ -24,7 +24,7 @@ RenderSettings: m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 - m_AmbientMode: 4 + m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 0} m_HaloStrength: 0.5 @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -98,7 +98,7 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 0} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +118,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -205,16 +207,51 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Shadow Dimmer (2) + propertyPath: m_Text + value: 0.25 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Color.rgba + value: 4293394358 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -230,6 +267,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -245,16 +287,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 7 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -270,46 +302,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_Name + value: Shadow Dimmer (2) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Text - value: 0.25 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Color.rgba - value: 4293394358 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: pixelSize - value: 11 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &145854147 stripped @@ -362,22 +364,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -385,16 +381,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -402,6 +407,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -409,10 +417,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -429,9 +436,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -447,7 +462,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &222860051 Light: m_ObjectHideFlags: 0 @@ -507,6 +532,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &267643306 @@ -552,10 +578,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -580,6 +608,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &267643309 MeshFilter: m_ObjectHideFlags: 0 @@ -677,16 +706,51 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name + propertyPath: m_Text value: Dimmer objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Color.rgba + value: 4291119150 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.5132002 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.5132002 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.5132002 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -702,6 +766,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -717,16 +786,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -742,46 +801,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.z - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_CharacterSize - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text + propertyPath: m_Name value: Dimmer objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Color.rgba - value: 4291119150 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 14 + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &527731465 stripped @@ -834,22 +863,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -857,16 +880,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -874,6 +906,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -881,10 +916,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -901,9 +935,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -919,7 +961,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &578410742 Light: m_ObjectHideFlags: 0 @@ -979,6 +1031,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &617325600 @@ -1025,22 +1078,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 0 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1048,16 +1095,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -1065,6 +1121,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -1072,10 +1131,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -1092,9 +1150,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -1110,7 +1176,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &617325603 Light: m_ObjectHideFlags: 0 @@ -1170,6 +1246,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1001 &621644619 @@ -1179,106 +1256,106 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: ENABLE Off + propertyPath: m_Text + value: Off objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.x - value: -2.5 + propertyPath: pixelSize + value: 16 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.y - value: 2.5 - objectReference: {fileID: 0} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 12 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_LocalScale.x + value: 0.57735026 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_LocalScale.y + value: 0.57735026 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalScale.z + value: 0.57735026 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalPosition.x + value: -2.5 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_RootOrder - value: 12 + propertyPath: m_LocalPosition.y + value: 2.5 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.x - value: 0.57735026 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.y - value: 0.57735026 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.57735026 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text - value: Off + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 16 + propertyPath: m_Name + value: ENABLE Off objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &621644620 stripped @@ -1331,22 +1408,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1354,16 +1425,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -1371,6 +1451,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -1378,10 +1461,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -1398,9 +1480,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -1416,7 +1506,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &649338666 Light: m_ObjectHideFlags: 0 @@ -1476,6 +1576,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &770407329 @@ -1522,22 +1623,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1545,16 +1640,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -1562,6 +1666,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -1569,10 +1676,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -1589,9 +1695,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -1607,7 +1721,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &770407332 Light: m_ObjectHideFlags: 0 @@ -1667,6 +1791,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1001 &776688695 @@ -1676,111 +1801,111 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Shadow Dimmer (1) + propertyPath: m_Text + value: 0 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive - value: 1 + propertyPath: m_Color.rgba + value: 4293394358 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.x + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.y - value: -2 + propertyPath: pixelSize + value: 11 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_RootOrder + value: 6 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_LocalScale.x + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_LocalScale.y + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalScale.z + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.w + propertyPath: m_LocalPosition.x value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_RootOrder - value: 6 + propertyPath: m_LocalPosition.y + value: -2 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text + propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Color.rgba - value: 4293394358 + propertyPath: m_Name + value: Shadow Dimmer (1) objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 11 + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &776688696 stripped @@ -1832,10 +1957,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1860,6 +1987,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &842125611 MeshFilter: m_ObjectHideFlags: 0 @@ -1926,22 +2054,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1949,16 +2071,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -1966,6 +2097,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -1973,10 +2107,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -1993,9 +2126,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2011,7 +2152,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &968376050 Light: m_ObjectHideFlags: 0 @@ -2071,6 +2222,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1001 &1029596511 @@ -2084,6 +2236,10 @@ PrefabInstance: propertyPath: m_Name value: HDRP_Test_Camera objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -2096,6 +2252,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -10 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -2108,14 +2268,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -2138,6 +2290,11 @@ PrefabInstance: propertyPath: m_RenderingPathCustomFrameSettings.bitDatas.data1 value: 70005818916701 objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: xrThresholdMultiplier + value: 10 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} --- !u!20 &1029596512 stripped @@ -2153,111 +2310,111 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Name - value: Shadow Dimmer (4) - objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Text value: 1 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.x - value: 8.5 + propertyPath: m_Color.rgba + value: 4293394358 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.y - value: -2 + propertyPath: m_CharacterSize + value: 1 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: pixelSize + value: 11 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_RootOrder + value: 9 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_LocalScale.x + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalScale.y + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalScale.z + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_RootOrder - value: 9 + propertyPath: m_LocalPosition.x + value: 8.5 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_LocalPosition.y + value: -2 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y + propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize - value: 1 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text - value: 1 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Color.rgba - value: 4293394358 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 11 + propertyPath: m_Name + value: Shadow Dimmer (4) objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &1052885273 stripped @@ -2273,16 +2430,51 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name + propertyPath: m_Text value: Shadow Dimmer objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Color.rgba + value: 4285568292 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.5132002 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.5132002 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.5132002 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -2298,6 +2490,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -2313,16 +2510,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 5 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -2338,46 +2525,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.z - value: 0.5132002 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_CharacterSize - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text + propertyPath: m_Name value: Shadow Dimmer objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Color.rgba - value: 4285568292 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 14 + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &1353979200 stripped @@ -2430,22 +2587,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 0.25 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -2453,16 +2604,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -2470,6 +2630,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2477,10 +2640,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -2497,9 +2659,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2515,7 +2685,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1483293027 Light: m_ObjectHideFlags: 0 @@ -2575,6 +2755,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1483738060 @@ -2668,10 +2849,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2696,6 +2879,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1540994040 MeshFilter: m_ObjectHideFlags: 0 @@ -2762,22 +2946,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 0.75 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -2785,16 +2963,25 @@ MonoBehaviour: m_ShapeHeight: 0.50000024 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 1 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -2802,6 +2989,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2809,10 +2999,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -2829,9 +3018,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2847,7 +3044,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 4 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1593979923 Light: m_ObjectHideFlags: 0 @@ -2907,6 +3114,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 10} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1001 &1649511066 @@ -2916,106 +3124,106 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: ENABLE + propertyPath: m_Text + value: Enable objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.x - value: -5 + propertyPath: pixelSize + value: 20 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.y - value: 3.7 + propertyPath: m_RootOrder + value: 10 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalPosition.z - value: 0 + propertyPath: m_LocalScale.x + value: 0.7056503 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_LocalScale.y + value: 0.7056503 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.y - value: -0 + propertyPath: m_LocalScale.z + value: 0.7056503 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.z - value: -0 + propertyPath: m_LocalPosition.x + value: -5 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalPosition.y + value: 3.7 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_RootOrder - value: 10 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 + propertyPath: m_LocalRotation.x + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 + propertyPath: m_LocalRotation.y + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.x - value: 0.7056503 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.y - value: 0.7056503 + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.7056503 + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize - value: 1 + propertyPath: m_LocalEulerAnglesHint.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text - value: Enable + propertyPath: m_Name + value: ENABLE objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: pixelSize - value: 20 + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &1649511067 stripped @@ -3031,16 +3239,51 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Shadow Dimmer (3) + propertyPath: m_Text + value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Color.rgba + value: 4293394358 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -3056,6 +3299,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -3071,16 +3319,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 8 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -3096,26 +3334,31 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_Name + value: Shadow Dimmer (3) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} +--- !u!4 &1721373647 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + m_PrefabInstance: {fileID: 1721373646} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1808101144 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 94104563} + m_Modifications: - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Text @@ -3124,7 +3367,12 @@ PrefabInstance: - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Color.rgba - value: 4293394358 + value: 4294617496 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize + value: 1 objectReference: {fileID: 0} - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} @@ -3136,30 +3384,25 @@ PrefabInstance: propertyPath: targetCamera value: objectReference: {fileID: 1029596512} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} ---- !u!4 &1721373647 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - m_PrefabInstance: {fileID: 1721373646} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &1808101144 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 94104563} - m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Dimmer (3) + propertyPath: m_RootOrder + value: 3 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive - value: 1 + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} @@ -3176,6 +3419,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -3191,16 +3439,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -3216,46 +3454,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_Name + value: Dimmer (3) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Text - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Color.rgba - value: 4294617496 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: pixelSize - value: 11 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &1808101145 stripped @@ -3295,8 +3503,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Profile: {fileID: 0} m_StaticLightingSkyUniqueID: 0 - m_SkySettings: {fileID: 0} - m_SkySettingsFromProfile: {fileID: 0} + m_StaticLightingCloudsUniqueID: 0 --- !u!4 &1820277956 Transform: m_ObjectHideFlags: 1 @@ -3318,16 +3525,51 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Dimmer (2) + propertyPath: m_Text + value: 0.25 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_Color.rgba + value: 4294617496 + objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -3343,6 +3585,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -3358,16 +3605,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -3383,36 +3620,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_Name + value: Dimmer (2) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} +--- !u!4 &1877514488 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + m_PrefabInstance: {fileID: 1877514487} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1879550073 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 94104563} + m_Modifications: - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Text - value: 0.25 + value: 0 objectReference: {fileID: 0} - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Color.rgba value: 4294617496 objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: pixelSize @@ -3423,30 +3670,25 @@ PrefabInstance: propertyPath: targetCamera value: objectReference: {fileID: 1029596512} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} ---- !u!4 &1877514488 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - m_PrefabInstance: {fileID: 1877514487} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &1879550073 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 94104563} - m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Dimmer (1) + propertyPath: m_RootOrder + value: 1 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive - value: 1 + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} @@ -3465,28 +3707,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.x - value: -0 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 1 + propertyPath: m_LocalRotation.z + value: -0 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} @@ -3503,36 +3740,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 + propertyPath: m_Name + value: Dimmer (1) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} +--- !u!4 &1879550074 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + m_PrefabInstance: {fileID: 1879550073} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1963355340 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 94104563} + m_Modifications: - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Text - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_Color.rgba value: 4294617496 objectReference: {fileID: 0} + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_CharacterSize + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: pixelSize @@ -3543,30 +3790,25 @@ PrefabInstance: propertyPath: targetCamera value: objectReference: {fileID: 1029596512} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} ---- !u!4 &1879550074 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - m_PrefabInstance: {fileID: 1879550073} - m_PrefabAsset: {fileID: 0} ---- !u!1001 &1963355340 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 94104563} - m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: Dimmer (4) + propertyPath: m_RootOrder + value: 4 objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive - value: 1 + propertyPath: m_LocalScale.x + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.41697517 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.41697517 objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} @@ -3583,6 +3825,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -3598,16 +3845,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -3623,46 +3860,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.z - value: 0.41697517 - objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize - value: 1 + propertyPath: m_Name + value: Dimmer (4) objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Text + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Color.rgba - value: 4294617496 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: pixelSize - value: 11 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &1963355341 stripped @@ -3715,22 +3922,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -3738,16 +3939,25 @@ MonoBehaviour: m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -3755,6 +3965,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -3762,10 +3975,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -3782,9 +3994,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -3800,7 +4020,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 0 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1967256742 Light: m_ObjectHideFlags: 0 @@ -3860,6 +4090,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &2030460321 @@ -3926,22 +4157,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 600 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -3949,16 +4174,25 @@ MonoBehaviour: m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -3966,6 +4200,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -3973,10 +4210,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -3993,9 +4229,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -4011,7 +4255,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &2036684822 Light: m_ObjectHideFlags: 0 @@ -4071,6 +4325,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &2036684823 @@ -4094,16 +4349,46 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 94104563} m_Modifications: - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_Name - value: ENABLE On + propertyPath: m_Text + value: On objectReference: {fileID: 0} - - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_IsActive + propertyPath: m_CharacterSize value: 1 objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: pixelSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: targetCamera + value: + objectReference: {fileID: 1029596512} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.x + value: 0.57735026 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.y + value: 0.57735026 + objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalScale.z + value: 0.57735026 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalPosition.x @@ -4119,6 +4404,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalRotation.x @@ -4134,16 +4424,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_RootOrder - value: 11 - objectReference: {fileID: 0} - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -4159,41 +4439,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.x - value: 0.57735026 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_LocalScale.y - value: 0.57735026 - objectReference: {fileID: 0} - - target: {fileID: 5489785850083597078, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_LocalScale.z - value: 0.57735026 + propertyPath: m_Name + value: ENABLE On objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, + - target: {fileID: 6004892619064504655, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} - propertyPath: m_CharacterSize + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 198941061589059314, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: m_Text - value: On - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: pixelSize - value: 16 - objectReference: {fileID: 0} - - target: {fileID: 2366749451762349873, guid: 7340be8cd4dd8d34d808e2c6090d869f, - type: 3} - propertyPath: targetCamera - value: - objectReference: {fileID: 1029596512} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 7340be8cd4dd8d34d808e2c6090d869f, type: 3} --- !u!4 &2054643671 stripped @@ -4245,10 +4500,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4273,6 +4530,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &2102521473 MeshFilter: m_ObjectHideFlags: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2204_ReflectionProbes_Lights.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2204_ReflectionProbes_Lights.unity index 93a51f453dd..161cda7d827 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2204_ReflectionProbes_Lights.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2204_ReflectionProbes_Lights.unity @@ -119,6 +119,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -205,101 +207,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -316,6 +223,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -328,30 +246,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -364,6 +276,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -381,8 +296,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -459,6 +374,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -545,6 +462,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 2 @@ -565,10 +577,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -612,8 +626,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -631,7 +645,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -693,10 +707,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -787,10 +803,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -881,10 +899,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -961,10 +981,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1048,101 +1070,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -1159,6 +1086,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 4, y: 4, z: 4} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -1171,30 +1109,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 4, y: 4, z: 4} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -1207,6 +1139,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -1224,8 +1159,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -1302,6 +1237,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -1388,6 +1325,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 2 @@ -1408,10 +1440,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1455,8 +1489,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -1474,7 +1508,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -1536,10 +1570,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1630,10 +1666,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1724,10 +1762,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1804,10 +1844,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1884,10 +1926,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1966,22 +2010,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1996,6 +2034,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -2012,7 +2053,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2043,8 +2086,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2061,6 +2109,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &437088011 Light: m_ObjectHideFlags: 0 @@ -2120,6 +2179,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &475434060 @@ -2152,22 +2212,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 3.1415927 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -2182,6 +2236,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -2198,7 +2255,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2229,8 +2288,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.15 @@ -2247,6 +2311,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &475434063 Light: m_ObjectHideFlags: 0 @@ -2306,6 +2381,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &475434064 @@ -2379,10 +2455,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2461,22 +2539,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -2491,6 +2563,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -2507,7 +2582,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2538,8 +2615,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2556,6 +2638,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &513507484 Light: m_ObjectHideFlags: 0 @@ -2615,6 +2708,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &516317389 @@ -2667,101 +2761,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -2778,6 +2777,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -2790,30 +2800,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -2826,6 +2830,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -2843,8 +2850,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -2921,6 +2928,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -3007,6 +3016,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 2 @@ -3027,10 +3131,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3074,8 +3180,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -3093,7 +3199,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -3141,10 +3247,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3235,10 +3343,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3317,22 +3427,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -3347,6 +3451,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -3363,7 +3470,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -3394,8 +3503,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -3412,6 +3526,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &611033640 Light: m_ObjectHideFlags: 0 @@ -3471,6 +3596,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 2.2520332} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &614162063 @@ -3516,10 +3642,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3598,22 +3726,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -3628,6 +3750,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -3644,7 +3769,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -3675,8 +3802,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -3693,6 +3825,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &617468368 Light: m_ObjectHideFlags: 0 @@ -3752,6 +3895,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &681941806 @@ -3819,10 +3963,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3893,22 +4039,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -3923,6 +4063,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -3939,7 +4082,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -3970,8 +4115,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -3988,6 +4138,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &703441994 Light: m_ObjectHideFlags: 0 @@ -4047,6 +4208,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &777764087 @@ -4097,101 +4259,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -4208,6 +4275,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 4, y: 4, z: 4} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -4220,30 +4298,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 4, y: 4, z: 4} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -4256,6 +4328,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -4273,8 +4348,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -4351,6 +4426,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -4437,6 +4514,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 2 @@ -4457,10 +4629,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4504,8 +4678,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -4523,7 +4697,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -4599,10 +4773,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4693,10 +4869,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4775,22 +4953,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -4805,6 +4977,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -4821,7 +4996,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -4852,8 +5029,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -4870,6 +5052,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &973768867 Light: m_ObjectHideFlags: 0 @@ -4929,6 +5122,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.5945835} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &980292724 @@ -4974,10 +5168,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5054,10 +5250,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5173,101 +5371,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -5284,6 +5387,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -5296,30 +5410,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -5332,6 +5440,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -5349,8 +5460,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -5427,6 +5538,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -5513,6 +5626,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 2 @@ -5533,10 +5741,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5580,8 +5790,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -5599,7 +5809,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -5654,101 +5864,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -5765,6 +5880,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 4, y: 4, z: 4} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -5777,30 +5903,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 4, y: 4, z: 4} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -5813,6 +5933,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -5830,8 +5953,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -5908,6 +6031,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -5994,6 +6119,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 2 @@ -6014,10 +6234,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6061,8 +6283,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -6080,7 +6302,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -6142,10 +6364,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6209,8 +6433,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -6228,7 +6452,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -6263,101 +6487,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -6374,18 +6503,6 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} m_Shape: 1 m_BoxSize: {x: 10, y: 10, z: 10} m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} @@ -6397,19 +6514,36 @@ MonoBehaviour: m_SphereRadius: 2 m_SphereBlendDistance: 0 m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -6422,6 +6556,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -6439,8 +6576,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -6517,6 +6654,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -6603,6 +6742,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 2 @@ -6623,10 +6857,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6711,101 +6947,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -6822,6 +6963,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -6834,30 +6986,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 1 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -6870,6 +7016,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -6887,8 +7036,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -6965,6 +7114,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -7051,6 +7202,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 1 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 2 @@ -7071,10 +7317,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -7118,8 +7366,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -7137,7 +7385,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -7199,10 +7447,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -7279,10 +7529,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -7361,22 +7613,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -7391,6 +7637,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -7407,7 +7656,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -7438,8 +7689,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -7456,6 +7712,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1162519692 Light: m_ObjectHideFlags: 0 @@ -7515,6 +7782,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1180222689 @@ -7560,10 +7828,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -7642,22 +7912,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -7672,6 +7936,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -7688,7 +7955,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -7719,8 +7988,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -7737,6 +8011,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &1183693018 Light: m_ObjectHideFlags: 0 @@ -7796,6 +8081,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.5945835} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1227157678 @@ -7865,10 +8151,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -7951,10 +8239,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8055,10 +8345,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8141,10 +8433,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8245,10 +8539,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8331,10 +8627,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8413,22 +8711,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -8443,6 +8735,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -8459,7 +8754,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -8490,8 +8787,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -8508,6 +8810,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1342837071 Light: m_ObjectHideFlags: 0 @@ -8567,6 +8880,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 2.2520332} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1349151176 @@ -8626,10 +8940,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8706,10 +9022,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8810,10 +9128,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8882,10 +9202,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -8976,10 +9298,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -9056,10 +9380,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -9150,10 +9476,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -9238,101 +9566,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -9349,6 +9582,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 4, y: 4, z: 4} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -9361,30 +9605,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 4, y: 4, z: 4} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -9397,6 +9635,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -9414,8 +9655,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -9492,6 +9733,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -9578,6 +9821,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 2 @@ -9598,10 +9936,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -9645,8 +9985,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -9664,7 +10004,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -9758,10 +10098,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -9840,22 +10182,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -9870,6 +10206,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -9886,7 +10225,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -9917,8 +10258,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -9935,6 +10281,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &1552828732 Light: m_ObjectHideFlags: 0 @@ -9994,6 +10351,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.5945835} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1588342438 @@ -10053,10 +10411,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -10102,48 +10462,48 @@ PrefabInstance: value: Background objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalPosition.x - value: 0 + propertyPath: m_RootOrder + value: 2 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalPosition.y - value: 0 + propertyPath: m_LocalScale.x + value: 1240.0674 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalPosition.z - value: 5.6 + propertyPath: m_LocalScale.y + value: 744.0404 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalRotation.x - value: 0 + propertyPath: m_LocalScale.z + value: 49.60269 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalRotation.y + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalRotation.z + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalRotation.w - value: 1 + propertyPath: m_LocalPosition.z + value: 5.6 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_RootOrder - value: 2 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalScale.x - value: 1240.0674 + propertyPath: m_LocalRotation.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalScale.y - value: 744.0404 + propertyPath: m_LocalRotation.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalScale.z - value: 49.60269 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - target: {fileID: 23096287020260212, guid: e6be141ec19d3554489da286b19b90b2, type: 3} @@ -10200,10 +10560,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -10282,22 +10644,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -10312,6 +10668,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -10328,7 +10687,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -10359,8 +10720,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -10377,6 +10743,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &1640950926 Light: m_ObjectHideFlags: 0 @@ -10436,6 +10813,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.4778197} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1641932329 @@ -10503,10 +10881,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -10575,10 +10955,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -10636,124 +11018,29 @@ GameObject: Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1657149773} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 8.250001, y: -0.44000039, z: -0.364} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 614162064} - m_Father: {fileID: 834778} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1657149775 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1657149773} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1657149773} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 8.250001, y: -0.44000039, z: -0.364} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 614162064} + m_Father: {fileID: 834778} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1657149775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1657149773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} + m_Name: + m_EditorClassIdentifier: m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -10770,6 +11057,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 4, y: 4, z: 4} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -10782,30 +11080,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 4, y: 4, z: 4} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 2 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -10818,6 +11110,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -10835,8 +11130,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -10913,6 +11208,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -10999,6 +11296,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 2 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 2 @@ -11019,10 +11411,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -11066,8 +11460,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -11085,7 +11479,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -11181,10 +11575,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -11247,10 +11643,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -11390,22 +11788,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -11420,6 +11812,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -11436,7 +11831,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -11467,8 +11864,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -11485,6 +11887,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &1891725939 Light: m_ObjectHideFlags: 0 @@ -11544,6 +11957,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.5945835} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1892780866 @@ -11591,22 +12005,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -11621,6 +12029,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -11637,7 +12048,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -11668,8 +12081,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -11686,6 +12104,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1892780870 Light: m_ObjectHideFlags: 0 @@ -11745,6 +12174,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1894137918 @@ -11790,10 +12220,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -11872,22 +12304,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -11902,6 +12328,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -11918,7 +12347,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -11949,8 +12380,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -11967,6 +12403,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &1918702566 Light: m_ObjectHideFlags: 0 @@ -12026,6 +12473,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &1939633830 @@ -12073,22 +12521,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 1 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -12103,6 +12545,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -12119,7 +12564,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -12150,8 +12597,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -12168,6 +12620,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 1 --- !u!108 &1939633834 Light: m_ObjectHideFlags: 0 @@ -12227,6 +12690,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 1.4778197} m_UseBoundingSphereOverride: 1 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1001 &1965177827 @@ -12236,6 +12700,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x value: -1.28 @@ -12248,6 +12716,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -16.42 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -12260,14 +12732,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -12284,13 +12748,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: orthographic size - value: 7.27 + propertyPath: far clip plane + value: 200 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: far clip plane - value: 200 + propertyPath: orthographic size + value: 7.27 objectReference: {fileID: 0} - target: {fileID: 114270329781043846, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -12314,23 +12778,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.r - value: 0.41902542 + propertyPath: m_Version + value: 7 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.g - value: 0 + propertyPath: backgroundColorHDR.b + value: 1 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.b - value: 1 + propertyPath: backgroundColorHDR.g + value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_Version - value: 7 + propertyPath: backgroundColorHDR.r + value: 0.41902542 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -12401,10 +12865,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -12495,10 +12961,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -12577,22 +13045,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 50 m_EnableSpotReflector: 1 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 0 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -12607,6 +13069,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -12623,7 +13088,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -12654,8 +13121,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -12672,6 +13144,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &2002286229 Light: m_ObjectHideFlags: 0 @@ -12731,6 +13214,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!1 &2024496926 @@ -12800,10 +13284,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -12886,10 +13372,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -12966,10 +13454,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2210_ReflectionProbes_CaptureAtVolumeAnchor.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2210_ReflectionProbes_CaptureAtVolumeAnchor.unity index 355501fb103..2b70c41dd9e 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2210_ReflectionProbes_CaptureAtVolumeAnchor.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2210_ReflectionProbes_CaptureAtVolumeAnchor.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_IndirectSpecularColor: {r: 0.51939285, g: 0.9907894, b: 0.14868543, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -119,6 +119,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -198,10 +200,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -278,10 +282,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -315,85 +321,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 13974265} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &65811869 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3} - m_Name: - m_EditorClassIdentifier: - active: 1 - m_AdvancedMode: 0 - rotation: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 360 - skyIntensityMode: - m_OverrideState: 0 - m_Value: 0 - exposure: - m_OverrideState: 0 - m_Value: 1 - multiplier: - m_OverrideState: 0 - m_Value: 1 - min: 0 - upperHemisphereLuxValue: - m_OverrideState: 0 - m_Value: 1 - min: 0 - upperHemisphereLuxColor: - m_OverrideState: 0 - m_Value: {x: 0, y: 0, z: 0} - desiredLuxValue: - m_OverrideState: 0 - m_Value: 20000 - updateMode: - m_OverrideState: 0 - m_Value: 0 - updatePeriod: - m_OverrideState: 0 - m_Value: 0 - min: 0 - includeSunInBaking: - m_OverrideState: 0 - m_Value: 0 - sunSize: - m_OverrideState: 0 - m_Value: 0.04 - min: 0 - max: 1 - sunSizeConvergence: - m_OverrideState: 0 - m_Value: 5 - min: 1 - max: 10 - atmosphereThickness: - m_OverrideState: 0 - m_Value: 1 - min: 0 - max: 5 - skyTint: - m_OverrideState: 0 - m_Value: {r: 0, g: 1, b: 0.09278011, a: 1} - hdr: 0 - showAlpha: 1 - showEyeDropper: 1 - groundColor: - m_OverrideState: 0 - m_Value: {r: 0.88122773, g: 1, b: 0, a: 1} - hdr: 0 - showAlpha: 1 - showEyeDropper: 1 - enableSunDisk: - m_OverrideState: 0 - m_Value: 1 --- !u!1 &83285716 GameObject: m_ObjectHideFlags: 0 @@ -471,10 +398,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -613,10 +542,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -755,10 +686,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -835,9 +768,9 @@ MeshCollider: m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 3 + serializedVersion: 4 m_Convex: 0 - m_CookingOptions: 14 + m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &423522500 MeshRenderer: @@ -850,10 +783,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -930,10 +865,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1010,10 +947,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1090,10 +1029,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1170,10 +1111,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1312,10 +1255,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1392,10 +1337,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1481,101 +1428,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 0 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 1 - enableContactShadows: 1 - enableShadowMask: 1 - enableSSR: 0 - enableSSAO: 1 - enableSubsurfaceScattering: 1 - enableTransmission: 1 - enableAtmosphericScattering: 1 - enableVolumetrics: 1 - enableReprojectionForVolumetrics: 1 - enableLightLayers: 1 - enableExposureControl: 1 - diffuseGlobalDimmer: 1 - specularGlobalDimmer: 1 - shaderLitMode: 1 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 1 - enableMotionVectors: 1 - enableObjectMotionVectors: 1 - enableDecals: 1 - enableRoughRefraction: 1 - enableTransparentPostpass: 1 - enableDistortion: 1 - enablePostprocess: 1 - enableOpaqueObjects: 1 - enableTransparentObjects: 1 - enableRealtimePlanarReflection: 1 - enableMSAA: 0 - enableAsyncCompute: 1 - runLightListAsync: 1 - runSSRAsync: 1 - runSSAOAsync: 1 - runContactShadowsAsync: 1 - runVolumeVoxelizationAsync: 1 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 1 - enableComputeLightEvaluation: 1 - enableComputeLightVariants: 1 - enableComputeMaterialVariants: 1 - enableFptlForForwardOpaque: 1 - enableBigTilePrepass: 1 - isFptlEnabled: 1 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -1592,6 +1444,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -1604,30 +1467,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} + proxy: m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - proxy: m_CSVersion: 1 m_ObsoleteSphereInfiniteProjection: 0 m_ObsoleteBoxInfiniteProjection: 0 - m_Shape: 0 - m_BoxSize: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 proxySettings: useInfluenceVolumeAsProxyVolume: 1 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 1 renderingPathCustomFrameSettings: @@ -1640,6 +1497,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -1657,8 +1517,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -1735,6 +1595,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -1821,6 +1683,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 0 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 1 + enableContactShadows: 1 + enableShadowMask: 1 + enableSSR: 0 + enableSSAO: 1 + enableSubsurfaceScattering: 1 + enableTransmission: 1 + enableAtmosphericScattering: 1 + enableVolumetrics: 1 + enableReprojectionForVolumetrics: 1 + enableLightLayers: 1 + enableExposureControl: 1 + diffuseGlobalDimmer: 1 + specularGlobalDimmer: 1 + shaderLitMode: 1 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 1 + enableMotionVectors: 1 + enableObjectMotionVectors: 1 + enableDecals: 1 + enableRoughRefraction: 1 + enableTransparentPostpass: 1 + enableDistortion: 1 + enablePostprocess: 1 + enableOpaqueObjects: 1 + enableTransparentObjects: 1 + enableRealtimePlanarReflection: 1 + enableMSAA: 0 + enableAsyncCompute: 1 + runLightListAsync: 1 + runSSRAsync: 1 + runSSAOAsync: 1 + runContactShadowsAsync: 1 + runVolumeVoxelizationAsync: 1 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 1 + enableComputeLightEvaluation: 1 + enableComputeLightVariants: 1 + enableComputeMaterialVariants: 1 + enableFptlForForwardOpaque: 1 + enableBigTilePrepass: 1 + isFptlEnabled: 1 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 1 @@ -1841,10 +1798,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1888,8 +1847,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -1907,7 +1866,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -1942,22 +1901,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 9 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 3.1415927 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -1972,6 +1925,9 @@ MonoBehaviour: m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -1988,7 +1944,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -2019,8 +1977,13 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -2037,6 +2000,17 @@ MonoBehaviour: useVolumetric: 1 featuresFoldout: 1 showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &647739165 Light: m_ObjectHideFlags: 0 @@ -2096,6 +2070,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &647739166 @@ -2178,10 +2153,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2270,53 +2247,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -2329,6 +2259,11 @@ MonoBehaviour: dithering: 0 stopNaNs: 0 taaSharpenStrength: 0.6 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 physicalParameters: m_Iso: 200 m_ShutterSpeed: 0.005 @@ -2338,6 +2273,7 @@ MonoBehaviour: m_BarrelClipping: 0.25 m_Anamorphism: 0 flipYMode: 0 + xrRendering: 1 fullscreenPassthrough: 0 allowDynamicResolution: 0 customRenderingSettings: 0 @@ -2346,6 +2282,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967295 hasPersistentHistory: 0 + exposureTarget: {fileID: 0} m_RenderingPathCustomFrameSettings: bitDatas: data1: 70005810265949 @@ -2356,12 +2293,62 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!81 &731593890 AudioListener: m_ObjectHideFlags: 0 @@ -2492,6 +2479,61 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: + clearColorMode: 0 + backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.6 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + exposureTarget: {fileID: 0} + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 70005810265949 + data2: 4539628424389459968 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 m_Version: 7 m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: @@ -2539,51 +2581,6 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} - clearDepth: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - antialiasing: 0 - SMAAQuality: 2 - dithering: 0 - stopNaNs: 0 - taaSharpenStrength: 0.6 - physicalParameters: - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - flipYMode: 0 - fullscreenPassthrough: 0 - allowDynamicResolution: 0 - customRenderingSettings: 0 - invertFaceCulling: 0 - probeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - hasPersistentHistory: 0 - m_RenderingPathCustomFrameSettings: - bitDatas: - data1: 70005810265949 - data2: 4539628424389459968 - lodBias: 1 - lodBiasMode: 0 - lodBiasQualityLevel: 0 - maximumLODLevel: 0 - maximumLODLevelMode: 0 - maximumLODLevelQualityLevel: 0 - materialQuality: 0 - renderingPathCustomFrameSettingsOverrideMask: - mask: - data1: 0 - data2: 0 - defaultFrameSettings: 0 --- !u!81 &867339677 AudioListener: m_ObjectHideFlags: 0 @@ -2686,101 +2683,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 0 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 1 - enableContactShadows: 1 - enableShadowMask: 1 - enableSSR: 0 - enableSSAO: 1 - enableSubsurfaceScattering: 1 - enableTransmission: 1 - enableAtmosphericScattering: 1 - enableVolumetrics: 1 - enableReprojectionForVolumetrics: 1 - enableLightLayers: 1 - enableExposureControl: 1 - diffuseGlobalDimmer: 1 - specularGlobalDimmer: 1 - shaderLitMode: 1 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 1 - enableMotionVectors: 1 - enableObjectMotionVectors: 1 - enableDecals: 1 - enableRoughRefraction: 1 - enableTransparentPostpass: 1 - enableDistortion: 1 - enablePostprocess: 1 - enableOpaqueObjects: 1 - enableTransparentObjects: 1 - enableRealtimePlanarReflection: 1 - enableMSAA: 0 - enableAsyncCompute: 1 - runLightListAsync: 1 - runSSRAsync: 1 - runSSAOAsync: 1 - runContactShadowsAsync: 1 - runVolumeVoxelizationAsync: 1 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 1 - enableComputeLightEvaluation: 1 - enableComputeLightVariants: 1 - enableComputeMaterialVariants: 1 - enableFptlForForwardOpaque: 1 - enableBigTilePrepass: 1 - isFptlEnabled: 1 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 1 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 0 @@ -2797,6 +2699,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -2809,30 +2722,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 1 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: -0.24, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -2845,6 +2752,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -2862,8 +2772,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 1 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 1 fieldOfView: 90 projectionMatrix: e00: 1 @@ -2940,6 +2850,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -3026,12 +2938,107 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 0 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 1 + enableContactShadows: 1 + enableShadowMask: 1 + enableSSR: 0 + enableSSAO: 1 + enableSubsurfaceScattering: 1 + enableTransmission: 1 + enableAtmosphericScattering: 1 + enableVolumetrics: 1 + enableReprojectionForVolumetrics: 1 + enableLightLayers: 1 + enableExposureControl: 1 + diffuseGlobalDimmer: 1 + specularGlobalDimmer: 1 + shaderLitMode: 1 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 1 + enableMotionVectors: 1 + enableObjectMotionVectors: 1 + enableDecals: 1 + enableRoughRefraction: 1 + enableTransparentPostpass: 1 + enableDistortion: 1 + enablePostprocess: 1 + enableOpaqueObjects: 1 + enableTransparentObjects: 1 + enableRealtimePlanarReflection: 1 + enableMSAA: 0 + enableAsyncCompute: 1 + runLightListAsync: 1 + runSSRAsync: 1 + runSSAOAsync: 1 + runContactShadowsAsync: 1 + runVolumeVoxelizationAsync: 1 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 1 + enableComputeLightEvaluation: 1 + enableComputeLightVariants: 1 + enableComputeMaterialVariants: 1 + enableFptlForForwardOpaque: 1 + enableBigTilePrepass: 1 + isFptlEnabled: 1 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 1 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 m_ObsoleteCaptureNearPlane: 1 m_ObsoleteCaptureFarPlane: 1000 m_ObsoleteOverrideFieldOfView: 0 m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} --- !u!23 &990249392 MeshRenderer: m_ObjectHideFlags: 2 @@ -3043,10 +3050,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3156,10 +3165,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3285,8 +3296,8 @@ ReflectionProbe: m_Enabled: 1 serializedVersion: 2 m_Type: 0 - m_Mode: 1 - m_RefreshMode: 0 + m_Mode: 2 + m_RefreshMode: 2 m_TimeSlicingMode: 0 m_Resolution: 128 m_UpdateFrequency: 0 @@ -3304,7 +3315,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 8900000, guid: 2a4e9285ae01f6940a52a82fbb52b1e5, @@ -3341,101 +3352,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 0 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 1 - enableContactShadows: 1 - enableShadowMask: 1 - enableSSR: 0 - enableSSAO: 1 - enableSubsurfaceScattering: 1 - enableTransmission: 1 - enableAtmosphericScattering: 1 - enableVolumetrics: 1 - enableReprojectionForVolumetrics: 1 - enableLightLayers: 1 - enableExposureControl: 1 - diffuseGlobalDimmer: 1 - specularGlobalDimmer: 1 - shaderLitMode: 1 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 1 - enableMotionVectors: 1 - enableObjectMotionVectors: 1 - enableDecals: 1 - enableRoughRefraction: 1 - enableTransparentPostpass: 1 - enableDistortion: 1 - enablePostprocess: 1 - enableOpaqueObjects: 1 - enableTransparentObjects: 1 - enableRealtimePlanarReflection: 1 - enableMSAA: 0 - enableAsyncCompute: 1 - runLightListAsync: 1 - runSSRAsync: 1 - runSSAOAsync: 1 - runContactShadowsAsync: 1 - runVolumeVoxelizationAsync: 1 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 1 - enableComputeLightEvaluation: 1 - enableComputeLightVariants: 1 - enableComputeMaterialVariants: 1 - enableFptlForForwardOpaque: 1 - enableBigTilePrepass: 1 - isFptlEnabled: 1 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -3452,6 +3368,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -3464,30 +3391,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} + proxy: m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - proxy: m_CSVersion: 1 m_ObsoleteSphereInfiniteProjection: 0 m_ObsoleteBoxInfiniteProjection: 0 - m_Shape: 0 - m_BoxSize: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 proxySettings: useInfluenceVolumeAsProxyVolume: 1 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 1 renderingPathCustomFrameSettings: @@ -3500,6 +3421,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -3517,8 +3441,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 0.3 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 0.3 fieldOfView: 90 projectionMatrix: e00: 1 @@ -3595,6 +3519,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -3681,6 +3607,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 0 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 1 + enableContactShadows: 1 + enableShadowMask: 1 + enableSSR: 0 + enableSSAO: 1 + enableSubsurfaceScattering: 1 + enableTransmission: 1 + enableAtmosphericScattering: 1 + enableVolumetrics: 1 + enableReprojectionForVolumetrics: 1 + enableLightLayers: 1 + enableExposureControl: 1 + diffuseGlobalDimmer: 1 + specularGlobalDimmer: 1 + shaderLitMode: 1 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 1 + enableMotionVectors: 1 + enableObjectMotionVectors: 1 + enableDecals: 1 + enableRoughRefraction: 1 + enableTransparentPostpass: 1 + enableDistortion: 1 + enablePostprocess: 1 + enableOpaqueObjects: 1 + enableTransparentObjects: 1 + enableRealtimePlanarReflection: 1 + enableMSAA: 0 + enableAsyncCompute: 1 + runLightListAsync: 1 + runSSRAsync: 1 + runSSAOAsync: 1 + runContactShadowsAsync: 1 + runVolumeVoxelizationAsync: 1 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 1 + enableComputeLightEvaluation: 1 + enableComputeLightVariants: 1 + enableComputeMaterialVariants: 1 + enableFptlForForwardOpaque: 1 + enableBigTilePrepass: 1 + isFptlEnabled: 1 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 1 m_ObsoleteInfluenceSphereRadius: 1 @@ -3701,10 +3722,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3781,10 +3804,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3861,10 +3886,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -3941,10 +3968,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4010,9 +4039,6 @@ MonoBehaviour: m_EditorClassIdentifier: m_Profile: {fileID: 11400000, guid: 2575088e99c1f2043a485d4fd32c2344, type: 2} m_StaticLightingSkyUniqueID: 2 - m_SkySettings: {fileID: 65811869} - m_SkySettingsFromProfile: {fileID: 114580079643861856, guid: 2575088e99c1f2043a485d4fd32c2344, - type: 2} --- !u!114 &1208771066 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4087,10 +4113,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4167,10 +4195,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4249,6 +4279,61 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: + clearColorMode: 0 + backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.6 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + exposureTarget: {fileID: 0} + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 70005810265949 + data2: 4539628424389459968 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 m_Version: 7 m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: @@ -4296,51 +4381,6 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} - clearDepth: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - antialiasing: 0 - SMAAQuality: 2 - dithering: 0 - stopNaNs: 0 - taaSharpenStrength: 0.6 - physicalParameters: - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - flipYMode: 0 - fullscreenPassthrough: 0 - allowDynamicResolution: 0 - customRenderingSettings: 0 - invertFaceCulling: 0 - probeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - hasPersistentHistory: 0 - m_RenderingPathCustomFrameSettings: - bitDatas: - data1: 70005810265949 - data2: 4539628424389459968 - lodBias: 1 - lodBiasMode: 0 - lodBiasQualityLevel: 0 - maximumLODLevel: 0 - maximumLODLevelMode: 0 - maximumLODLevelQualityLevel: 0 - materialQuality: 0 - renderingPathCustomFrameSettingsOverrideMask: - mask: - data1: 0 - data2: 0 - defaultFrameSettings: 0 --- !u!81 &1252449844 AudioListener: m_ObjectHideFlags: 0 @@ -4435,10 +4475,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4515,9 +4557,9 @@ MeshCollider: m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 3 + serializedVersion: 4 m_Convex: 0 - m_CookingOptions: 14 + m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &1290185330 MeshRenderer: @@ -4530,10 +4572,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4610,10 +4654,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -4745,101 +4791,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 0 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 1 - enableContactShadows: 1 - enableShadowMask: 1 - enableSSR: 0 - enableSSAO: 1 - enableSubsurfaceScattering: 1 - enableTransmission: 1 - enableAtmosphericScattering: 1 - enableVolumetrics: 1 - enableReprojectionForVolumetrics: 1 - enableLightLayers: 1 - enableExposureControl: 1 - diffuseGlobalDimmer: 1 - specularGlobalDimmer: 1 - shaderLitMode: 1 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 1 - enableMotionVectors: 1 - enableObjectMotionVectors: 1 - enableDecals: 1 - enableRoughRefraction: 1 - enableTransparentPostpass: 1 - enableDistortion: 1 - enablePostprocess: 1 - enableOpaqueObjects: 1 - enableTransparentObjects: 1 - enableRealtimePlanarReflection: 1 - enableMSAA: 0 - enableAsyncCompute: 1 - runLightListAsync: 1 - runSSRAsync: 1 - runSSAOAsync: 1 - runContactShadowsAsync: 1 - runVolumeVoxelizationAsync: 1 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 1 - enableComputeLightEvaluation: 1 - enableComputeLightVariants: 1 - enableComputeMaterialVariants: 1 - enableFptlForForwardOpaque: 1 - enableBigTilePrepass: 1 - isFptlEnabled: 1 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 1 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 1 - farClipPlane: 1000 - fieldOfView: 60 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 2 @@ -4856,6 +4807,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -4868,30 +4830,24 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 1 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: -0.24, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 + resolution: 0 cameraSettings: customRenderingSettings: 0 renderingPathCustomFrameSettings: @@ -4904,6 +4860,9 @@ MonoBehaviour: maximumLODLevel: 0 maximumLODLevelMode: 0 maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 materialQuality: 0 renderingPathCustomFrameSettingsOverrideMask: mask: @@ -4921,8 +4880,8 @@ MonoBehaviour: frustum: mode: 0 aspect: 1 - farClipPlane: 1000 - nearClipPlane: 1 + farClipPlaneRaw: 1000 + nearClipPlaneRaw: 1 fieldOfView: 60 projectionMatrix: e00: 1 @@ -4999,6 +4958,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -5085,12 +5046,107 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 0 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 2, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 1 + enableContactShadows: 1 + enableShadowMask: 1 + enableSSR: 0 + enableSSAO: 1 + enableSubsurfaceScattering: 1 + enableTransmission: 1 + enableAtmosphericScattering: 1 + enableVolumetrics: 1 + enableReprojectionForVolumetrics: 1 + enableLightLayers: 1 + enableExposureControl: 1 + diffuseGlobalDimmer: 1 + specularGlobalDimmer: 1 + shaderLitMode: 1 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 1 + enableMotionVectors: 1 + enableObjectMotionVectors: 1 + enableDecals: 1 + enableRoughRefraction: 1 + enableTransparentPostpass: 1 + enableDistortion: 1 + enablePostprocess: 1 + enableOpaqueObjects: 1 + enableTransparentObjects: 1 + enableRealtimePlanarReflection: 1 + enableMSAA: 0 + enableAsyncCompute: 1 + runLightListAsync: 1 + runSSRAsync: 1 + runSSAOAsync: 1 + runContactShadowsAsync: 1 + runVolumeVoxelizationAsync: 1 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 1 + enableComputeLightEvaluation: 1 + enableComputeLightVariants: 1 + enableComputeMaterialVariants: 1 + enableFptlForForwardOpaque: 1 + enableBigTilePrepass: 1 + isFptlEnabled: 1 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 1 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 1 + farClipPlane: 1000 + fieldOfView: 60 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 m_ObsoleteCaptureNearPlane: 1 m_ObsoleteCaptureFarPlane: 1000 m_ObsoleteOverrideFieldOfView: 0 m_ObsoleteFieldOfViewOverride: 60 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} --- !u!23 &1321178247 MeshRenderer: m_ObjectHideFlags: 2 @@ -5102,10 +5158,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 2 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5182,10 +5240,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5289,10 +5349,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5379,10 +5441,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5459,9 +5523,9 @@ MeshCollider: m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 3 + serializedVersion: 4 m_Convex: 0 - m_CookingOptions: 14 + m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &1447483557 MeshRenderer: @@ -5474,10 +5538,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5554,10 +5620,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5673,6 +5741,18 @@ PrefabInstance: propertyPath: m_Name value: Background objectReference: {fileID: 0} + - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} + propertyPath: m_LocalScale.x + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} + propertyPath: m_LocalScale.y + value: 20 + objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -5685,6 +5765,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 2 objectReference: {fileID: 0} + - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} propertyPath: m_LocalRotation.x value: 0.7071068 @@ -5697,22 +5781,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalScale.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} - propertyPath: m_LocalScale.y - value: 20 - objectReference: {fileID: 0} - target: {fileID: 4415619047076708, guid: e6be141ec19d3554489da286b19b90b2, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 90 @@ -5767,10 +5835,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5870,10 +5940,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -5960,10 +6032,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6040,10 +6114,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6106,10 +6182,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6235,6 +6313,61 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: + clearColorMode: 0 + backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.6 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + exposureTarget: {fileID: 0} + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 70005810265949 + data2: 4539628424389459968 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 m_Version: 7 m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: @@ -6282,51 +6415,6 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} - clearDepth: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - volumeAnchorOverride: {fileID: 0} - antialiasing: 0 - SMAAQuality: 2 - dithering: 0 - stopNaNs: 0 - taaSharpenStrength: 0.6 - physicalParameters: - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - flipYMode: 0 - fullscreenPassthrough: 0 - allowDynamicResolution: 0 - customRenderingSettings: 0 - invertFaceCulling: 0 - probeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - hasPersistentHistory: 0 - m_RenderingPathCustomFrameSettings: - bitDatas: - data1: 70005810265949 - data2: 4539628424389459968 - lodBias: 1 - lodBiasMode: 0 - lodBiasQualityLevel: 0 - maximumLODLevel: 0 - maximumLODLevelMode: 0 - maximumLODLevelQualityLevel: 0 - materialQuality: 0 - renderingPathCustomFrameSettingsOverrideMask: - mask: - data1: 0 - data2: 0 - defaultFrameSettings: 0 --- !u!81 &1849355550 AudioListener: m_ObjectHideFlags: 0 @@ -6421,9 +6509,9 @@ MeshCollider: m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 3 + serializedVersion: 4 m_Convex: 0 - m_CookingOptions: 14 + m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &1868991424 MeshRenderer: @@ -6436,10 +6524,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6516,10 +6606,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6564,6 +6656,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x value: 0.73 @@ -6576,6 +6672,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -0.39 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.x value: 0.7071068 @@ -6588,14 +6688,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 90 @@ -6607,8 +6699,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_NormalizedViewPortRect.height - value: 1 + propertyPath: m_NormalizedViewPortRect.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -6617,8 +6709,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_NormalizedViewPortRect.x - value: 0 + propertyPath: m_NormalizedViewPortRect.height + value: 1 objectReference: {fileID: 0} - target: {fileID: 114270329781043846, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -6642,13 +6734,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: clearColorMode - value: 0 + propertyPath: m_Version + value: 7 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_Version - value: 7 + propertyPath: clearColorMode + value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -6657,13 +6749,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: waitFrames - value: 20 + propertyPath: xrLayout + value: 0 objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: xrLayout - value: 0 + propertyPath: waitFrames + value: 20 objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -6754,10 +6846,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -6858,10 +6952,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies.unity index 57e98c88d7a..659e1cb5459 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies.unity @@ -97,7 +97,7 @@ LightmapSettings: m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 112000002, guid: 110caf952aea0be41a43bdc68eab3ec4, + m_LightingDataAsset: {fileID: 112000004, guid: 37e8a7625976eb049b31e58ebeee2280, type: 2} m_LightingSettings: {fileID: 1057334560} --- !u!196 &4 @@ -212,6 +212,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -335,6 +336,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -430,6 +432,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -535,6 +538,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -609,53 +613,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -711,6 +668,53 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!20 &178513355 Camera: m_ObjectHideFlags: 0 @@ -821,6 +825,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -908,6 +913,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1011,6 +1017,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1132,6 +1139,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1213,101 +1221,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -1324,6 +1237,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -1336,30 +1260,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -1471,6 +1388,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -1557,61 +1476,13 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 - m_ObsoleteCaptureNearPlane: 0.3 - m_ObsoleteCaptureFarPlane: 1000 - m_ObsoleteOverrideFieldOfView: 0 - m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} ---- !u!1 &330461915 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 330461918} - - component: {fileID: 330461917} - - component: {fileID: 330461916} - m_Layer: 0 - m_Name: Reflection Probe_BelowPBR (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &330461916 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330461915} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} - m_Name: - m_EditorClassIdentifier: m_HDProbeVersion: 3 m_ObsoleteInfiniteProjection: 1 m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} m_Shape: 0 m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} m_BoxSideFadePositive: {x: 1, y: 1, z: 1} @@ -1619,6 +1490,18 @@ MonoBehaviour: m_SphereRadius: 3 m_SphereBlendDistance: 0 m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} m_ObsoleteFrameSettings: overrides: 0 enableShadow: 0 @@ -1688,6 +1571,42 @@ MonoBehaviour: orthographicSize: 5 renderingPath: 0 shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 + m_ObsoleteCaptureNearPlane: 0.3 + m_ObsoleteCaptureFarPlane: 1000 + m_ObsoleteOverrideFieldOfView: 0 + m_ObsoleteFieldOfViewOverride: 90 +--- !u!1 &330461915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 330461918} + - component: {fileID: 330461917} + - component: {fileID: 330461916} + m_Layer: 0 + m_Name: Reflection Probe_BelowPBR (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &330461916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330461915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} + m_Name: + m_EditorClassIdentifier: m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -1704,6 +1623,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -1716,30 +1646,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -1851,6 +1774,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -1937,6 +1862,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -1975,7 +1995,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -2113,6 +2133,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2181,101 +2202,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -2292,6 +2218,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -2304,30 +2241,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -2439,12 +2369,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: 425300e772affc34c9a03e0e53bcde4a, type: 3} + m_BakedTexture: {fileID: 8900000, guid: 54a683b927ea13247b0cf93414a4e7ab, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -2525,6 +2457,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -2639,6 +2666,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2735,6 +2763,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2840,6 +2869,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2900,101 +2930,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -3011,6 +2946,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -3023,30 +2969,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} + proxy: m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - proxy: + m_BoxSize: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 m_CSVersion: 1 m_ObsoleteSphereInfiniteProjection: 0 m_ObsoleteBoxInfiniteProjection: 0 - m_Shape: 0 - m_BoxSize: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -3158,12 +3097,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: 2b687516a2fe55b438acbbd82b87cafe, type: 3} + m_BakedTexture: {fileID: 8900000, guid: 5ce1bfe9e630c8d44a1889330e6f068b, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -3244,6 +3185,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -3331,101 +3367,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -3442,6 +3383,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -3454,30 +3406,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -3589,6 +3534,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -3675,32 +3622,127 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_ReflectionProbeVersion: 9 - m_ObsoleteInfluenceShape: 0 - m_ObsoleteInfluenceSphereRadius: 3 - m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} ---- !u!215 &513531962 -ReflectionProbe: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 513531960} - m_Enabled: 1 - serializedVersion: 2 - m_Type: 0 - m_Mode: 2 - m_RefreshMode: 2 - m_TimeSlicingMode: 0 - m_Resolution: 128 - m_UpdateFrequency: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxOffset: {x: 0, y: 0, z: 0} + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_ReflectionProbeVersion: 9 + m_ObsoleteInfluenceShape: 0 + m_ObsoleteInfluenceSphereRadius: 3 + m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} +--- !u!215 &513531962 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 513531960} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 2 + m_RefreshMode: 2 + m_TimeSlicingMode: 0 + m_Resolution: 128 + m_UpdateFrequency: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxOffset: {x: 0, y: 0, z: 0} m_NearClip: 0.3 m_FarClip: 1000 m_ShadowDistance: 100 @@ -3713,7 +3755,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -3839,101 +3881,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -3950,6 +3897,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -3962,30 +3920,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -4097,6 +4048,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -4183,17 +4136,112 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_ReflectionProbeVersion: 9 - m_ObsoleteInfluenceShape: 0 - m_ObsoleteInfluenceSphereRadius: 3 - m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} ---- !u!215 &555449966 -ReflectionProbe: + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_ReflectionProbeVersion: 9 + m_ObsoleteInfluenceShape: 0 + m_ObsoleteInfluenceSphereRadius: 3 + m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} +--- !u!215 &555449966 +ReflectionProbe: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4221,7 +4269,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -4283,101 +4331,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -4394,6 +4347,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -4406,30 +4370,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -4541,6 +4498,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -4627,33 +4586,128 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 - m_ObsoleteCaptureNearPlane: 0.3 - m_ObsoleteCaptureFarPlane: 1000 - m_ObsoleteOverrideFieldOfView: 0 - m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} ---- !u!115 &602150823 -MonoScript: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - serializedVersion: 5 - m_Script: - m_DefaultReferences: {} - m_Icon: {fileID: 0} - m_ExecutionOrder: 0 - m_ClassName: SceneObjectIDMapSceneAsset - m_Namespace: UnityEngine.Rendering.HighDefinition ---- !u!1 &611768903 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 + m_ObsoleteCaptureNearPlane: 0.3 + m_ObsoleteCaptureFarPlane: 1000 + m_ObsoleteOverrideFieldOfView: 0 + m_ObsoleteFieldOfViewOverride: 90 +--- !u!115 &602150823 +MonoScript: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 5 + m_Script: + m_DefaultReferences: {} + m_Icon: {fileID: 0} + m_ExecutionOrder: 0 + m_ClassName: SceneObjectIDMapSceneAsset + m_Namespace: UnityEngine.Rendering.HighDefinition +--- !u!1 &611768903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 611768904} - component: {fileID: 611768906} @@ -4712,6 +4766,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4885,14 +4940,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 11 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 3.1415927 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 @@ -4902,6 +4949,7 @@ MonoBehaviour: m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -4918,6 +4966,7 @@ MonoBehaviour: m_AreaLightCookie: {fileID: 0} m_IESPoint: {fileID: 0} m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 @@ -4967,6 +5016,10 @@ MonoBehaviour: m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 m_BarnDoorAngle: 90 m_BarnDoorLength: 0.05 m_preserveCachedShadow: 0 @@ -4989,6 +5042,14 @@ MonoBehaviour: m_AreaLightEmissiveMeshShadowCastingMode: 0 m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &647739165 Light: m_ObjectHideFlags: 0 @@ -5109,6 +5170,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5257,6 +5319,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5325,101 +5388,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -5436,6 +5404,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -5448,30 +5427,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -5583,6 +5555,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -5669,6 +5643,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -5707,7 +5776,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -5769,101 +5838,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -5880,6 +5854,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -5892,30 +5877,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -6027,6 +6005,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -6113,40 +6093,135 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 - m_ObsoleteCaptureNearPlane: 0.3 - m_ObsoleteCaptureFarPlane: 1000 - m_ObsoleteOverrideFieldOfView: 0 - m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} ---- !u!1 &747905107 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 747905108} - - component: {fileID: 747905111} - - component: {fileID: 747905110} - - component: {fileID: 747905109} - m_Layer: 0 - m_Name: Gradient Sky Volume - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &747905108 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 747905107} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: -4.972601, y: 1.463484, z: -6.561899} + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 + m_ObsoleteCaptureNearPlane: 0.3 + m_ObsoleteCaptureFarPlane: 1000 + m_ObsoleteOverrideFieldOfView: 0 + m_ObsoleteFieldOfViewOverride: 90 +--- !u!1 &747905107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747905108} + - component: {fileID: 747905111} + - component: {fileID: 747905110} + - component: {fileID: 747905109} + m_Layer: 0 + m_Name: Gradient Sky Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &747905108 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747905107} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -4.972601, y: 1.463484, z: -6.561899} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 691065842} @@ -6254,6 +6329,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6335,101 +6411,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -6446,6 +6427,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -6458,30 +6450,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -6593,6 +6578,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -6679,12 +6666,107 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 - m_ObsoleteCaptureNearPlane: 0.3 - m_ObsoleteCaptureFarPlane: 1000 - m_ObsoleteOverrideFieldOfView: 0 - m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 + m_ObsoleteCaptureNearPlane: 0.3 + m_ObsoleteCaptureFarPlane: 1000 + m_ObsoleteOverrideFieldOfView: 0 + m_ObsoleteFieldOfViewOverride: 90 --- !u!1 &905665772 GameObject: m_ObjectHideFlags: 0 @@ -6752,6 +6834,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6958,6 +7041,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7079,101 +7163,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -7190,6 +7179,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -7202,30 +7202,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -7337,12 +7330,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: e989922c5e2f1e24f98cac1ef54b4ad6, type: 3} + m_BakedTexture: {fileID: 8900000, guid: c3c071c7a8c51a04abe81521cd6fd2a4, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -7423,39 +7418,134 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_ReflectionProbeVersion: 9 - m_ObsoleteInfluenceShape: 0 - m_ObsoleteInfluenceSphereRadius: 3 - m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} - m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} ---- !u!215 &1060691605 -ReflectionProbe: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1060691603} - m_Enabled: 1 - serializedVersion: 2 - m_Type: 0 - m_Mode: 2 - m_RefreshMode: 2 - m_TimeSlicingMode: 0 - m_Resolution: 128 - m_UpdateFrequency: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxOffset: {x: 0, y: 0, z: 0} - m_NearClip: 0.3 - m_FarClip: 1000 - m_ShadowDistance: 100 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_CullingMask: - serializedVersion: 2 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_ReflectionProbeVersion: 9 + m_ObsoleteInfluenceShape: 0 + m_ObsoleteInfluenceSphereRadius: 3 + m_ObsoleteBlendDistancePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_ObsoleteBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_ObsoleteBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_ObsoleteBoxSideFadePositive: {x: 1, y: 1, z: 1} + m_ObsoleteBoxSideFadeNegative: {x: 1, y: 1, z: 1} +--- !u!215 &1060691605 +ReflectionProbe: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060691603} + m_Enabled: 1 + serializedVersion: 2 + m_Type: 0 + m_Mode: 2 + m_RefreshMode: 2 + m_TimeSlicingMode: 0 + m_Resolution: 128 + m_UpdateFrequency: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxOffset: {x: 0, y: 0, z: 0} + m_NearClip: 0.3 + m_FarClip: 1000 + m_ShadowDistance: 100 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_CullingMask: + serializedVersion: 2 m_Bits: 4294967295 m_IntensityMultiplier: 1 m_BlendDistance: 0 @@ -7524,6 +7614,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7633,6 +7724,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7728,6 +7820,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7810,53 +7903,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -7912,6 +7958,53 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!20 &1133427033 Camera: m_ObjectHideFlags: 0 @@ -8099,6 +8192,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8159,101 +8253,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -8270,6 +8269,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -8282,30 +8292,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -8417,6 +8420,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -8503,6 +8508,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -8541,7 +8641,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -8660,6 +8760,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8763,6 +8864,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8872,6 +8974,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8940,101 +9043,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -9051,6 +9059,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -9063,30 +9082,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -9198,12 +9210,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: b83a4412a0353ee45a023040a41398f0, type: 3} + m_BakedTexture: {fileID: 8900000, guid: f5add954a51b32b4fb77065bf0d77db1, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -9284,6 +9298,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -9448,101 +9557,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -9559,6 +9573,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -9571,30 +9596,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} + proxy: m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - proxy: + m_BoxSize: {x: 1, y: 1, z: 1} + m_SphereRadius: 1 m_CSVersion: 1 m_ObsoleteSphereInfiniteProjection: 0 m_ObsoleteBoxInfiniteProjection: 0 - m_Shape: 0 - m_BoxSize: {x: 1, y: 1, z: 1} - m_SphereRadius: 1 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -9706,6 +9724,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -9792,6 +9812,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -9830,7 +9945,7 @@ ReflectionProbe: m_BlendDistance: 0 m_HDR: 1 m_BoxProjection: 0 - m_RenderDynamicObjects: 0 + m_RenderDynamicObjects: 1 m_UseOcclusionCulling: 1 m_Importance: 1 m_CustomBakedTexture: {fileID: 0} @@ -9892,101 +10007,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -10003,6 +10023,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -10015,30 +10046,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -10150,6 +10174,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -10236,30 +10262,125 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 - m_ObsoleteCaptureNearPlane: 0.3 - m_ObsoleteCaptureFarPlane: 1000 - m_ObsoleteOverrideFieldOfView: 0 - m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} ---- !u!1 &1515249584 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1515249585} - - component: {fileID: 1515249588} - - component: {fileID: 1515249587} - - component: {fileID: 1515249586} - m_Layer: 0 - m_Name: Plane - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 + m_ObsoleteCaptureNearPlane: 0.3 + m_ObsoleteCaptureFarPlane: 1000 + m_ObsoleteOverrideFieldOfView: 0 + m_ObsoleteFieldOfViewOverride: 90 +--- !u!1 &1515249584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1515249585} + - component: {fileID: 1515249588} + - component: {fileID: 1515249587} + - component: {fileID: 1515249586} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &1515249585 Transform: @@ -10300,6 +10421,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10382,53 +10504,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -10484,118 +10559,8 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 ---- !u!20 &1555546652 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1555546648} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1.5 - field of view: 73.79663 - orthographic: 0 - orthographic size: 2.2115808 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 8400000, guid: 99079a9470defc146a3d61d25e07b224, type: 2} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!1 &1571259192 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1571259193} - - component: {fileID: 1571259194} - m_Layer: 0 - m_Name: Planar Reflection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1571259193 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1571259192} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1694570997} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1571259194 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1571259192} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: overrides: 0 enableShadow: 0 @@ -10641,30 +10606,92 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 +--- !u!20 &1555546652 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555546648} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1.5 + field of view: 73.79663 + orthographic: 0 + orthographic size: 2.2115808 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 99079a9470defc146a3d61d25e07b224, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1571259192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1571259193} + - component: {fileID: 1571259194} + m_Layer: 0 + m_Name: Planar Reflection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1571259193 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1571259192} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1694570997} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1571259194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1571259192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4ee7c3a3b205a14a94094d01ff91d6b, type: 3} + m_Name: + m_EditorClassIdentifier: m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -10681,6 +10708,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2, y: 0.03, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} m_EditorSimplifiedModeBlendDistance: 0 @@ -10693,30 +10731,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2, y: 0.03, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: -0.70710677, y: 0, z: 0, w: 0.70710677} + resolutionScalable: + m_Override: 512 + m_UseOverride: 1 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -10828,6 +10859,8 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: @@ -10914,12 +10947,107 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 - m_PlanarProbeVersion: 6 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 + m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} + m_PlanarProbeVersion: 7 m_ObsoleteCaptureNearPlane: 0.3 m_ObsoleteCaptureFarPlane: 1000 m_ObsoleteOverrideFieldOfView: 0 m_ObsoleteFieldOfViewOverride: 90 - m_LocalReferencePosition: {x: 0, y: 0.99999994, z: 0.000000059604645} --- !u!1 &1577031904 GameObject: m_ObjectHideFlags: 0 @@ -10998,53 +11126,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -11100,6 +11181,53 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!20 &1585039567 Camera: m_ObjectHideFlags: 0 @@ -11187,53 +11315,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -11289,6 +11370,53 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!20 &1613954144 Camera: m_ObjectHideFlags: 0 @@ -11399,6 +11527,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11528,6 +11657,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11565,124 +11695,29 @@ GameObject: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 - m_Component: - - component: {fileID: 1739094910} - - component: {fileID: 1739094909} - - component: {fileID: 1739094908} - m_Layer: 0 - m_Name: Reflection Probe_HighAltPBR - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1739094908 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1739094907} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 + m_Component: + - component: {fileID: 1739094910} + - component: {fileID: 1739094909} + - component: {fileID: 1739094908} + m_Layer: 0 + m_Name: Reflection Probe_HighAltPBR + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1739094908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739094907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} + m_Name: + m_EditorClassIdentifier: m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -11699,6 +11734,17 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: + m_Shape: 0 + m_BoxSize: {x: 2.0000005, y: 2, z: 2} + m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} m_EditorSimplifiedModeBlendDistance: 0 @@ -11711,30 +11757,23 @@ MonoBehaviour: m_Version: 1 m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 2.0000005, y: 2, z: 2} - m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -11846,12 +11885,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: 81a55202c09fa8849ad281ced0836121, type: 3} + m_BakedTexture: {fileID: 8900000, guid: 3da9e6e33a54b4446b4f2391ac2c35d1, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -11932,6 +11973,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -12033,6 +12169,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12142,6 +12279,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12314,6 +12452,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12409,6 +12548,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12477,101 +12617,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3} m_Name: m_EditorClassIdentifier: - m_HDProbeVersion: 3 - m_ObsoleteInfiniteProjection: 1 - m_ObsoleteInfluenceVolume: - m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} - m_Shape: 0 - m_BoxSize: {x: 10, y: 10, z: 10} - m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} - m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_BoxSideFadePositive: {x: 1, y: 1, z: 1} - m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} - m_SphereRadius: 3 - m_SphereBlendDistance: 0 - m_SphereBlendNormalDistance: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 - m_ObsoleteMultiplier: 1 - m_ObsoleteWeight: 1 - m_ObsoleteMode: 0 - m_ObsoleteLightLayers: 1 - m_ObsoleteCaptureSettings: - overrides: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} - clearDepth: 1 - cullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - useOcclusionCulling: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - projection: 0 - nearClipPlane: 0.3 - farClipPlane: 1000 - fieldOfView: 90 - orthographicSize: 5 - renderingPath: 0 - shadowDistance: 100 m_ProbeSettings: frustum: fieldOfViewMode: 1 @@ -12588,18 +12633,6 @@ MonoBehaviour: fadeDistance: 10000 rangeCompressionFactor: 1 influence: - m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} - m_EditorSimplifiedModeBlendDistance: 0 - m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} - m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} - m_EditorSimplifiedModeBlendNormalDistance: 0 - m_EditorAdvancedModeEnabled: 0 - m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} - m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} - m_Version: 1 - m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} - m_ObsoleteOffset: {x: 0, y: 0, z: 0} m_Shape: 0 m_BoxSize: {x: 2.0000005, y: 2, z: 2} m_BoxBlendDistancePositive: {x: 0, y: 0, z: 0} @@ -12611,19 +12644,35 @@ MonoBehaviour: m_SphereRadius: 3 m_SphereBlendDistance: 0 m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} proxy: - m_CSVersion: 1 - m_ObsoleteSphereInfiniteProjection: 0 - m_ObsoleteBoxInfiniteProjection: 0 m_Shape: 0 m_BoxSize: {x: 1, y: 1, z: 1} m_SphereRadius: 1 + m_CSVersion: 1 + m_ObsoleteSphereInfiniteProjection: 0 + m_ObsoleteBoxInfiniteProjection: 0 proxySettings: useInfluenceVolumeAsProxyVolume: 0 capturePositionProxySpace: {x: 0, y: 0, z: 0} captureRotationProxySpace: {x: 0, y: 0, z: 0, w: 1} mirrorPositionProxySpace: {x: 0, y: 0, z: 0} mirrorRotationProxySpace: {x: 0, y: 0, z: 0, w: 0} + resolutionScalable: + m_Override: 512 + m_UseOverride: 0 + m_Level: 0 resolution: 512 cameraSettings: customRenderingSettings: 0 @@ -12735,12 +12784,14 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 + roughReflections: 1 + distanceBasedRoughness: 0 m_ProbeSettingsOverride: probe: 0 camera: camera: 0 m_ProxyVolume: {fileID: 0} - m_BakedTexture: {fileID: 8900000, guid: 7bf673d1ef7316b49bc31cf6d9e15918, type: 3} + m_BakedTexture: {fileID: 8900000, guid: f12513ae3bb66a147a7edb0af006136e, type: 3} m_CustomTexture: {fileID: 0} m_BakedRenderData: m_WorldToCameraRHS: @@ -12821,6 +12872,101 @@ MonoBehaviour: m_FieldOfView: 0 m_Aspect: 0 m_EditorOnlyData: 0 + m_HDProbeVersion: 3 + m_ObsoleteInfiniteProjection: 1 + m_ObsoleteInfluenceVolume: + m_Shape: 0 + m_BoxSize: {x: 10, y: 10, z: 10} + m_BoxBlendDistancePositive: {x: 1, y: 1, z: 1} + m_BoxBlendDistanceNegative: {x: 1, y: 1, z: 1} + m_BoxBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_BoxBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_BoxSideFadePositive: {x: 1, y: 1, z: 1} + m_BoxSideFadeNegative: {x: 1, y: 1, z: 1} + m_SphereRadius: 3 + m_SphereBlendDistance: 0 + m_SphereBlendNormalDistance: 0 + m_EditorAdvancedModeBlendDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendDistance: 0 + m_EditorAdvancedModeBlendNormalDistancePositive: {x: 0, y: 0, z: 0} + m_EditorAdvancedModeBlendNormalDistanceNegative: {x: 0, y: 0, z: 0} + m_EditorSimplifiedModeBlendNormalDistance: 0 + m_EditorAdvancedModeEnabled: 0 + m_EditorAdvancedModeFaceFadePositive: {x: 1, y: 1, z: 1} + m_EditorAdvancedModeFaceFadeNegative: {x: 1, y: 1, z: 1} + m_Version: 1 + m_ObsoleteSphereBaseOffset: {x: 0, y: 0, z: 0} + m_ObsoleteOffset: {x: 0, y: 0, z: 0} + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteMultiplier: 1 + m_ObsoleteWeight: 1 + m_ObsoleteMode: 0 + m_ObsoleteLightLayers: 1 + m_ObsoleteCaptureSettings: + overrides: 0 + clearColorMode: 0 + backgroundColorHDR: {r: 0.023529412, g: 0.07058824, b: 0.1882353, a: 0} + clearDepth: 1 + cullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + useOcclusionCulling: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + projection: 0 + nearClipPlane: 0.3 + farClipPlane: 1000 + fieldOfView: 90 + orthographicSize: 5 + renderingPath: 0 + shadowDistance: 100 m_ReflectionProbeVersion: 9 m_ObsoleteInfluenceShape: 0 m_ObsoleteInfluenceSphereRadius: 3 @@ -12999,6 +13145,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13062,6 +13209,10 @@ PrefabInstance: propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x value: -3.5 @@ -13074,6 +13225,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -5 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -13086,14 +13241,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -13109,33 +13256,33 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_NormalizedViewPortRect.height + propertyPath: orthographic value: 1 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_NormalizedViewPortRect.width - value: 1 + propertyPath: far clip plane + value: 20 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_NormalizedViewPortRect.x - value: 0 + propertyPath: orthographic size + value: 3.0902927 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: far clip plane - value: 20 + propertyPath: m_NormalizedViewPortRect.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: orthographic + propertyPath: m_NormalizedViewPortRect.width value: 1 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: orthographic size - value: 3.0902927 + propertyPath: m_NormalizedViewPortRect.height + value: 1 objectReference: {fileID: 0} - target: {fileID: 114270329781043846, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -13159,13 +13306,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: clearColorMode - value: 0 + propertyPath: m_Version + value: 7 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_Version - value: 7 + propertyPath: clearColorMode + value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -13174,13 +13321,13 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: waitFrames - value: 20 + propertyPath: xrLayout + value: 0 objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: xrLayout - value: 0 + propertyPath: waitFrames + value: 20 objectReference: {fileID: 0} - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} @@ -13212,11 +13359,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6578c5289fbe24041bdd0d1fc06a8c61, type: 3} m_Name: m_EditorClassIdentifier: - refProbe: - - {fileID: 1471670654} - - {fileID: 499872476} - - {fileID: 1060691605} - - {fileID: 1739094909} --- !u!1 &1970668081 GameObject: m_ObjectHideFlags: 0 @@ -13274,6 +13416,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13413,6 +13556,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13501,6 +13645,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13674,6 +13819,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13783,6 +13929,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13886,6 +14033,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13983,6 +14131,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14070,6 +14219,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14152,53 +14302,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 7 - m_ObsoleteRenderingPath: 0 - m_ObsoleteFrameSettings: - overrides: 0 - enableShadow: 0 - enableContactShadows: 0 - enableShadowMask: 0 - enableSSR: 0 - enableSSAO: 0 - enableSubsurfaceScattering: 0 - enableTransmission: 0 - enableAtmosphericScattering: 0 - enableVolumetrics: 0 - enableReprojectionForVolumetrics: 0 - enableLightLayers: 0 - enableExposureControl: 1 - diffuseGlobalDimmer: 0 - specularGlobalDimmer: 0 - shaderLitMode: 0 - enableDepthPrepassWithDeferredRendering: 0 - enableTransparentPrepass: 0 - enableMotionVectors: 0 - enableObjectMotionVectors: 0 - enableDecals: 0 - enableRoughRefraction: 0 - enableTransparentPostpass: 0 - enableDistortion: 0 - enablePostprocess: 0 - enableOpaqueObjects: 0 - enableTransparentObjects: 0 - enableRealtimePlanarReflection: 0 - enableMSAA: 0 - enableAsyncCompute: 0 - runLightListAsync: 0 - runSSRAsync: 0 - runSSAOAsync: 0 - runContactShadowsAsync: 0 - runVolumeVoxelizationAsync: 0 - lightLoopSettings: - overrides: 0 - enableDeferredTileAndCluster: 0 - enableComputeLightEvaluation: 0 - enableComputeLightVariants: 0 - enableComputeMaterialVariants: 0 - enableFptlForForwardOpaque: 0 - enableBigTilePrepass: 0 - isFptlEnabled: 0 clearColorMode: 0 backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} clearDepth: 1 @@ -14254,6 +14357,53 @@ MonoBehaviour: data1: 0 data2: 0 defaultFrameSettings: 0 + m_Version: 7 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 --- !u!20 &2111488138 Camera: m_ObjectHideFlags: 0 @@ -14354,6 +14504,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14449,6 +14600,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14531,6 +14683,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies/BakeProbes.cs b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies/BakeProbes.cs index 5889328967a..9a4fe3a16b1 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies/BakeProbes.cs +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2212_ReflectionProbes_Skies/BakeProbes.cs @@ -1,25 +1,21 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -using UnityEditor; using UnityEngine.Rendering.HighDefinition; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.Experimental.Rendering; +#endif public class BakeProbes : MonoBehaviour { - public ReflectionProbe[] refProbe; - IEnumerator Start() { yield return new WaitForSeconds(0.5f); - foreach (var probe in refProbe) - { - Lightmapping.BakeReflectionProbe(probe, "Assets/" + probe.ToString() + ".hdr"); - HDAdditionalReflectionData addRefData = probe.gameObject.GetComponent(); - - Texture texture = (Texture)AssetDatabase.LoadAssetAtPath("Assets/" + probe.ToString() + ".hdr", typeof(Texture)); - addRefData.bakedTexture = texture; - yield return null; - } + #if UNITY_EDITOR + var system = ScriptableBakedReflectionSystemSettings.system; + system.BakeAllReflectionProbes(); + #endif } } diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5002_Fog_DensityVolumes.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5002_Fog_DensityVolumes.unity index ca134ed3db6..a9ae6b3f83d 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5002_Fog_DensityVolumes.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5002_Fog_DensityVolumes.unity @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 @@ -98,7 +98,8 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 4890085278179872738, guid: 13ddd58f82d362446afff5ee710425c0, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +119,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -205,10 +208,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -233,6 +238,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &243339203 GameObject: m_ObjectHideFlags: 0 @@ -262,11 +268,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 11700000, guid: eb1563a201cd3474783a6a751fb677d8, type: 2} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -280,7 +285,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: 0 + textureOffset: {x: -0, y: -0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!4 &243339205 Transform: m_ObjectHideFlags: 0 @@ -327,9 +334,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Profile: {fileID: 11400000, guid: 60355684f9174744d9e48ee93f0f3a7e, type: 2} m_StaticLightingSkyUniqueID: 2 - m_SkySettings: {fileID: 1357893653} - m_SkySettingsFromProfile: {fileID: 114267662401170168, guid: 60355684f9174744d9e48ee93f0f3a7e, - type: 2} + m_StaticLightingCloudsUniqueID: 0 --- !u!114 &386829908 MonoBehaviour: m_ObjectHideFlags: 0 @@ -445,10 +450,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -473,6 +480,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &498273932 GameObject: m_ObjectHideFlags: 0 @@ -503,22 +511,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 8 - m_ObsoleteShadowResolutionTier: 1 - m_ObsoleteUseShadowQualitySettings: 0 - m_ObsoleteCustomShadowResolution: 512 - m_ObsoleteContactShadows: 0 - m_PointlightHDType: 0 - m_SpotLightShape: 0 - m_AreaLightShape: 0 m_Intensity: 10 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 @@ -526,16 +528,25 @@ MonoBehaviour: m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 1 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 m_UseRayTracedShadows: 0 m_NumRayTracingSamples: 4 @@ -543,6 +554,9 @@ MonoBehaviour: m_FilterSizeTraced: 16 m_SunLightConeAngle: 0.5 m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -550,10 +564,9 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.2 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 32 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -570,9 +583,17 @@ MonoBehaviour: m_Level: 0 m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -588,7 +609,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &498273935 Light: m_ObjectHideFlags: 0 @@ -648,6 +679,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &498273936 @@ -707,11 +739,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 0, g: 1, b: 0, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -725,7 +756,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &846695262 GameObject: m_ObjectHideFlags: 0 @@ -769,11 +802,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 15 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -787,7 +819,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &897164414 GameObject: m_ObjectHideFlags: 0 @@ -872,10 +906,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -900,6 +936,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1001 &942269470 PrefabInstance: m_ObjectHideFlags: 0 @@ -907,6 +944,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -919,6 +960,10 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: -150 objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalRotation.x value: 0 @@ -931,14 +976,6 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -953,59 +990,64 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: far clip plane - value: 152 + propertyPath: field of view + value: 5 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: field of view - value: 5 + propertyPath: far clip plane + value: 152 objectReference: {fileID: 0} - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: near clip plane value: 147 objectReference: {fileID: 0} + - target: {fileID: 114733060649624252, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: renderPipelines.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 114733060649624252, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: renderPipelines.Array.data[3] + value: + objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: clearColorMode - value: 0 + propertyPath: m_Version + value: 7 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.r + propertyPath: clearColorMode value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.g + propertyPath: backgroundColorHDR.b value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: backgroundColorHDR.b + propertyPath: backgroundColorHDR.g value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: m_Version - value: 7 + propertyPath: backgroundColorHDR.r + value: 0 objectReference: {fileID: 0} - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} propertyPath: m_RenderingPathCustomFrameSettings.bitDatas.data1 value: 70005818916701 objectReference: {fileID: 0} - - target: {fileID: 114733060649624252, guid: c07ace9ab142ca9469fa377877c2f1e7, + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} - propertyPath: renderPipelines.Array.size + propertyPath: xrThresholdMultiplier value: 3 objectReference: {fileID: 0} - - target: {fileID: 114733060649624252, guid: c07ace9ab142ca9469fa377877c2f1e7, - type: 3} - propertyPath: renderPipelines.Array.data[3] - value: - objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} --- !u!114 &942269472 stripped @@ -1063,11 +1105,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 10 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -1081,7 +1122,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &954271399 GameObject: m_ObjectHideFlags: 0 @@ -1125,11 +1168,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 30 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -1143,7 +1185,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &1113038752 GameObject: m_ObjectHideFlags: 0 @@ -1187,11 +1231,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -1205,7 +1248,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &1153552879 GameObject: m_ObjectHideFlags: 0 @@ -1328,10 +1373,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1356,82 +1403,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!114 &1357893653 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3df29e7cc05fbec4aa43e06ea875565d, type: 3} - m_Name: - m_EditorClassIdentifier: - active: 1 - m_AdvancedMode: 0 - rotation: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 360 - skyIntensityMode: - m_OverrideState: 0 - m_Value: 0 - exposure: - m_OverrideState: 0 - m_Value: 0 - multiplier: - m_OverrideState: 0 - m_Value: 0 - min: 0 - upperHemisphereLuxValue: - m_OverrideState: 0 - m_Value: 1 - min: 0 - desiredLuxValue: - m_OverrideState: 0 - m_Value: 20000 - updateMode: - m_OverrideState: 0 - m_Value: 0 - updatePeriod: - m_OverrideState: 0 - m_Value: 0 - min: 0 - includeSunInBaking: - m_OverrideState: 0 - m_Value: 0 - sunSize: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 1 - sunSizeConvergence: - m_OverrideState: 0 - m_Value: 1 - min: 1 - max: 10 - atmosphereThickness: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 5 - skyTint: - m_OverrideState: 0 - m_Value: {r: 0, g: 0, b: 0, a: 1} - hdr: 0 - showAlpha: 1 - showEyeDropper: 1 - groundColor: - m_OverrideState: 0 - m_Value: {r: 0, g: 0, b: 0, a: 1} - hdr: 0 - showAlpha: 1 - showEyeDropper: 1 - enableSunDisk: - m_OverrideState: 0 - m_Value: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1433911956 GameObject: m_ObjectHideFlags: 0 @@ -1516,10 +1488,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1544,6 +1518,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1433969175 GameObject: m_ObjectHideFlags: 0 @@ -1587,11 +1562,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 5 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -1605,7 +1579,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &1443556311 GameObject: m_ObjectHideFlags: 0 @@ -1690,10 +1666,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1718,6 +1696,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1480297282 GameObject: m_ObjectHideFlags: 0 @@ -1838,10 +1817,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1866,6 +1847,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1561861767 GameObject: m_ObjectHideFlags: 0 @@ -1909,11 +1891,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 0, b: 0, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -1927,7 +1908,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &1679543825 GameObject: m_ObjectHideFlags: 0 @@ -2078,10 +2061,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2106,6 +2091,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1868950548 GameObject: m_ObjectHideFlags: 0 @@ -2149,11 +2135,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 0, g: 0, b: 1, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 0} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 1, y: 1, z: 1} @@ -2167,7 +2152,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: -1 + textureOffset: {x: 0, y: 0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &1928825977 GameObject: m_ObjectHideFlags: 0 @@ -2211,11 +2198,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e1fbb15bf92b84f40a1eb030765b5afe, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 2 parameters: albedo: {r: 1, g: 1, b: 1, a: 1} meanFreePath: 1 - asymmetry: 0 + anisotropy: 0 volumeMask: {fileID: 11700000, guid: eb1563a201cd3474783a6a751fb677d8, type: 2} textureScrollingSpeed: {x: 0, y: 0, z: 0} textureTiling: {x: 2.5, y: 2.5, z: 2.5} @@ -2229,7 +2215,9 @@ MonoBehaviour: invertFade: 0 distanceFadeStart: 10000 distanceFadeEnd: 10000 - textureIndex: 0 + textureOffset: {x: -0, y: -0, z: 0} + falloffMode: 0 + m_Version: 2 --- !u!1 &2018619094 GameObject: m_ObjectHideFlags: 0 @@ -2346,10 +2334,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2374,3 +2364,4 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5004_Pbr_Sky_High_Altitude.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5004_Pbr_Sky_High_Altitude.unity index 7ad9b3a0613..7cc52aef327 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5004_Pbr_Sky_High_Altitude.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5004_Pbr_Sky_High_Altitude.unity @@ -38,12 +38,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.0023486111, g: 0.0024044828, b: 0.002470622, a: 1} + m_IndirectSpecularColor: {r: 0.0025897531, g: 0.0027359463, b: 0.002812422, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -98,7 +98,8 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 4890085278179872738, guid: 92592812934260d478e8de372e5478bc, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +119,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -153,7 +156,62 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 6 + clearColorMode: 0 + backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.5 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + exposureTarget: {fileID: 0} + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 70005819440989 + data2: 4539628424389459968 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 + m_Version: 7 m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: overrides: 0 @@ -200,46 +258,6 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} - clearDepth: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - antialiasing: 0 - SMAAQuality: 2 - dithering: 0 - stopNaNs: 0 - physicalParameters: - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - flipYMode: 0 - fullscreenPassthrough: 0 - allowDynamicResolution: 0 - customRenderingSettings: 0 - invertFaceCulling: 0 - probeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPathCustomFrameSettings: - bitDatas: - data1: 69456063627037 - data2: 4539628424389459968 - lodBias: 1 - lodBiasMode: 0 - maximumLODLevel: 0 - maximumLODLevelMode: 0 - renderingPathCustomFrameSettingsOverrideMask: - mask: - data1: 0 - data2: 0 - defaultFrameSettings: 0 --- !u!81 &186907184 AudioListener: m_ObjectHideFlags: 0 @@ -322,12 +340,23 @@ MonoBehaviour: TargetWidth: 1024 TargetHeight: 1024 PerPixelCorrectnessThreshold: 0.0001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 AverageCorrectnessThreshold: 0.0001 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 doBeforeTest: m_PersistentCalls: m_Calls: [] captureFramerate: 0 waitFrames: 10 + xrCompatible: 1 + xrThresholdMultiplier: 3 + checkMemoryAllocation: 1 renderPipelineAsset: {fileID: 11400000, guid: d7fe5f39d2c099a4ea1f1f610af309d7, type: 2} --- !u!1 &569810649 @@ -407,6 +436,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &569810651 @@ -436,39 +466,52 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 5 - directionalIntensity: 3.1415927 - punctualIntensity: 600 - areaIntensity: 200 - lightLayers: 1 m_Intensity: 3.1415927 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 - m_LightTypeExtent: 0 - m_SpotLightShape: 0 m_ShapeWidth: 0.5 m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -476,24 +519,36 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 - m_ShadowResolutionTier: 1 - m_UseShadowQualitySettings: 0 - m_CustomShadowResolution: 512 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 1 m_ShadowDimmer: 1 m_VolumetricShadowDimmer: 1 m_ShadowFadeDistance: 10000 - m_ContactShadows: 0 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 - m_ConstantBias: 0.15 + m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -509,120 +564,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 ---- !u!114 &593381511 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d877ec3e844f2ca46830012e8e79319b, type: 3} - m_Name: - m_EditorClassIdentifier: - active: 1 - m_AdvancedMode: 0 - rotation: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 360 - skyIntensityMode: - m_OverrideState: 0 - m_Value: 0 - exposure: - m_OverrideState: 0 - m_Value: 0 - multiplier: - m_OverrideState: 0 - m_Value: 1 - min: 0 - upperHemisphereLuxValue: - m_OverrideState: 0 - m_Value: 1 - min: 0 - desiredLuxValue: - m_OverrideState: 0 - m_Value: 20000 - updateMode: - m_OverrideState: 0 - m_Value: 0 - updatePeriod: - m_OverrideState: 0 - m_Value: 0 - min: 0 - includeSunInBaking: - m_OverrideState: 0 - m_Value: 0 - planetaryRadius: - m_OverrideState: 0 - m_Value: 6378.759 - min: 0 - planetCenterPosition: - m_OverrideState: 0 - m_Value: {x: 0, y: -6378.759, z: 0} - airAttenuationDistance: - m_OverrideState: 0 - m_Value: {r: 0.17241378, g: 0.074074075, b: 0.030211482, a: 1} - hdr: 1 - showAlpha: 0 - showEyeDropper: 0 - airAlbedo: - m_OverrideState: 0 - m_Value: {r: 0.9, g: 0.9, b: 1, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 0 - airMaximumAltitude: - m_OverrideState: 0 - m_Value: 58.3 - min: 0 - aerosolAttenuationDistance: - m_OverrideState: 0 - m_Value: 0.5 - min: 0 - aerosolAlbedo: - m_OverrideState: 0 - m_Value: 0.9 - min: 0 - max: 1 - aerosolMaximumAltitude: - m_OverrideState: 0 - m_Value: 8.3 - min: 0 - aerosolAnisotropy: - m_OverrideState: 0 - m_Value: 0 - min: -1 - max: 1 - numberOfBounces: - m_OverrideState: 0 - m_Value: 8 - min: 1 - max: 10 - groundColor: - m_OverrideState: 0 - m_Value: {r: 0.17254902, g: 0.227451, b: 0.3137255, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 0 - groundAlbedoTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: 703a4570dfe8b8e41aff24d2320bd405, type: 3} - groundEmissionTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: ec98521838f4e7f4a839280309cb08ab, type: 3} - planetRotation: - m_OverrideState: 0 - m_Value: {x: 180, y: -50, z: 170} - spaceEmissionTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: b0c5cbf24c773cd449436a2060083b10, type: 3} - spaceRotation: - m_OverrideState: 0 - m_Value: {x: 15, y: 30, z: 45} + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!1 &840375756 GameObject: m_ObjectHideFlags: 0 @@ -655,9 +607,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Profile: {fileID: 11400000, guid: 87713e11fb7272c428e39170ebbf32c9, type: 2} m_StaticLightingSkyUniqueID: 4 - m_SkySettings: {fileID: 593381511} - m_SkySettingsFromProfile: {fileID: 5021176665141955927, guid: 87713e11fb7272c428e39170ebbf32c9, - type: 2} + m_StaticLightingCloudsUniqueID: 0 --- !u!114 &840375758 MonoBehaviour: m_ObjectHideFlags: 0 @@ -746,10 +696,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -774,6 +726,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1815576520 MeshFilter: m_ObjectHideFlags: 0 @@ -826,39 +779,52 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 5 - directionalIntensity: 3.1415927 - punctualIntensity: 600 - areaIntensity: 200 - lightLayers: 1 m_Intensity: 0.3141593 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 - m_LightTypeExtent: 0 - m_SpotLightShape: 0 m_ShapeWidth: 0.5 m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -866,24 +832,36 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 - m_ShadowResolutionTier: 1 - m_UseShadowQualitySettings: 0 - m_CustomShadowResolution: 512 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 1 m_ShadowDimmer: 1 m_VolumetricShadowDimmer: 1 m_ShadowFadeDistance: 10000 - m_ContactShadows: 0 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 - m_ConstantBias: 0.15 + m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -899,7 +877,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &2144845824 Light: m_ObjectHideFlags: 0 @@ -959,5 +947,6 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 diff --git a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5005_Pbr_Sky_Med_Altitude.unity b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5005_Pbr_Sky_Med_Altitude.unity index bf1c520a58a..2275a1aeab5 100644 --- a/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5005_Pbr_Sky_Med_Altitude.unity +++ b/TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/5x_SkyAndFog/5005_Pbr_Sky_Med_Altitude.unity @@ -38,12 +38,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.08337717, g: 0.078173324, b: 0.06994433, a: 1} + m_IndirectSpecularColor: {r: 0.11093059, g: 0.10932881, b: 0.08915162, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 @@ -98,7 +98,8 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 4890085278179872738, guid: 1ae34d6c0bea4af4abc203c6bc6b52ec, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -118,6 +119,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -153,7 +156,62 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 6 + clearColorMode: 0 + backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + antialiasing: 0 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.5 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + exposureTarget: {fileID: 0} + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 70005819440989 + data2: 4539628424389459968 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 + m_Version: 7 m_ObsoleteRenderingPath: 0 m_ObsoleteFrameSettings: overrides: 0 @@ -200,46 +258,6 @@ MonoBehaviour: enableFptlForForwardOpaque: 0 enableBigTilePrepass: 0 isFptlEnabled: 0 - clearColorMode: 0 - backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} - clearDepth: 1 - volumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - volumeAnchorOverride: {fileID: 0} - antialiasing: 0 - SMAAQuality: 2 - dithering: 0 - stopNaNs: 0 - physicalParameters: - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - flipYMode: 0 - fullscreenPassthrough: 0 - allowDynamicResolution: 0 - customRenderingSettings: 0 - invertFaceCulling: 0 - probeLayerMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPathCustomFrameSettings: - bitDatas: - data1: 69456063627037 - data2: 4539628424389459968 - lodBias: 1 - lodBiasMode: 0 - maximumLODLevel: 0 - maximumLODLevelMode: 0 - renderingPathCustomFrameSettingsOverrideMask: - mask: - data1: 0 - data2: 0 - defaultFrameSettings: 0 --- !u!81 &186907184 AudioListener: m_ObjectHideFlags: 0 @@ -322,12 +340,23 @@ MonoBehaviour: TargetWidth: 1024 TargetHeight: 1024 PerPixelCorrectnessThreshold: 0.0001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 AverageCorrectnessThreshold: 0.0001 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 doBeforeTest: m_PersistentCalls: m_Calls: [] captureFramerate: 0 waitFrames: 10 + xrCompatible: 1 + xrThresholdMultiplier: 5 + checkMemoryAllocation: 1 renderPipelineAsset: {fileID: 11400000, guid: d7fe5f39d2c099a4ea1f1f610af309d7, type: 2} --- !u!1 &569810649 @@ -407,6 +436,7 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &569810651 @@ -436,39 +466,52 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 5 - directionalIntensity: 3.1415927 - punctualIntensity: 600 - areaIntensity: 200 - lightLayers: 1 m_Intensity: 3.1415927 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 - m_LightTypeExtent: 0 - m_SpotLightShape: 0 m_ShapeWidth: 0.5 m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -476,24 +519,36 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 - m_ShadowResolutionTier: 1 - m_UseShadowQualitySettings: 0 - m_CustomShadowResolution: 512 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 1 m_ShadowDimmer: 1 m_VolumetricShadowDimmer: 1 m_ShadowFadeDistance: 10000 - m_ContactShadows: 0 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 - m_ConstantBias: 0.15 + m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -509,7 +564,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!1 &840375756 GameObject: m_ObjectHideFlags: 0 @@ -542,9 +607,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Profile: {fileID: 11400000, guid: 87713e11fb7272c428e39170ebbf32c9, type: 2} m_StaticLightingSkyUniqueID: 4 - m_SkySettings: {fileID: 1986995370} - m_SkySettingsFromProfile: {fileID: 5021176665141955927, guid: 87713e11fb7272c428e39170ebbf32c9, - type: 2} + m_StaticLightingCloudsUniqueID: 0 --- !u!114 &840375758 MonoBehaviour: m_ObjectHideFlags: 0 @@ -633,10 +696,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -661,6 +726,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1529227620 MeshFilter: m_ObjectHideFlags: 0 @@ -669,119 +735,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1529227616} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &1986995370 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d877ec3e844f2ca46830012e8e79319b, type: 3} - m_Name: - m_EditorClassIdentifier: - active: 1 - m_AdvancedMode: 0 - rotation: - m_OverrideState: 0 - m_Value: 0 - min: 0 - max: 360 - skyIntensityMode: - m_OverrideState: 0 - m_Value: 0 - exposure: - m_OverrideState: 0 - m_Value: 0 - multiplier: - m_OverrideState: 0 - m_Value: 1 - min: 0 - upperHemisphereLuxValue: - m_OverrideState: 0 - m_Value: 1 - min: 0 - desiredLuxValue: - m_OverrideState: 0 - m_Value: 20000 - updateMode: - m_OverrideState: 0 - m_Value: 0 - updatePeriod: - m_OverrideState: 0 - m_Value: 0 - min: 0 - includeSunInBaking: - m_OverrideState: 0 - m_Value: 0 - planetaryRadius: - m_OverrideState: 0 - m_Value: 6378.759 - min: 0 - planetCenterPosition: - m_OverrideState: 0 - m_Value: {x: 0, y: -6378.759, z: 0} - airAttenuationDistance: - m_OverrideState: 0 - m_Value: {r: 0.17241378, g: 0.074074075, b: 0.030211482, a: 1} - hdr: 1 - showAlpha: 0 - showEyeDropper: 0 - airAlbedo: - m_OverrideState: 0 - m_Value: {r: 0.9, g: 0.9, b: 1, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 0 - airMaximumAltitude: - m_OverrideState: 0 - m_Value: 58.3 - min: 0 - aerosolAttenuationDistance: - m_OverrideState: 0 - m_Value: 0.5 - min: 0 - aerosolAlbedo: - m_OverrideState: 0 - m_Value: 0.9 - min: 0 - max: 1 - aerosolMaximumAltitude: - m_OverrideState: 0 - m_Value: 8.3 - min: 0 - aerosolAnisotropy: - m_OverrideState: 0 - m_Value: 0 - min: -1 - max: 1 - numberOfBounces: - m_OverrideState: 0 - m_Value: 8 - min: 1 - max: 10 - groundColor: - m_OverrideState: 0 - m_Value: {r: 0.17254902, g: 0.227451, b: 0.3137255, a: 1} - hdr: 0 - showAlpha: 0 - showEyeDropper: 0 - groundAlbedoTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: 703a4570dfe8b8e41aff24d2320bd405, type: 3} - groundEmissionTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: ec98521838f4e7f4a839280309cb08ab, type: 3} - planetRotation: - m_OverrideState: 0 - m_Value: {x: 180, y: -50, z: 170} - spaceEmissionTexture: - m_OverrideState: 0 - m_Value: {fileID: 8900000, guid: b0c5cbf24c773cd449436a2060083b10, type: 3} - spaceRotation: - m_OverrideState: 0 - m_Value: {x: 15, y: 30, z: 45} --- !u!1 &2144845820 GameObject: m_ObjectHideFlags: 0 @@ -826,39 +779,52 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: - m_Version: 5 - directionalIntensity: 3.1415927 - punctualIntensity: 600 - areaIntensity: 200 - lightLayers: 1 m_Intensity: 0.3141593 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 m_InnerSpotPercent: 0 + m_SpotIESCutoffPercent: 100 m_LightDimmer: 1 m_VolumetricDimmer: 1 m_LightUnit: 2 m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 m_AffectDiffuse: 1 m_AffectSpecular: 1 m_NonLightmappedOnly: 0 - m_LightTypeExtent: 0 - m_SpotLightShape: 0 m_ShapeWidth: 0.5 m_ShapeHeight: 0.5 m_AspectRatio: 1 m_ShapeRadius: 0 + m_SoftnessScale: 1 m_UseCustomSpotLightShadowCone: 0 m_CustomSpotLightShadowCone: 30 m_MaxSmoothness: 0.99 m_ApplyRangeAttenuation: 1 m_DisplayAreaLightEmissiveMesh: 0 m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 m_AreaLightShadowCone: 120 m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_FlareSize: 2 + m_FlareTint: {r: 1, g: 1, b: 1, a: 1} + m_FlareFalloff: 4 + m_SurfaceTexture: {fileID: 0} + m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_LightShadowRadius: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 m_EvsmExponent: 15 m_EvsmLightLeakBias: 0 m_EvsmVarianceBias: 0.00001 @@ -866,24 +832,36 @@ MonoBehaviour: m_LightlayersMask: 1 m_LinkShadowLayers: 1 m_ShadowNearPlane: 0.1 - m_ShadowSoftness: 0.5 m_BlockerSampleCount: 24 m_FilterSampleCount: 16 - m_MinFilterSize: 0.00001 + m_MinFilterSize: 0.01 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 - m_ShadowResolutionTier: 1 - m_UseShadowQualitySettings: 0 - m_CustomShadowResolution: 512 + m_ShadowResolution: + m_Override: 512 + m_UseOverride: 1 + m_Level: 1 m_ShadowDimmer: 1 m_VolumetricShadowDimmer: 1 m_ShadowFadeDistance: 10000 - m_ContactShadows: 0 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 m_NormalBias: 0.75 - m_ConstantBias: 0.15 + m_SlopeBias: 0.5 m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 m_ShadowCascadeRatios: - 0.05 - 0.2 @@ -899,7 +877,17 @@ MonoBehaviour: useOldInspector: 0 useVolumetric: 1 featuresFoldout: 1 - showAdditionalSettings: 0 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 + m_Version: 11 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 512 + m_ObsoleteContactShadows: 0 + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 --- !u!108 &2144845824 Light: m_ObjectHideFlags: 0 @@ -959,5 +947,6 @@ Light: m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 diff --git a/com.unity.render-pipelines.core/Runtime/Common/CoreUnsafeUtils.cs b/com.unity.render-pipelines.core/Runtime/Common/CoreUnsafeUtils.cs index e2bb6be8c0f..172687451a1 100644 --- a/com.unity.render-pipelines.core/Runtime/Common/CoreUnsafeUtils.cs +++ b/com.unity.render-pipelines.core/Runtime/Common/CoreUnsafeUtils.cs @@ -119,6 +119,9 @@ internal struct DefaultKeyGetter : IKeyGetter internal struct UintKeyGetter : IKeyGetter { public uint Get(ref uint v) { return v; } } + // Note: this is a workaround needed to circumvent some AOT issues when building for xbox + internal struct UlongKeyGetter : IKeyGetter + { public ulong Get(ref ulong v) { return v; } } /// /// Extension method to copy elements of a list into a buffer. @@ -162,6 +165,18 @@ public static unsafe void QuickSort(uint[] arr, int left, int right) CoreUnsafeUtils.QuickSort(ptr, left, right); } + /// + /// Quick Sort + /// + /// ulong array. + /// Left boundary. + /// Left boundary. + public static unsafe void QuickSort(ulong[] arr, int left, int right) + { + fixed(ulong* ptr = arr) + CoreUnsafeUtils.QuickSort(ptr, left, right); + } + /// /// Quick sort. /// diff --git a/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl b/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl index 11fc6e7fd55..9cac8d6bf74 100644 --- a/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl +++ b/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl @@ -237,7 +237,7 @@ // Wrap this function with WaveReadLaneFirst() to get scalar output. uint BitFieldExtract(uint data, uint offset, uint numBits) { - uint mask = (1u << numBits) - 1u; + uint mask = UINT_MAX >> (32u - numBits); return (data >> offset) & mask; } #endif // INTRINSIC_BITFIELD_EXTRACT @@ -248,9 +248,9 @@ uint BitFieldExtract(uint data, uint offset, uint numBits) // Wrap this function with WaveReadLaneFirst() to get scalar output. int BitFieldExtractSignExtend(int data, uint offset, uint numBits) { + uint mask = UINT_MAX >> (32u - numBits); int shifted = data >> offset; // Sign-extending (arithmetic) shift - int signBit = shifted & (1u << (numBits - 1u)); - uint mask = (1u << numBits) - 1u; + int signBit = shifted & mask; return -signBit | (shifted & mask); // Use 2-complement for negation to replicate the sign bit } @@ -541,6 +541,7 @@ real FastAtan2(real y, real x) } #if (SHADER_TARGET >= 45) +// If 'x' is not a power-of-2, the result will be truncated (e.g. log2i(3) = 1). uint FastLog2(uint x) { return firstbithigh(x); @@ -1087,7 +1088,6 @@ struct PositionInputs float3 positionWS; // World space position (could be camera-relative) float2 positionNDC; // Normalized screen coordinates within the viewport : [0, 1) (with the half-pixel offset) uint2 positionSS; // Screen space pixel coordinates : [0, NumPixels) - uint2 tileCoord; // Screen tile coordinates : [0, NumTiles) float deviceDepth; // Depth from the depth buffer : [0, 1] (typically reversed) float linearDepth; // View space Z coordinate : [Near, Far] }; @@ -1096,7 +1096,7 @@ struct PositionInputs // This allow to easily share code. // If a compute shader call this function positionSS is an integer usually calculate like: uint2 positionSS = groupId.xy * BLOCK_SIZE + groupThreadId.xy // else it is current unormalized screen coordinate like return by SV_Position -PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, uint2 tileCoord) // Specify explicit tile coordinates so that we can easily make it lane invariant for compute evaluation. +PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize) { PositionInputs posInput; ZERO_INITIALIZE(PositionInputs, posInput); @@ -1108,21 +1108,15 @@ PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, uint2 t #endif posInput.positionNDC *= invScreenSize; posInput.positionSS = uint2(positionSS); - posInput.tileCoord = tileCoord; return posInput; } -PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize) -{ - return GetPositionInput(positionSS, invScreenSize, uint2(0, 0)); -} - // For Raytracing only // This function does not initialize deviceDepth and linearDepth PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float3 positionWS) { - PositionInputs posInput = GetPositionInput(positionSS, invScreenSize, uint2(0, 0)); + PositionInputs posInput = GetPositionInput(positionSS, invScreenSize); posInput.positionWS = positionWS; return posInput; @@ -1130,9 +1124,9 @@ PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float3 // From forward // deviceDepth and linearDepth come directly from .zw of SV_Position -PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, float linearDepth, float3 positionWS, uint2 tileCoord) +PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, float linearDepth, float3 positionWS) { - PositionInputs posInput = GetPositionInput(positionSS, invScreenSize, tileCoord); + PositionInputs posInput = GetPositionInput(positionSS, invScreenSize); posInput.positionWS = positionWS; posInput.deviceDepth = deviceDepth; posInput.linearDepth = linearDepth; @@ -1140,19 +1134,13 @@ PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float d return posInput; } -PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, float linearDepth, float3 positionWS) -{ - return GetPositionInput(positionSS, invScreenSize, deviceDepth, linearDepth, positionWS, uint2(0, 0)); -} - // From deferred or compute shader // depth must be the depth from the raw depth buffer. This allow to handle all kind of depth automatically with the inverse view projection matrix. // For information. In Unity Depth is always in range 0..1 (even on OpenGL) but can be reversed. PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, - float4x4 invViewProjMatrix, float4x4 viewMatrix, - uint2 tileCoord) + float4x4 invViewProjMatrix, float4x4 viewMatrix) { - PositionInputs posInput = GetPositionInput(positionSS, invScreenSize, tileCoord); + PositionInputs posInput = GetPositionInput(positionSS, invScreenSize); posInput.positionWS = ComputeWorldSpacePosition(posInput.positionNDC, deviceDepth, invViewProjMatrix); posInput.deviceDepth = deviceDepth; posInput.linearDepth = LinearEyeDepth(posInput.positionWS, viewMatrix); @@ -1160,12 +1148,6 @@ PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float d return posInput; } -PositionInputs GetPositionInput(float2 positionSS, float2 invScreenSize, float deviceDepth, - float4x4 invViewProjMatrix, float4x4 viewMatrix) -{ - return GetPositionInput(positionSS, invScreenSize, deviceDepth, invViewProjMatrix, viewMatrix, uint2(0, 0)); -} - // The view direction 'V' points towards the camera. // 'depthOffsetVS' is always applied in the opposite direction (-V). void ApplyDepthOffsetPositionInput(float3 V, float depthOffsetVS, float3 viewForwardDir, float4x4 viewProjMatrix, inout PositionInputs posInput) @@ -1344,4 +1326,49 @@ float SharpenAlpha(float alpha, float alphaClipTreshold) // These clamping function to max of floating point 16 bit are use to prevent INF in code in case of extreme value TEMPLATE_1_REAL(ClampToFloat16Max, value, return min(value, HALF_MAX)) +uint IndexFromCoordinate(uint4 coord, uint3 dimensions) +{ + return coord.x + + coord.y * (dimensions.x) + + coord.z * (dimensions.x * dimensions.y) + + coord.w * (dimensions.x * dimensions.y * dimensions.z); +} + +uint IndexFromCoordinate(uint3 coord, uint2 dimensions) +{ + return IndexFromCoordinate(uint4(coord, 0), uint3(dimensions, 1)); +} + +uint IndexFromCoordinate(uint2 coord, uint dimensions) +{ + return IndexFromCoordinate(uint4(coord, 0, 0), uint3(dimensions, 1, 1)); +} + +uint4 CoordinateFromIndex(uint index, uint3 dimensions) +{ + uint cube = (index ) / (dimensions.x * dimensions.y * dimensions.z); + uint plane = (index % (dimensions.x * dimensions.y * dimensions.z)) / (dimensions.x * dimensions.y); + uint row = (index % (dimensions.x * dimensions.y) ) / (dimensions.x); + uint column = (index % (dimensions.x)); + + return uint4(column, row, plane, cube); +} + +uint3 CoordinateFromIndex(uint index, uint2 dimensions) +{ + uint plane = (index ) / (dimensions.x * dimensions.y); + uint row = (index % (dimensions.x * dimensions.y)) / (dimensions.x); + uint column = (index % (dimensions.x)); + + return uint3(column, row, plane); +} + +uint2 CoordinateFromIndex(uint index, uint dimensions) +{ + uint row = index / dimensions.x; + uint column = index % dimensions.x; + + return uint2(column, row); +} + #endif // UNITY_COMMON_INCLUDED diff --git a/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl b/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl index cb7e9064bce..7dee349aa56 100644 --- a/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl +++ b/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl @@ -431,10 +431,10 @@ real3x3 GetLocalFrame(real3 localZ, real3 localX) // Construct a right-handed view-dependent orthogonal basis around the normal: // b0-b2 is the view-normal aka reflection plane. -real3x3 GetOrthoBasisViewNormal(real3 V, real3 N, real unclampedNdotV, bool testSingularity = false) +real3x3 GetOrthoBasisViewNormal(real3 V, real3 N, real unclampedNdotV) { real3x3 orthoBasisViewNormal; - if (testSingularity && (abs(1.0 - unclampedNdotV) <= FLT_EPS)) + if (abs(unclampedNdotV) >= (1 - 16 * REAL_EPS)) // 0.999999; 8 ULPs, should be enough { // In this case N == V, and azimuth orientation around N shouldn't matter for the caller, // we can use any quaternion-based method, like Frisvad or Reynold's (Pixar): diff --git a/com.unity.render-pipelines.core/ShaderLibrary/Macros.hlsl b/com.unity.render-pipelines.core/ShaderLibrary/Macros.hlsl index 3981ef50a88..f96b7f4238d 100644 --- a/com.unity.render-pipelines.core/ShaderLibrary/Macros.hlsl +++ b/com.unity.render-pipelines.core/ShaderLibrary/Macros.hlsl @@ -46,6 +46,7 @@ #define HALF_MIN_SQRT 0.0078125 // 2^-7 == sqrt(HALF_MIN), useful for ensuring HALF_MIN after x^2 #define HALF_MAX 65504.0 #define UINT_MAX 0xFFFFFFFFu +#define UINT16_MAX 0xFFFFu #define INT_MAX 0x7FFFFFFF diff --git a/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs b/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs index 44c7bcc8432..33234a6d66f 100644 --- a/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs +++ b/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs @@ -94,10 +94,6 @@ protected override bool DoShadersStripper(HDRenderPipelineAsset hdrpAsset, Shade // If transparent we don't need the motion vector pass if (isMotionPass) return true; - - // If we are transparent we use cluster lighting and not tile lighting - if (inputData.shaderKeywordSet.IsEnabled(m_TileLighting)) - return true; } else // Opaque { @@ -105,11 +101,6 @@ protected override bool DoShadersStripper(HDRenderPipelineAsset hdrpAsset, Shade bool isTransparentForwardPass = isTransparentPostpass || isTransparentBackface || isTransparentPrepass || isDistortionPass; if (isTransparentForwardPass) return true; - - // TODO: Should we remove Cluster version if we know MSAA is disabled ? This prevent to manipulate LightLoop Settings (useFPTL option) - // For now comment following code - // if (inputData.shaderKeywordSet.IsEnabled(m_ClusterLighting) && !hdrpAsset.currentPlatformRenderPipelineSettings.supportMSAA) - // return true; } // SHADOW diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/BaseShaderPreprocessor.cs b/com.unity.render-pipelines.high-definition/Editor/Material/BaseShaderPreprocessor.cs index 25bcad959fa..92ca4cc9e22 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/BaseShaderPreprocessor.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/BaseShaderPreprocessor.cs @@ -36,8 +36,6 @@ abstract class BaseShaderPreprocessor protected ShaderKeyword m_Transparent; protected ShaderKeyword m_AlphaTestOn; protected ShaderKeyword m_DebugDisplay; - protected ShaderKeyword m_TileLighting; - protected ShaderKeyword m_ClusterLighting; protected ShaderKeyword m_LodFadeCrossFade; protected ShaderKeyword m_DecalsOFF; protected ShaderKeyword m_Decals3RT; @@ -71,8 +69,6 @@ public BaseShaderPreprocessor() m_Transparent = new ShaderKeyword("_SURFACE_TYPE_TRANSPARENT"); m_AlphaTestOn = new ShaderKeyword("_ALPHATEST_ON"); m_DebugDisplay = new ShaderKeyword("DEBUG_DISPLAY"); - m_TileLighting = new ShaderKeyword("USE_FPTL_LIGHTLIST"); - m_ClusterLighting = new ShaderKeyword("USE_CLUSTERED_LIGHTLIST"); m_LodFadeCrossFade = new ShaderKeyword("LOD_FADE_CROSSFADE"); m_DecalsOFF = new ShaderKeyword("DECALS_OFF"); m_Decals3RT = new ShaderKeyword("DECALS_3RT"); diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/LitShaderPreprocessor.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/LitShaderPreprocessor.cs index 8580096c824..4bf5df77c1e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Lit/LitShaderPreprocessor.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Lit/LitShaderPreprocessor.cs @@ -89,10 +89,6 @@ protected override bool DoShadersStripper(HDRenderPipelineAsset hdrpAsset, Shade { if (hdrpAsset.currentPlatformRenderPipelineSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly) { - // When we are in deferred, we only support tile lighting - if (inputData.shaderKeywordSet.IsEnabled(m_ClusterLighting)) - return true; - bool isForwardPass = snippet.passName == "Forward"; if (isForwardPass && !inputData.shaderKeywordSet.IsEnabled(m_DebugDisplay)) return true; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs index 25cf290678c..bcdd0e2afaa 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs @@ -863,7 +863,6 @@ static class CoreDefines { CoreKeywordDescriptors.SupportBlendModePreserveSpecularLighting, 1 }, { CoreKeywordDescriptors.HasLightloop, 1 }, { RayTracingQualityNode.GetRayTracingQualityKeyword(), 0 }, - // { CoreKeywordDescriptors.LightList, 1 }, // BackThenFront Transparent use #define USE_CLUSTERED_LIGHTLIST }; } #endregion diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs index e8941a4830c..5d09f8a615c 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.Skin.cs @@ -217,6 +217,7 @@ public class GeneralSection public static readonly GUIContent maxEnvContent = EditorGUIUtility.TrTextContent("Maximum Reflection Probes on Screen", "Sets the maximum number of Planar and Reflection Probes HDRP can handle on screen at once."); public static readonly GUIContent maxDecalContent = EditorGUIUtility.TrTextContent("Maximum Clustered Decals on Screen", "Sets the maximum number of decals that can affect transparent GameObjects on screen."); public static readonly GUIContent maxLightPerCellContent = EditorGUIUtility.TrTextContent("Maximum Lights per Cell (Ray Tracing)", "Sets the maximum number of lights HDRP can handle in each cell of the ray tracing light cluster."); + public static readonly GUIContent tileEntryLimitContent = EditorGUIUtility.TrTextContent("Tile Entry Limit", "Maximum number of bounded entities (total count summed over all entity categories) contained within a single screen tile. Determines the memory budget of tiled lighting. For each category, the actual number of entities is rounded up to the nearest multiple of 32. For instance, if you have 1 point light and 2 reflection probes, the limit must be RoundUp(1, 32) + RoundUp(2, 32) = 32 + 32 = 64."); public static readonly GUIContent resolutionContent = EditorGUIUtility.TrTextContent("Resolution", "Specifies the resolution of the shadow Atlas."); public static readonly GUIContent cachedShadowAtlasResolution = EditorGUIUtility.TrTextContent("Cached Shadow Atlas Resolution", "Specifies the resolution of the shadow Atlas that contains the cached shadow maps."); diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs index a09a4cfa719..f7c7b4946bc 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs @@ -567,6 +567,11 @@ static void Drawer_SectionLightLoop(SerializedHDRenderPipelineAsset serialized, EditorGUILayout.DelayedIntField(serialized.renderPipelineSettings.lightLoopSettings.maxLightsPerClusterCell, Styles.maxLightPerCellContent); if (EditorGUI.EndChangeCheck()) serialized.renderPipelineSettings.lightLoopSettings.maxLightsPerClusterCell.intValue = Mathf.Clamp(serialized.renderPipelineSettings.lightLoopSettings.maxLightsPerClusterCell.intValue, 1, HDRenderPipeline.k_MaxLightsPerClusterCell); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.DelayedIntField(serialized.renderPipelineSettings.lightLoopSettings.tileEntryLimit, Styles.tileEntryLimitContent); + if (EditorGUI.EndChangeCheck()) + serialized.renderPipelineSettings.lightLoopSettings.tileEntryLimit.intValue = Mathf.Max(0, serialized.renderPipelineSettings.lightLoopSettings.tileEntryLimit.intValue); } static void Drawer_SectionDynamicResolutionSettings(SerializedHDRenderPipelineAsset serialized, Editor owner) diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedGlobalLightLoopSettings.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedGlobalLightLoopSettings.cs index d6e9dc8a54e..e8e97139f78 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedGlobalLightLoopSettings.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/SerializedGlobalLightLoopSettings.cs @@ -29,6 +29,7 @@ class SerializedGlobalLightLoopSettings public SerializedProperty maxDecalsOnScreen; public SerializedProperty maxPlanarReflectionOnScreen; public SerializedProperty maxLightsPerClusterCell; + public SerializedProperty tileEntryLimit; public SerializedProperty maxDensityVolumeSize; public SerializedProperty maxDensityVolumesOnScreen; @@ -62,6 +63,7 @@ public SerializedGlobalLightLoopSettings(SerializedProperty root) maxDecalsOnScreen = root.Find((GlobalLightLoopSettings s) => s.maxDecalsOnScreen); maxPlanarReflectionOnScreen = root.Find((GlobalLightLoopSettings s) => s.maxPlanarReflectionOnScreen); maxLightsPerClusterCell = root.Find((GlobalLightLoopSettings s) => s.maxLightsPerClusterCell); + tileEntryLimit = root.Find((GlobalLightLoopSettings s) => s.tileEntryLimit); maxDensityVolumeSize = root.Find((GlobalLightLoopSettings s) => s.maxDensityVolumeSize); maxDensityVolumesOnScreen = root.Find((GlobalLightLoopSettings s) => s.maxDensityVolumesOnScreen); diff --git a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/Templates/PlanarPrimitive/PassForward.template b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/Templates/PlanarPrimitive/PassForward.template index afa2f06e095..133d738711a 100644 --- a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/Templates/PlanarPrimitive/PassForward.template +++ b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/Templates/PlanarPrimitive/PassForward.template @@ -9,7 +9,7 @@ Pass #define UNITY_MATERIAL_LIT #define LIGHTLOOP_TILE_PASS ${VFXHDRPForwardDefines} - #pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST + #define FINE_BINNING #pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH #pragma multi_compile _ DEBUG_DISPLAY //#pragma enable_d3d11_debug_symbols diff --git a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLit.template b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLit.template index e36142564e1..6abcf406a7b 100644 --- a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLit.template +++ b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLit.template @@ -2,7 +2,7 @@ #ifndef VFX_SHADERGRAPH -void VFXGetHDRPLitData(out SurfaceData surfaceData, out BuiltinData builtinData, out BSDFData bsdfData, out PreLightData preLightData, VFX_VARYING_PS_INPUTS i, float3 normalWS, const VFXUVData uvData, uint2 tileIndex) +void VFXGetHDRPLitData(out SurfaceData surfaceData, out BuiltinData builtinData, out BSDFData bsdfData, out PreLightData preLightData, VFX_VARYING_PS_INPUTS i, float3 normalWS, const VFXUVData uvData) { #if HDRP_MATERIAL_TYPE_TRANSLUCENT ${VFXLoadParameter:{diffusionProfileHash}} // Loads diffusion profile @@ -12,7 +12,7 @@ void VFXGetHDRPLitData(out SurfaceData surfaceData, out BuiltinData builtinData, float3 posRWS = VFXGetPositionRWS(i); float4 posSS = i.VFX_VARYING_POSCS; - PositionInputs posInput = GetPositionInput(posSS.xy, _ScreenSize.zw, posSS.z, posSS.w, posRWS, tileIndex); + PositionInputs posInput = GetPositionInput(posSS.xy, _ScreenSize.zw, posSS.z, posSS.w, posRWS); float alpha; surfaceData = VFXGetSurfaceData(i,normalWS,uvData,diffusionProfileHash,alpha); @@ -34,7 +34,7 @@ void VFXGetHDRPLitData(out SurfaceData surfaceData, out BuiltinData builtinData, BSDFData bsdfData = (BSDFData)0; PreLightData preLightData = (PreLightData)0; preLightData.diffuseFGD = 1.0f; - VFXGetHDRPLitData(surfaceData,builtinData,bsdfData,preLightData,i,normalWS,uvData,uint2(0,0)); + VFXGetHDRPLitData(surfaceData,builtinData,bsdfData,preLightData,i,normalWS,uvData); } #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs index 4169bf8f7f3..b267261d4e4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs @@ -153,6 +153,9 @@ public class DebugDisplaySettings : IDebugData static GUIContent[] s_TileAndClusterDebugStrings = null; static int[] s_TileAndClusterDebugValues = null; + static GUIContent[] s_BoundedEntityCategoryDebugNames = null; + static int[] s_BoundedEntityCategoryDebugValues = null; + static List s_CameraNames = new List(); static GUIContent[] s_CameraNamesStrings = null; static int[] s_CameraNamesValues = null; @@ -256,6 +259,7 @@ public class DebugData internal int shadowDebugModeEnumIndex; internal int tileClusterDebugByCategoryEnumIndex; internal int clusterDebugModeEnumIndex; + internal int binnedDebugModeEnumIndex; internal int lightVolumeDebugTypeEnumIndex; internal int renderingFulscreenDebugModeEnumIndex; internal int terrainTextureEnumIndex; @@ -313,6 +317,8 @@ internal DebugDisplaySettings() FillTileClusterDebugEnum(); + FillBoundedEntityCategoryDebugNamesAndValues(); + s_MaterialFullScreenDebugStrings[(int)FullScreenDebugMode.ValidateDiffuseColor - ((int)FullScreenDebugMode.MinMaterialFullScreenDebug)] = new GUIContent("Diffuse Color"); s_MaterialFullScreenDebugStrings[(int)FullScreenDebugMode.ValidateSpecularColor - ((int)FullScreenDebugMode.MinMaterialFullScreenDebug)] = new GUIContent("Metal or SpecularColor"); @@ -1320,7 +1326,7 @@ void RegisterLightingDebug() data.fullScreenContactShadowLightIndex = value; }, min = () => - 1, // -1 will display all contact shadow - max = () => LightDefinitions.s_LightListMaxPrunedEntries - 1 + max = () => TiledLightingConstants.s_LightListMaxPrunedEntries - 1 }, } }); @@ -1347,6 +1353,65 @@ void RegisterLightingDebug() list.Add(clusterDebugContainer); } + list.Add(new DebugUI.BoolField + { + displayName = "Binned Lighting Debug", + getter = () => data.lightingDebugSettings.debugBinnedLighting, + setter = value => data.lightingDebugSettings.debugBinnedLighting = value, // TODO: check FrameSettings to make sure that binned lighting is enabled? + onValueChanged = RefreshLightingDebug + }); + + if (data.lightingDebugSettings.debugBinnedLighting) + { + var debugContainer = new DebugUI.Container(); + + debugContainer.children.Add(new DebugUI.EnumField + { + displayName = "Entity Category", + getter = () => (int)data.lightingDebugSettings.selectedEntityCategory, + setter = value => data.lightingDebugSettings.selectedEntityCategory = (BoundedEntityCategory)value, + enumNames = s_BoundedEntityCategoryDebugNames, + enumValues = s_BoundedEntityCategoryDebugValues, + getIndex = () => (int)data.lightingDebugSettings.selectedEntityCategory, // TODO: can this code duplication be avoided? + setIndex = value => data.lightingDebugSettings.selectedEntityCategory = (BoundedEntityCategory)value + }); + + debugContainer.children.Add(new DebugUI.EnumField + { + displayName = "Binned Debug Mode", + getter = () => (int)data.lightingDebugSettings.binnedDebugMode, + setter = value => data.lightingDebugSettings.binnedDebugMode = (BinnedDebugMode)value, + autoEnum = typeof(BinnedDebugMode), + onValueChanged = RefreshLightingDebug, + getIndex = () => data.binnedDebugModeEnumIndex, + setIndex = value => data.binnedDebugModeEnumIndex = value + }); + + if (data.lightingDebugSettings.binnedDebugMode == BinnedDebugMode.VisualizeSlice) + { + debugContainer.children.Add(new DebugUI.IntField + { + displayName = "Start bucket", + getter = () => data.lightingDebugSettings.startBucket, + setter = value => data.lightingDebugSettings.startBucket = value, + min = () => 0, + max = () => TiledLightingConstants.s_zBinCount - 1, + incStep = 1 + }); + + debugContainer.children.Add(new DebugUI.IntField + { + displayName = "End bucket", + getter = () => data.lightingDebugSettings.endBucket, + setter = value => data.lightingDebugSettings.endBucket = value, + min = () => 0, + max = () => TiledLightingConstants.s_zBinCount - 1, + incStep = 1 + }); + } + list.Add(debugContainer); + } + list.Add(new DebugUI.BoolField { displayName = "Display Sky Reflection", getter = () => data.lightingDebugSettings.displaySkyReflection, setter = value => data.lightingDebugSettings.displaySkyReflection = value, onValueChanged = RefreshLightingDebug }); if (data.lightingDebugSettings.displaySkyReflection) { @@ -1878,6 +1943,17 @@ void FillTileClusterDebugEnum() s_TileAndClusterDebugValues = (int[])Enum.GetValues(typeof(TileClusterCategoryDebug)); } + void FillBoundedEntityCategoryDebugNamesAndValues() + { + string[] names = Enum.GetNames(typeof(BoundedEntityCategory)); + + s_BoundedEntityCategoryDebugNames = names + .Select(t => new GUIContent(t)) + .ToArray(); + + s_BoundedEntityCategoryDebugValues = (int[])Enum.GetValues(typeof(BoundedEntityCategory)); + } + static string FormatVector(Vector3 v) { return string.Format("({0:F6}, {1:F6}, {2:F6})", v.x, v.y, v.z); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugViewTiles.shader b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugViewTiles.shader index 049b0eeb7b3..2d5fc6ae426 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugViewTiles.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugViewTiles.shader @@ -17,11 +17,12 @@ Shader "Hidden/HDRP/DebugViewTiles" #pragma vertex Vert #pragma fragment Frag - #pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST #pragma multi_compile SHOW_LIGHT_CATEGORIES SHOW_FEATURE_VARIANTS #pragma multi_compile _ IS_DRAWPROCEDURALINDIRECT #pragma multi_compile _ DISABLE_TILE_MODE + #define FINE_BINNING + //------------------------------------------------------------------------------------- // Include //------------------------------------------------------------------------------------- @@ -44,11 +45,22 @@ Shader "Hidden/HDRP/DebugViewTiles" // variable declaration //------------------------------------------------------------------------------------- + // TEMP: in order that this file compile + uint GetTileSize() { return 8; } + uint _ViewTilesFlags; uint _NumTiles; float _ClusterDebugDistance; int _ClusterDebugMode; + // Binned lighting ("SHOW_LIGHT_CATEGORIES") + int _SelectedEntityCategory; + int _SelectedEntityCategoryBudget; + + int _BinnedDebugMode; + int _StartBucket; + int _EndBucket; + StructuredBuffer g_TileList; Buffer g_DispatchIndirectBuffer; @@ -194,96 +206,110 @@ Shader "Hidden/HDRP/DebugViewTiles" // For debug shaders, Viewport can be at a non zero (x,y) but the pipeline render targets all starts at (0,0) // input.positionCS in in pixel coordinate relative to the render target origin so they will be offsted compared to internal render textures // To solve that, we compute pixel coordinates from full screen quad texture coordinates which start correctly at (0,0) + #define DEBUG_TILE_SIZE 16 // 8x8 is not visible in the debug menu, so we need to use 16x16 to display something, which is incorrect uint2 pixelCoord = uint2(input.texcoord.xy * _ScreenSize.xy); - - float depth = GetTileDepth(pixelCoord); - - PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, pixelCoord / GetTileSize()); - - int2 tileCoord = (float2)pixelCoord / GetTileSize(); - int2 mouseTileCoord = _MousePixelCoord.xy / GetTileSize(); - int2 offsetInTile = pixelCoord - tileCoord * GetTileSize(); - - int n = 0; -#if defined(SHOW_LIGHT_CATEGORIES) && !defined(LIGHTLOOP_DISABLE_TILE_AND_CLUSTER) - for (int category = 0; category < LIGHTCATEGORY_COUNT; category++) + + int2 tileCoord = (float2)pixelCoord / DEBUG_TILE_SIZE; + int2 sampleCoord = tileCoord * DEBUG_TILE_SIZE + (DEBUG_TILE_SIZE / 2); // sample the middle of the DEBUG_TILE_SIZE area + float depth = GetTileDepth(sampleCoord); + PositionInputs posInput = GetPositionInput(sampleCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + int2 offsetInTile = pixelCoord - tileCoord * DEBUG_TILE_SIZE; + uint tile = ComputeTileIndex(posInput.positionSS); + + uint2 zBinRange; + if (_BinnedDebugMode == BINNEDDEBUGMODE_VISUALIZE_OPAQUE) { - uint mask = 1u << category; - if (mask & _ViewTilesFlags) - { - uint start; - uint count; - GetCountAndStart(posInput, category, start, count); - n += count; - } + zBinRange.x = ComputeZBinIndex(posInput.linearDepth); + zBinRange.y = zBinRange.x; + } + else + { + zBinRange.x = _StartBucket; + zBinRange.y = _EndBucket; } - if (n == 0) - n = -1; -#else - n = input.variant; -#endif float4 result = float4(0.0, 0.0, 0.0, 0.0); -#ifdef DISABLE_TILE_MODE - // Tile debug mode is not supported in MSAA (only cluster) - int maxLights = 32; - const int textSize = 23; - const int text[textSize] = {'N', 'o', 't', ' ', 's', 'u', 'p', 'p', 'o', 'r', 't', 'e', 'd', ' ', 'w', 'i', 't', 'h', ' ', 'M', 'S', 'A', 'A'}; - if (input.positionCS.y < DEBUG_FONT_TEXT_HEIGHT) + uint entityCount = 0; + #if defined(SHOW_LIGHT_CATEGORIES) + if (_SelectedEntityCategory < BOUNDEDENTITYCATEGORY_COUNT) { - float4 result2 = float4(.1,.1,.1,.9); + EntityLookupParameters params = InitializeEntityLookup(tile, zBinRange, (uint)_SelectedEntityCategory); - uint2 unormCoord = input.positionCS.xy; - float3 textColor = float3(0.5f, 0.5f, 0.5f); - uint2 textLocation = uint2(0, 0); - for (int i = 0; i < textSize; i++) - DrawCharacter(text[i], textColor, unormCoord, textLocation, result2.rgb, 1, text[i] >= 97 ? 7 : 10); + uint i = 0; - result = AlphaBlend(result, result2); + uint unused; + while (TryFindEntityIndex(i, params, unused)) + { + entityCount++; + i++; + } } -#else + #else + entityCount = input.variant; + #endif + // Tile overlap counter - if (n >= 0) + if (entityCount > 0) { - result = OverlayHeatMap(int2(posInput.positionSS.xy) & (GetTileSize() - 1), n); + result = OverlayHeatMap(pixelCoord.xy & (DEBUG_TILE_SIZE - 1), entityCount); } - -#if defined(SHOW_LIGHT_CATEGORIES) && !defined(LIGHTLOOP_DISABLE_TILE_AND_CLUSTER) + + +#if defined(SHOW_LIGHT_CATEGORIES) // Highlight selected tile + int2 mouseTileCoord = _MousePixelCoord.xy / DEBUG_TILE_SIZE; if (all(mouseTileCoord == tileCoord)) { - bool border = any(offsetInTile == 0 || offsetInTile == (int)GetTileSize() - 1); + bool border = any(offsetInTile == 0 || offsetInTile == DEBUG_TILE_SIZE - 1); float4 result2 = float4(1.0, 1.0, 1.0, border ? 1.0 : 0.5); result = AlphaBlend(result, result2); } // Print light lists for selected tile at the bottom of the screen int maxLights = 32; - if (tileCoord.y < LIGHTCATEGORY_COUNT && tileCoord.x < maxLights + 3) + if (tileCoord.y < BOUNDEDENTITYCATEGORY_COUNT && tileCoord.x < maxLights + 3) { - float depthMouse = GetTileDepth(_MousePixelCoord.xy); - - PositionInputs mousePosInput = GetPositionInput(_MousePixelCoord.xy, _ScreenSize.zw, depthMouse, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, mouseTileCoord); + uint2 sampleCoord = mouseTileCoord * DEBUG_TILE_SIZE + (DEBUG_TILE_SIZE / 2); // sample in the middle of DEBUG_TILE_SIZE area + float depthMouse = GetTileDepth(sampleCoord); - uint category = (LIGHTCATEGORY_COUNT - 1) - tileCoord.y; - uint start; - uint count; + PositionInputs mousePosInput = GetPositionInput(sampleCoord, _ScreenSize.zw, depthMouse, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + uint tile = ComputeTileIndex(mousePosInput.positionSS); + uint2 zBinRange; + if (_BinnedDebugMode == BINNEDDEBUGMODE_VISUALIZE_OPAQUE) + { + zBinRange.x = ComputeZBinIndex(mousePosInput.linearDepth); + zBinRange.y = zBinRange.x; + } + else + { + zBinRange.x = _StartBucket; + zBinRange.y = _EndBucket; + } - GetCountAndStart(mousePosInput, category, start, count); + uint category = (BOUNDEDENTITYCATEGORY_COUNT - 1) - tileCoord.y; + int lightListIndex = tileCoord.x - 2; + uint entityIndex = 0; + int n = -1; + int i = 0; + entityCount = 0; + EntityLookupParameters params = InitializeEntityLookup(tile, zBinRange, category); + while (TryFindEntityIndex(i, params, entityIndex)) + { + if (entityCount == lightListIndex) + { + n = entityIndex; + } + entityCount++; + i++; + } float4 result2 = float4(.1,.1,.1,.9); int2 fontCoord = int2(pixelCoord.x, offsetInTile.y); - int lightListIndex = tileCoord.x - 2; - int n = -1; if(tileCoord.x == 0) { - n = (int)count; - } - else if(lightListIndex >= 0 && lightListIndex < (int)count) - { - n = FetchIndex(start, lightListIndex); + n = (int)entityCount; } if (n >= 0) @@ -297,8 +323,6 @@ Shader "Hidden/HDRP/DebugViewTiles" result = AlphaBlend(result, result2); } #endif -#endif - return result; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/LightingDebug.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/LightingDebug.cs index 751c20237d0..25f245a17ae 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Debug/LightingDebug.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/LightingDebug.cs @@ -368,6 +368,13 @@ public bool IsDebugDisplayEnabled() /// Distance at which clusters will be visualized. public float clusterDebugDistance = 1.0f; + /// Binned lighting debug mode. + public bool debugBinnedLighting = false; + public BoundedEntityCategory selectedEntityCategory = BoundedEntityCategory.PunctualLight; + public BinnedDebugMode binnedDebugMode = BinnedDebugMode.VisualizeOpaque; + public int startBucket = 0; + public int endBucket = TiledLightingConstants.s_zBinCount - 1; + // Internal APIs internal bool IsDebugDisplayRemovePostprocess() { diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/AtmosphericScattering.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/AtmosphericScattering.hlsl index a4a651e75cd..a7a021f02e7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/AtmosphericScattering.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/AtmosphericScattering.hlsl @@ -123,7 +123,7 @@ void EvaluatePbrAtmosphere(float3 worldSpaceCameraPos, float3 V, float distAlong for (uint i = 0; i < _DirectionalLightCount; i++) { - DirectionalLightData light = _DirectionalLightDatas[i]; + DirectionalLightData light = _DirectionalLightData[i]; // Use scalar or integer cores (more efficient). bool interactsWithSky = asint(light.distanceFromCamera) >= 0; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs index 42825e703ab..109562f1ec0 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/AtmosphericScattering/Fog.cs @@ -221,7 +221,10 @@ void UpdateShaderVariablesGlobalCBFogParameters(ref ShaderVariablesGlobal cb, HD cb._MipFogParameters = new Vector4(mipFogNear.value, mipFogFar.value, mipFogMaxMip.value, 0.0f); DensityVolumeArtistParameters param = new DensityVolumeArtistParameters(albedo.value, meanFreePath.value, anisotropy.value); - DensityVolumeEngineData data = param.ConvertToEngineData(); + + // What's this? There is no density volume here. + OrientedBBox invalidOBB = new OrientedBBox(); + DensityVolumeData data = param.ConvertToEngineData(invalidOBB); cb._HeightFogBaseScattering = data.scattering; cb._HeightFogBaseExtinction = data.extinction; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Deferred.shader b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Deferred.shader index 0525140f321..cba59796924 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Deferred.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Deferred.shader @@ -32,8 +32,6 @@ Shader "Hidden/HDRP/Deferred" #pragma vertex Vert #pragma fragment Frag - #define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - // Split lighting is utilized during the SSS pass. #pragma multi_compile_fragment _ OUTPUT_SPLIT_LIGHTING #pragma multi_compile_fragment _ SHADOWS_SHADOWMASK @@ -42,7 +40,8 @@ Shader "Hidden/HDRP/Deferred" #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #define USE_FPTL_LIGHTLIST // deferred opaque always use FPTL + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING //------------------------------------------------------------------------------------- // Include @@ -129,9 +128,12 @@ Shader "Hidden/HDRP/Deferred" // input.positionCS is SV_Position float depth = LoadCameraDepth(input.positionCS.xy); - PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, uint2(input.positionCS.xy) / GetTileSize()); + PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); float3 V = GetWorldSpaceNormalizeViewDir(posInput.positionWS); + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); + BSDFData bsdfData; BuiltinData builtinData; DECODE_FROM_GBUFFER(posInput.positionSS, UINT_MAX, bsdfData, builtinData); @@ -139,7 +141,7 @@ Shader "Hidden/HDRP/Deferred" PreLightData preLightData = GetPreLightData(V, posInput, bsdfData); LightLoopOutput lightLoopOutput; - LightLoop(V, posInput, preLightData, bsdfData, builtinData, LIGHT_FEATURE_MASK_FLAGS_OPAQUE, lightLoopOutput); + LightLoop(V, posInput, tile, zBin, preLightData, bsdfData, builtinData, LIGHT_FEATURE_MASK_FLAGS_OPAQUE, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs index 3768b404637..60cb67228b1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Light/HDAdditionalLightData.cs @@ -1939,7 +1939,7 @@ internal void EvaluateShadowState(HDCamera hdCamera, in ProcessedLightData proce bool validShadow = false; if (processedLight.gpuLightType == GPULightType.Point || processedLight.gpuLightType == GPULightType.Rectangle - || (processedLight.gpuLightType == GPULightType.Spot && processedLight.lightVolumeType == LightVolumeType.Cone)) + || processedLight.gpuLightType == GPULightType.Spot) { validShadow = true; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs index 751a1061b1a..713fdd1a1dc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs @@ -6,7 +6,7 @@ namespace UnityEngine.Rendering.HighDefinition // Caution: Order is important and is use for optimization in light loop [GenerateHLSL] - enum GPULightType + enum GPULightType // Rename to "LightType" { Directional, Point, @@ -20,6 +20,9 @@ enum GPULightType // Currently not supported in real time (just use for reference) Disc, // Sphere, + CubemapReflection, + PlanarReflection, + Count }; static class GPULightTypeExtension @@ -201,6 +204,7 @@ enum EnvConstants struct EnvLightData { // Packing order depends on chronological access to avoid cache misses + public uint logVolume; public uint lightLayers; // Proxy properties public Vector3 capturePositionRWS; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl index 1bba5923ff4..c16c5956cce 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl @@ -15,6 +15,9 @@ #define GPULIGHTTYPE_TUBE (5) #define GPULIGHTTYPE_RECTANGLE (6) #define GPULIGHTTYPE_DISC (7) +#define GPULIGHTTYPE_CUBEMAP_REFLECTION (8) +#define GPULIGHTTYPE_PLANAR_REFLECTION (9) +#define GPULIGHTTYPE_COUNT (10) // // UnityEngine.Rendering.HighDefinition.GPUImageBasedLightingType: static fields @@ -129,6 +132,7 @@ struct LightData // PackingRules = Exact struct EnvLightData { + uint logVolume; uint lightLayers; float3 capturePositionRWS; int influenceShapeType; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl new file mode 100644 index 00000000000..629a6e900b5 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl @@ -0,0 +1,391 @@ +#ifndef UNITY_CLIPPINGUTILITIES_INCLUDED +#define UNITY_CLIPPINGUTILITIES_INCLUDED + +float2 ClosestPointAaBb(float2 pt, float2 aaBbMinPt, float2 aaBbMaxPt) +{ + return clamp(pt, aaBbMinPt, aaBbMaxPt); +} + +float SqDistToClosestPointAaBb(float2 pt, float2 aaBbMinPt, float2 aaBbMaxPt) +{ + float2 qt = ClosestPointAaBb(pt, aaBbMinPt, aaBbMaxPt); + + return dot(pt - qt, pt - qt); +} + +struct ClipVertex +{ + float4 pt; // Homogeneous coordinate after perspective + float bc; // Boundary coordinate with respect to the plane 'p' +}; + +float4 CreateClipPlane(uint p, float3 cubeMin, float3 cubeMax) +{ + bool evenPlane = (p & 1) == 0; + float s = evenPlane ? 1 : -1; + float3 distances = evenPlane ? cubeMin : cubeMax; + float d = distances[p / 2]; + + float3 n; +#if 0 + n = 0; + n[p / 2] = s; // Doesn't compile... +#else + n.x = (0 == (p / 2)) ? s : 0; + n.y = (1 == (p / 2)) ? s : 0; + n.z = (2 == (p / 2)) ? s : 0; +#endif + + return float4(n, -s * d); // Normal points inwards +} + +ClipVertex CreateClipVertex(float4 vert, float4 plane) +{ + ClipVertex cv; + + cv.pt = vert; + cv.bc = dot(vert, plane); + + return cv; +} + +float4 IntersectEdgeAgainstPlane(ClipVertex v0, ClipVertex v1) +{ + float alpha = saturate(v0.bc * rcp(v0.bc - v1.bc)); // Guaranteed to lie between 0 and 1 + + return lerp(v0.pt, v1.pt, alpha); +} + +#define NUM_VERTS (8) // The bounding volume is a frustum (+ a sphere) +#define NUM_FACES (6) // It has 6 quads +#define MAX_CLIP_VERTS (4 + NUM_CLIP_PLANES) +#define THREADS_PER_GROUP (64) +#define THREADS_PER_ENTITY (4) // Set to 1 for debugging +#define ENTITIES_PER_GROUP (THREADS_PER_GROUP / THREADS_PER_ENTITY) +#define VERTS_PER_GROUP (NUM_VERTS * ENTITIES_PER_GROUP) +#define VERTS_PER_THREAD (NUM_VERTS / THREADS_PER_ENTITY) +#define FACES_PER_THREAD (DIV_ROUND_UP(NUM_FACES, THREADS_PER_ENTITY)) +#define VERTS_PER_FACE (4) + +#define IS_POW2(X) (( (X) & ( -1 + (X) )) == 0) +#define IS_NOT_POW2(X) (( (X) & ( -1 + (X) )) != 0) + +// (Sep 16, 2020) +// Improve the quality of generated code at the expense of readability. +// Remove when the shader compiler is clever enough to perform this optimization for us. +#if IS_NOT_POW2(MAX_CLIP_VERTS) + #define OBTUSE_COMPILER +#endif + +#if (defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE)) + #define ENABLE_D3D12_ASYNC_CRASH_WORKAROUND +#endif + +#ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + // Some shaders crash when running async with the D3D12 API. + // The issue is due to Unity's compiler stack generating shaders that "spill" registers. + // Apparently, that is illegal for shaders running async. + // There is nothing wrong with the shader code, the compiler stack is simply unaware + // of this API restriction, so it generates invalid code. + // Real fix: update the compiler stack. + // Workaround: make shaders use fewer registers so that the compiler is less likely to spill. + // Issues: *any* changes to the shader code or the compiler stack (different compiler options, + // updated compiler, new hardware, new drivers, etc.) can cause another spill. + // Then there is the performance cost. Allocating a huge amount of groupshared memory + // reduces occupancy. Accessing groupshared memory is also 2 orders of magnitude slower + // than accessing a register (but this latency can be partially hidden). + + groupshared float gs_VertexRingBufferX[MAX_CLIP_VERTS * THREADS_PER_GROUP]; + groupshared float gs_VertexRingBufferY[MAX_CLIP_VERTS * THREADS_PER_GROUP]; + groupshared float gs_VertexRingBufferZ[MAX_CLIP_VERTS * THREADS_PER_GROUP]; + groupshared float gs_VertexRingBufferW[MAX_CLIP_VERTS * THREADS_PER_GROUP]; + + float4 GetFromRingBuffer(uint threadIdx, uint entry) + { + float4 outV; + outV.x = gs_VertexRingBufferX[threadIdx * MAX_CLIP_VERTS + entry]; + outV.y = gs_VertexRingBufferY[threadIdx * MAX_CLIP_VERTS + entry]; + outV.z = gs_VertexRingBufferZ[threadIdx * MAX_CLIP_VERTS + entry]; + outV.w = gs_VertexRingBufferW[threadIdx * MAX_CLIP_VERTS + entry]; + return outV; + } + + void WriteToRingBuffer(uint threadIdx, uint entry, float4 value) + { + gs_VertexRingBufferX[threadIdx * MAX_CLIP_VERTS + entry] = value.x; + gs_VertexRingBufferY[threadIdx * MAX_CLIP_VERTS + entry] = value.y; + gs_VertexRingBufferZ[threadIdx * MAX_CLIP_VERTS + entry] = value.z; + gs_VertexRingBufferW[threadIdx * MAX_CLIP_VERTS + entry] = value.w; + } +#endif + +// All planes and faces are always in the standard order (see below). +// Near and far planes are swapped in the case of Z-reversal, but it does not change the algorithm. +#define FACE_LEFT (1 << 0) // -X +#define FACE_RIGHT (1 << 1) // +X +#define FACE_BOTTOM (1 << 2) // -Y +#define FACE_TOP (1 << 3) // +Y +#define FACE_FRONT (1 << 4) // -Z +#define FACE_BACK (1 << 5) // +Z +#define FACE_MASK ((1 << NUM_FACES) - 1) +#define PLANE_MASK FACE_MASK // 6 culling planes, the same order + +float3 GenerateVertexOfStandardCube(uint v) +{ + float3 p; + + p.x = ((v & 1) == 0) ? -1 : 1; // FACE_LEFT : FACE_RIGHT + p.y = ((v & 2) == 0) ? -1 : 1; // FACE_BOTTOM : FACE_TOP + p.z = ((v & 4) == 0) ? -1 : 1; // FACE_FRONT : FACE_BACK + + return p; +} + +float3 GenerateVertexOfCustomCube(uint v, float3 cubeMin, float3 cubeMax) +{ + float3 p; + + p.x = ((v & 1) == 0) ? cubeMin.x : cubeMax.x; // FACE_LEFT : FACE_RIGHT + p.y = ((v & 2) == 0) ? cubeMin.y : cubeMax.y; // FACE_BOTTOM : FACE_TOP + p.z = ((v & 4) == 0) ? cubeMin.z : cubeMax.z; // FACE_FRONT : FACE_BACK + + return p; +} + +// All vertices are always in the standard order (see below). +uint GetFaceMaskOfVertex(uint v) +{ + // 0: (-1, -1, -1) -> { FACE_LEFT | FACE_BOTTOM | FACE_FRONT } + // 1: (+1, -1, -1) -> { FACE_RIGHT | FACE_BOTTOM | FACE_FRONT } + // 2: (-1, +1, -1) -> { FACE_LEFT | FACE_TOP | FACE_FRONT } + // 3: (+1, +1, -1) -> { FACE_RIGHT | FACE_TOP | FACE_FRONT } + // 4: (-1, -1, +1) -> { FACE_LEFT | FACE_BOTTOM | FACE_BACK } + // 5: (+1, -1, +1) -> { FACE_RIGHT | FACE_BOTTOM | FACE_BACK } + // 6: (-1, +1, +1) -> { FACE_LEFT | FACE_TOP | FACE_BACK } + // 7: (+1, +1, +1) -> { FACE_RIGHT | FACE_TOP | FACE_BACK } + // ((v & 1) == 0) ? 1 : 2) | ((v & 2) == 0) ? 4 : 8) | ((v & 4) == 0) ? 16 : 32) + uint f = (FACE_LEFT << BitFieldExtract(v, 0, 1)) + | (FACE_BOTTOM << BitFieldExtract(v, 1, 1)) + | (FACE_FRONT << BitFieldExtract(v, 2, 1)); + + return f; +}; + +// A list of vertices for each face (CCW order w.r.t. its normal, starting from the LSB). +#define VERT_LIST_LEFT ((4) << 9 | (6) << 6 | (2) << 3 | (0) << 0) +#define VERT_LIST_RIGHT ((3) << 9 | (7) << 6 | (5) << 3 | (1) << 0) +#define VERT_LIST_BOTTOM ((1) << 9 | (5) << 6 | (4) << 3 | (0) << 0) +#define VERT_LIST_TOP ((6) << 9 | (7) << 6 | (3) << 3 | (2) << 0) +#define VERT_LIST_FRONT ((2) << 9 | (3) << 6 | (1) << 3 | (0) << 0) +#define VERT_LIST_BACK ((5) << 9 | (7) << 6 | (6) << 3 | (4) << 0) + +uint GetVertexListOfFace(uint f) +{ + // Warning: don't add 'static' here unless you want really bad code gen. + const uint3 allVertLists = uint3((VERT_LIST_RIGHT << 12) | VERT_LIST_LEFT, + (VERT_LIST_TOP << 12) | VERT_LIST_BOTTOM, + (VERT_LIST_BACK << 12) | VERT_LIST_FRONT); + + return BitFieldExtract(allVertLists[f >> 1], 12 * (f & 1), 12); +} + +groupshared uint gs_BehindMasksOfVerts[VERTS_PER_GROUP]; // 6 planes each (HLSL does not support small data types) + +// Returns 'true' if it manages to cull the face. +uint TryCullFace(uint f, uint baseVertexOffset) +{ + uint cullMaskOfFace = PLANE_MASK; // Initially behind + uint vertListOfFace = GetVertexListOfFace(f); + + for (uint j = 0; j < VERTS_PER_FACE; j++) + { + uint v = BitFieldExtract(vertListOfFace, 3 * j, 3); + // Non-zero if ALL the vertices are behind the same plane(s). + cullMaskOfFace &= gs_BehindMasksOfVerts[baseVertexOffset + v]; + } + + return (cullMaskOfFace != 0); +} + +// TODO: we may be able to save several VGPRs by representing each vertex as +// {v.xyz / abs(v.w), sign(v.w)}, where the sign is stored in a bit field. +void ClipPolygonAgainstPlane(float4 clipPlane, uint srcBegin, uint srcSize, + inout float4 vertRingBuffer[MAX_CLIP_VERTS], uint threadIdx, + out uint dstBegin, out uint dstSize) +{ + dstBegin = srcBegin + srcSize; // Start at the end; we don't use modular arithmetic here + dstSize = 0; + +#ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + ClipVertex tailVert = CreateClipVertex(GetFromRingBuffer(threadIdx, (srcBegin + srcSize - 1) % MAX_CLIP_VERTS), clipPlane); +#else + ClipVertex tailVert = CreateClipVertex(vertRingBuffer[(srcBegin + srcSize - 1) % MAX_CLIP_VERTS], clipPlane); +#endif + +#ifdef OBTUSE_COMPILER + uint modSrcIdx = srcBegin % MAX_CLIP_VERTS; + uint modDstIdx = dstBegin % MAX_CLIP_VERTS; +#endif + + for (uint j = srcBegin; j < (srcBegin + srcSize); j++) + { + #ifndef OBTUSE_COMPILER + uint modSrcIdx = j % MAX_CLIP_VERTS; + #endif + + #ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + ClipVertex leadVert = CreateClipVertex(GetFromRingBuffer(threadIdx, modSrcIdx), clipPlane); + #else + ClipVertex leadVert = CreateClipVertex(vertRingBuffer[modSrcIdx], clipPlane); + #endif + + // Execute Blinn's line clipping algorithm. + // Classify the line segment. 4 cases: + // 0. v0 out, v1 out -> add nothing + // 1. v0 in, v1 out -> add intersection + // 2. v0 out, v1 in -> add intersection, add v1 + // 3. v0 in, v1 in -> add v1 + // (bc >= 0) <-> in, (bc < 0) <-> out. Beware of -0. + + if ((tailVert.bc >= 0) != (leadVert.bc >= 0)) + { + // The line segment is guaranteed to cross the plane. + float4 clipVert = IntersectEdgeAgainstPlane(tailVert, leadVert); + #ifndef OBTUSE_COMPILER + uint modDstIdx = (dstBegin + dstSize++) % MAX_CLIP_VERTS; + #endif + + #ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + WriteToRingBuffer(threadIdx, modDstIdx, clipVert); + #else + vertRingBuffer[modDstIdx] = clipVert; + #endif + + #ifdef OBTUSE_COMPILER + dstSize++; + modDstIdx++; + modDstIdx = (modDstIdx == MAX_CLIP_VERTS) ? 0 : modDstIdx; + #endif + } + + if (leadVert.bc >= 0) + { + #ifndef OBTUSE_COMPILER + uint modDstIdx = (dstBegin + dstSize++) % MAX_CLIP_VERTS; + #endif + + #ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + WriteToRingBuffer(threadIdx, modDstIdx, leadVert.pt); + #else + vertRingBuffer[modDstIdx] = leadVert.pt; + #endif + + #ifdef OBTUSE_COMPILER + dstSize++; + modDstIdx++; + modDstIdx = (modDstIdx == MAX_CLIP_VERTS) ? 0 : modDstIdx; + #endif + } + + #ifdef OBTUSE_COMPILER + modSrcIdx++; + modSrcIdx = (modSrcIdx == MAX_CLIP_VERTS) ? 0 : modSrcIdx; + #endif + tailVert = leadVert; // Avoid recomputation and overwriting the vertex in the ring buffer + } +} + +// 4 arrays * 128 elements * 4 bytes each = 2048 bytes. +groupshared float gs_HapVertsX[VERTS_PER_GROUP]; +groupshared float gs_HapVertsY[VERTS_PER_GROUP]; +groupshared float gs_HapVertsZ[VERTS_PER_GROUP]; +groupshared float gs_HapVertsW[VERTS_PER_GROUP]; + +// Returns 'true' if the face has been entirely clipped. +bool ClipFaceAgainstCube(uint f, float3 cubeMin, float3 cubeMax, uint baseVertexOffset, + out uint srcBegin, out uint srcSize, + out float4 vertRingBuffer[MAX_CLIP_VERTS], uint threadIdx) +{ + srcBegin = 0; + srcSize = VERTS_PER_FACE; + + uint clipMaskOfFace = 0; // Initially in front + uint vertListOfFace = GetVertexListOfFace(f); + + for (uint j = 0; j < VERTS_PER_FACE; j++) + { + uint v = BitFieldExtract(vertListOfFace, 3 * j, 3); + // Non-zero if ANY of the vertices are behind the same plane(s). + // Not all edges may require clipping. However, filtering the vertex list + // is somewhat expensive, so we currently don't do it. + clipMaskOfFace |= gs_BehindMasksOfVerts[baseVertexOffset + v]; + + float4 vert = float4(gs_HapVertsX[baseVertexOffset + v], + gs_HapVertsY[baseVertexOffset + v], + gs_HapVertsZ[baseVertexOffset + v], + gs_HapVertsW[baseVertexOffset + v]); + + #ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + WriteToRingBuffer(threadIdx, j, vert); + #else + vertRingBuffer[j] = vert; + #endif + } + + // Sutherland-Hodgeman polygon clipping algorithm. + // It works by clipping the entire polygon against one clipping plane at a time. + while ((clipMaskOfFace != 0) && (srcSize != 0)) + { + uint p = firstbitlow(clipMaskOfFace); + + float4 clipPlane = CreateClipPlane(p, cubeMin, cubeMax); + + uint dstBegin, dstSize; + ClipPolygonAgainstPlane(clipPlane, srcBegin, srcSize, vertRingBuffer, threadIdx, dstBegin, dstSize); + + srcBegin = dstBegin; + srcSize = dstSize; + + clipMaskOfFace ^= 1 << p; // Clear the bit to continue using firstbitlow() + } + + return srcSize == 0; +} + +void UpdateAaBb(uint srcBegin, uint srcSize, float4 vertRingBuffer[MAX_CLIP_VERTS], uint threadIdx, + bool isOrthoProj, float4x4 invProjMat, + inout float4 ndcAaBbMinPt, inout float4 ndcAaBbMaxPt) +{ +#ifdef OBTUSE_COMPILER + uint modSrcIdx = srcBegin % MAX_CLIP_VERTS; +#endif + for (uint j = srcBegin; j < (srcBegin + srcSize); j++) + { + #ifndef OBTUSE_COMPILER + uint modSrcIdx = j % MAX_CLIP_VERTS; + #endif + + #ifdef ENABLE_D3D12_ASYNC_CRASH_WORKAROUND + float4 hapVertCS = GetFromRingBuffer(threadIdx, modSrcIdx); + #else + float4 hapVertCS = vertRingBuffer[modSrcIdx]; + #endif + float3 rapVertCS = hapVertCS.xyz * rcp(hapVertCS.w); + float3 rapVertNDC = float3(rapVertCS.xy * 0.5 + 0.5, rapVertCS.z); + float rbpVertVSz = hapVertCS.w; + + if (isOrthoProj) // Must replace (w = 1) + { + rbpVertVSz = dot(invProjMat[2], hapVertCS); + } + + ndcAaBbMinPt = min(ndcAaBbMinPt, float4(rapVertNDC, rbpVertVSz)); + ndcAaBbMaxPt = max(ndcAaBbMaxPt, float4(rapVertNDC, rbpVertVSz)); + #ifdef OBTUSE_COMPILER + modSrcIdx++; + modSrcIdx = (modSrcIdx == MAX_CLIP_VERTS) ? 0 : modSrcIdx; + #endif + } +} + +#endif // UNITY_CLIPPINGUTILITIES_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl.meta new file mode 100644 index 00000000000..72b58230efd --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 50063c1e82edca84d9d1dbfe85e93b7e +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/Deferred.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/Deferred.compute index 95b56c04e1d..d6a015f61db 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/Deferred.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/Deferred.compute @@ -1,3 +1,5 @@ +// #pragma enable_d3d11_debug_symbols + #pragma kernel Deferred_Direct_Fptl SHADE_OPAQUE_ENTRY=Deferred_Direct_Fptl #pragma kernel Deferred_Direct_Fptl_DebugDisplay SHADE_OPAQUE_ENTRY=Deferred_Direct_Fptl_DebugDisplay DEBUG_DISPLAY @@ -42,10 +44,8 @@ # pragma warning( disable : 4714 ) // sum of temp registers and indexable temp registers times 256 threads exceeds the recommended total 16384. Performance may be reduced at kernel #endif -// deferred opaque always use FPTL -#define USE_FPTL_LIGHTLIST 1 - -// #pragma enable_d3d11_debug_symbols +// Comment out the line to loop over all lights (for debugging purposes) +#define FINE_BINNING // Keep in sync with 'classification.compute' and 'builddispatchindirect.compute' //------------------------------------------------------------------------------------- // Include @@ -55,7 +55,7 @@ #define SHADERPASS SHADERPASS_DEFERRED_LIGHTING #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" - +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceFillingCurves.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl" @@ -78,7 +78,6 @@ CBUFFER_END #define HAS_LIGHTLOOP - // Note: We have fix as guidelines that we have only one deferred material (with control of GBuffer enabled). Mean a users that add a new // deferred material must replace the old one here. If in the future we want to support multiple layout (cause a lot of consistency problem), // the deferred shader will require to use multicompile. @@ -97,52 +96,46 @@ TEXTURE2D_X_UINT2(_StencilTexture); RW_TEXTURE2D_X(float3, diffuseLightingUAV); RW_TEXTURE2D_X(float4, specularLightingUAV); -#define GROUP_SIZE (TILE_SIZE_FPTL / 2) // 4x 8x8 groups per a 16x16 tile - #ifdef USE_INDIRECT - StructuredBuffer g_TileList; -// Indirect -[numthreads(GROUP_SIZE, GROUP_SIZE, 1)] -void SHADE_OPAQUE_ENTRY(uint2 groupThreadId : SV_GroupThreadID, uint groupId : SV_GroupID) -{ - uint tileIndex = g_TileList[g_TileListOffset + (groupId / 4)]; - uint2 tileCoord = uint2((tileIndex >> TILE_INDEX_SHIFT_X) & TILE_INDEX_MASK, (tileIndex >> TILE_INDEX_SHIFT_Y) & TILE_INDEX_MASK); // see builddispatchindirect.compute - uint2 pixelCoord = tileCoord * GetTileSize() - + uint2(groupId & 1, (groupId >> 1) & 1) * GROUP_SIZE - + groupThreadId; - - UNITY_XR_ASSIGN_VIEW_INDEX(tileIndex >> TILE_INDEX_SHIFT_EYE); - - uint screenWidth = (uint)_ScreenSize.x; - uint numTilesX = (screenWidth + (TILE_SIZE_FPTL) - 1) / TILE_SIZE_FPTL; - uint tileVariantIndex = tileCoord.x + tileCoord.y * numTilesX; - -#if defined(UNITY_STEREO_INSTANCING_ENABLED) - uint screenHeight = (uint)_ScreenSize.y; - uint numTilesY = (screenHeight + (TILE_SIZE_FPTL) - 1) / TILE_SIZE_FPTL; - tileVariantIndex += unity_StereoEyeIndex * numTilesX * numTilesY; #endif - uint featureFlags = TileVariantToFeatureFlags(VARIANT, tileVariantIndex); -#else - -// Direct -[numthreads(GROUP_SIZE, GROUP_SIZE, 1)] -void SHADE_OPAQUE_ENTRY(uint3 dispatchThreadId : SV_DispatchThreadID, uint2 groupId : SV_GroupID) +// We always use 64 threads, regardless of the TILE_SIZE. +// If TILE_SIZE is not 16, this shader needs to be fixed manually. +// The same applies to 'builddispatchindirect.compute'. +[numthreads(8, 8, 1)] +void SHADE_OPAQUE_ENTRY(uint3 groupThreadId : SV_GroupThreadID, uint3 groupId : SV_GroupID) { - UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); +#ifdef USE_INDIRECT + uint variantOffset = g_TileListOffset; + uint tileOffset = groupId.x / 4; // 4x 8*8 groups per a 16*16 tile (includes the eye index for XR) + uint tileAndEye = g_TileList[variantOffset + tileOffset]; + uint eye = tileAndEye >> TILE_INDEX_SHIFT_EYE; + uint tile = tileAndEye ^ (eye << TILE_INDEX_SHIFT_EYE); + + UNITY_XR_ASSIGN_VIEW_INDEX(eye); // Sets 'unity_StereoEyeIndex' - uint2 tileCoord = (GROUP_SIZE * groupId) / GetTileSize(); - uint2 pixelCoord = dispatchThreadId.xy; - uint featureFlags = UINT_MAX; + uint featureFlags = TileVariantToFeatureFlags(VARIANT, tile, unity_StereoEyeIndex); +#else // !USE_INDIRECT + uint tile = groupId.x / 4; // 4x 8*8 groups per a 16*16 tile + uint eye = groupId.z; + UNITY_XR_ASSIGN_VIEW_INDEX(eye); + + uint featureFlags = UINT_MAX; #endif + uint2 tileCoord = CoordinateFromIndex(tile, TILE_BUFFER_DIMS.x); // TODO: avoid integer division + uint2 pixelCoord = tileCoord * TILE_SIZE + + DeinterleaveQuad(groupId.x) * 8 // Z-order curve + + groupThreadId.xy; // TODO: full Morton order within the tile? + // This need to stay in sync with deferred.shader float depth = LoadCameraDepth(pixelCoord.xy); - PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, tileCoord); + PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + uint zBin = ComputeZBinIndex(posInput.linearDepth); // For indirect case: we can still overlap inside a tile with the sky/background, reject it // Can't rely on stencil as we are in compute shader @@ -167,7 +160,7 @@ void SHADE_OPAQUE_ENTRY(uint3 dispatchThreadId : SV_DispatchThreadID, uint2 grou PreLightData preLightData = GetPreLightData(V, posInput, bsdfData); LightLoopOutput lightLoopOutput; - LightLoop(V, posInput, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); + LightLoop(V, posInput, tile, zBin, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/DeferredTile.shader b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/DeferredTile.shader index 456080ef9aa..531e68df9f9 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/DeferredTile.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/DeferredTile.shader @@ -43,7 +43,8 @@ Shader "Hidden/HDRP/DeferredTile" #define USE_INDIRECT // otherwise TileVariantToFeatureFlags() will not be defined in Lit.hlsl!!! - #define USE_FPTL_LIGHTLIST 1 // deferred opaque always use FPTL + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING // Keep in sync with 'classification.compute' and 'builddispatchindirect.compute' #ifdef VARIANT0 #define VARIANT 0 @@ -190,7 +191,7 @@ Shader "Hidden/HDRP/DeferredTile" struct Varyings { float4 positionCS : SV_POSITION; - nointerpolation uint3 tileIndexAndCoord : TEXCOORD0; + nointerpolation uint2 tileCoord : TEXCOORD0; }; struct Outputs @@ -205,25 +206,26 @@ Shader "Hidden/HDRP/DeferredTile" Varyings Vert(Attributes input) { - uint tilePackIndex = g_TileList[g_TileListOffset + input.instID]; - uint2 tileCoord = uint2((tilePackIndex >> TILE_INDEX_SHIFT_X) & TILE_INDEX_MASK, (tilePackIndex >> TILE_INDEX_SHIFT_Y) & TILE_INDEX_MASK); // see builddispatchindirect.compute - uint2 pixelCoord = tileCoord * GetTileSize(); + uint variantOffset = g_TileListOffset; + uint tileOffset = input.instID; // Includes the eye index for XR + uint tileAndEye = g_TileList[variantOffset + tileOffset]; + uint eye = tileAndEye >> TILE_INDEX_SHIFT_EYE; + uint tile = tileAndEye ^ (eye << TILE_INDEX_SHIFT_EYE); - uint screenWidth = (uint)_ScreenSize.x; - uint numTilesX = (screenWidth + (TILE_SIZE_FPTL) - 1) / TILE_SIZE_FPTL; - uint tileIndex = tileCoord.x + tileCoord.y * numTilesX; + uint2 tileCoord = CoordinateFromIndex(tile, TILE_BUFFER_DIMS.x); // TODO: avoid integer division + uint2 pixelCoord = tileCoord * TILE_SIZE; // This handles both "real quad" and "2 triangles" cases: remaps {0, 1, 2, 3, 4, 5} into {0, 1, 2, 3, 0, 2}. uint quadIndex = (input.vertexID & 0x03) + (input.vertexID >> 2) * (input.vertexID & 0x01); float2 pp = GetQuadVertexPosition(quadIndex).xy; - pixelCoord += uint2(pp.xy * TILE_SIZE_FPTL); + pixelCoord += uint2(pp.xy * TILE_SIZE); Varyings output; output.positionCS = float4((pixelCoord * _ScreenSize.zw) * 2.0 - 1.0, 0, 1); // Tiles coordinates always start at upper-left corner of the screen (y axis down). // Clip-space coordinatea always have y axis up. Hence, we must always flip y. output.positionCS.y *= -1.0; - output.tileIndexAndCoord = uint3(tileIndex, tileCoord); + output.tileCoord = tileCoord; return output; } @@ -232,12 +234,15 @@ Shader "Hidden/HDRP/DeferredTile" { // This need to stay in sync with deferred.compute - uint tileIndex = input.tileIndexAndCoord.x; - uint2 tileCoord = input.tileIndexAndCoord.yz; - uint featureFlags = TileVariantToFeatureFlags(VARIANT, tileIndex); + uint2 tileCoord = input.tileCoord; + + uint tile = IndexFromCoordinate(tileCoord, TILE_BUFFER_DIMS.x); + uint featureFlags = TileVariantToFeatureFlags(VARIANT, tile, unity_StereoEyeIndex); float depth = LoadCameraDepth(input.positionCS.xy).x; - PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, tileCoord); + PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + uint zBin = ComputeZBinIndex(posInput.linearDepth); float3 V = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -248,7 +253,7 @@ Shader "Hidden/HDRP/DeferredTile" PreLightData preLightData = GetPreLightData(V, posInput, bsdfData); LightLoopOutput lightLoopOutput; - LightLoop(V, posInput, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); + LightLoop(V, posInput, tile, zBin, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; @@ -313,7 +318,8 @@ Shader "Hidden/HDRP/DeferredTile" #pragma multi_compile_fragment SCREEN_SPACE_SHADOWS_OFF SCREEN_SPACE_SHADOWS_ON #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #define USE_FPTL_LIGHTLIST 1 // deferred opaque always use FPTL + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING // Keep in sync with 'classification.compute' and 'builddispatchindirect.compute' #ifdef DEBUG_DISPLAY // Don't care about this warning in debug @@ -404,7 +410,10 @@ Shader "Hidden/HDRP/DeferredTile" // input.positionCS is SV_Position float depth = LoadCameraDepth(input.positionCS.xy).x; - PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, uint2(input.positionCS.xy) / GetTileSize()); + PositionInputs posInput = GetPositionInput(input.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); float3 V = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -415,7 +424,7 @@ Shader "Hidden/HDRP/DeferredTile" PreLightData preLightData = GetPreLightData(V, posInput, bsdfData); LightLoopOutput lightLoopOutput; - LightLoop(V, posInput, preLightData, bsdfData, builtinData, LIGHT_FEATURE_MASK_FLAGS_OPAQUE, lightLoopOutput); + LightLoop(V, posInput, tile, zBin, preLightData, bsdfData, builtinData, LIGHT_FEATURE_MASK_FLAGS_OPAQUE, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/GlobalLightLoopSettings.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/GlobalLightLoopSettings.cs index aacdbf9769d..29f4aaa9e95 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/GlobalLightLoopSettings.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/GlobalLightLoopSettings.cs @@ -166,6 +166,7 @@ public struct GlobalLightLoopSettings maxLightsPerClusterCell = 8, maxDensityVolumeSize = DensityVolumeResolution.Resolution32, maxDensityVolumesOnScreen = 64, // 8MB texture atlas allocated by default + tileEntryLimit = 256, }; /// Cookie atlas resolution. @@ -222,5 +223,9 @@ public struct GlobalLightLoopSettings public DensityVolumeResolution maxDensityVolumeSize; /// Maximum number of density volumes at the same time on screen. public int maxDensityVolumesOnScreen; + /// Maximum number of bounded entities (total count summed over all entity categories) contained within a single screen tile. + /// Determines the memory budget of tiled lighting. For each category, the actual number of entities is rounded up to the nearest multiple of 32. + /// For instance, if you have 1 point light and 2 reflection probes, the limit must be RoundUp(1, 32) + RoundUp(2, 32) = 32 + 32 = 64. + public int tileEntryLimit; } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadowLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadowLoop.hlsl index 5820f90ddf2..7fb26a5530f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadowLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadowLoop.hlsl @@ -18,6 +18,10 @@ void ShadowLoopMin(HDShadowContext shadowContext, PositionInputs posInput, float shadow = float3(1, 1, 1); #endif + // TODO: may want to make 'tile' wave-uniform. + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); + // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. ApplyCameraRelativeXR(posInput.positionWS); @@ -30,7 +34,7 @@ void ShadowLoopMin(HDShadowContext shadowContext, PositionInputs posInput, float // Evaluate sun shadows. if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; // TODO: this will cause us to load from the normal buffer first. Does this cause a performance problem? float3 wi = -light.forward; @@ -54,115 +58,63 @@ void ShadowLoopMin(HDShadowContext shadowContext, PositionInputs posInput, float } } + uint i; // Declare once to avoid the D3D11 compiler warning. + if (featureFlags & LIGHTFEATUREFLAGS_PUNCTUAL) { - uint lightCount, lightStart; - -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_PUNCTUAL, lightStart, lightCount); -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - lightCount = _PunctualLightCount; - lightStart = 0; -#endif - - bool fastPath = false; - uint lightStartLane0; - fastPath = IsFastPath(lightStart, lightStartLane0); - - if (fastPath) - { - lightStart = lightStartLane0; - } + EntityLookupParameters params = InitializePunctualLightLookup(tile, zBin); - // Scalarized loop. All lights that are in a tile/cluster touched by any pixel in the wave are loaded (scalar load), only the one relevant to current thread/pixel are processed. - // For clarity, the following code will follow the convention: variables starting with s_ are meant to be wave uniform (meant for scalar register), - // v_ are variables that might have different value for each thread in the wave (meant for vector registers). - // This will perform more loads than it is supposed to, however, the benefits should offset the downside, especially given that light data accessed should be largely coherent. - // Note that the above is valid only if wave intriniscs are supported. - uint v_lightListOffset = 0; - uint v_lightIdx = lightStart; + i = 0; - while (v_lightListOffset < lightCount) + LightData lightData; + while (TryLoadPunctualLightData(i, params, lightData)) { - v_lightIdx = FetchIndex(lightStart, v_lightListOffset); - uint s_lightIdx = ScalarizeElementIndex(v_lightIdx, fastPath); - if (s_lightIdx == -1) - break; - - LightData s_lightData = FetchLight(s_lightIdx); - - // If current scalar and vector light index match, we process the light. The v_lightListOffset for current thread is increased. - // Note that the following should really be ==, however, since helper lanes are not considered by WaveActiveMin, such helper lanes could - // end up with a unique v_lightIdx value that is smaller than s_lightIdx hence being stuck in a loop. All the active lanes will not have this problem. - if (s_lightIdx >= v_lightIdx) + if (IsMatchingLightLayer(lightData.lightLayers, renderLayer) && + lightData.shadowIndex >= 0 && + lightData.shadowDimmer > 0) { - v_lightListOffset++; - if (IsMatchingLightLayer(s_lightData.lightLayers, renderLayer) && - s_lightData.shadowIndex >= 0 && - s_lightData.shadowDimmer > 0) + float shadowP; + float3 L; + float4 distances; // {d, d^2, 1/d, d_proj} + GetPunctualLightVectors(posInput.positionWS, lightData, L, distances); + float distToLight = (lightData.lightType == GPULIGHTTYPE_PROJECTOR_BOX) ? distances.w : distances.x; + float lightRadSqr = lightData.size.x; + if (distances.x < lightData.range && + PunctualLightAttenuation(distances, lightData.rangeAttenuationScale, lightData.rangeAttenuationBias, + lightData.angleScale, lightData.angleOffset) > 0.0 && + L.y > 0.0) { - float shadowP; - float3 L; - float4 distances; // {d, d^2, 1/d, d_proj} - GetPunctualLightVectors(posInput.positionWS, s_lightData, L, distances); - float lightRadSqr = s_lightData.size.x; - if (distances.x < s_lightData.range && - PunctualLightAttenuation(distances, s_lightData.rangeAttenuationScale, s_lightData.rangeAttenuationBias, - s_lightData.angleScale, s_lightData.angleOffset) > 0.0 && - L.y > 0.0) - { - shadowP = GetPunctualShadowAttenuation(shadowContext, posInput.positionSS, posInput.positionWS, normalWS, s_lightData.shadowIndex, L, distances.x, s_lightData.lightType == GPULIGHTTYPE_POINT, s_lightData.lightType != GPULIGHTTYPE_PROJECTOR_BOX); - shadowP = s_lightData.nonLightMappedOnly ? min(1.0f, shadowP) : shadowP; - shadowP = lerp(1.0f, shadowP, s_lightData.shadowDimmer); + shadowP = GetPunctualShadowAttenuation(shadowContext, posInput.positionSS, posInput.positionWS, normalWS, lightData.shadowIndex, L, distances.x, lightData.lightType == GPULIGHTTYPE_POINT, lightData.lightType != GPULIGHTTYPE_PROJECTOR_BOX); + shadowP = lightData.nonLightMappedOnly ? min(1.0f, shadowP) : shadowP; + shadowP = lerp(1.0f, shadowP, lightData.shadowDimmer); #ifdef SHADOW_LOOP_MULTIPLY - shadow *= lerp(s_lightData.shadowTint, float3(1, 1, 1), shadowP); + shadow *= lerp(lightData.shadowTint, float3(1, 1, 1), shadowP); #elif defined(SHADOW_LOOP_AVERAGE) - shadow += lerp(s_lightData.shadowTint, float3(1, 1, 1), shadowP); + shadow += lerp(lightData.shadowTint, float3(1, 1, 1), shadowP); #else - shadow = min(shadow, shadowP.xxx); + shadow = min(shadow, shadowP.xxx); #endif - shadowCount += 1.0f; - weight += 1.0f - shadowP; - } + shadowCount += 1.0f; + weight += 1.0f - shadowP; } } + + i++; } } if (featureFlags & LIGHTFEATUREFLAGS_AREA) { - uint lightCount, lightStart; - - #ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_AREA, lightStart, lightCount); - #else - lightCount = _AreaLightCount; - lightStart = _PunctualLightCount; - #endif - - // COMPILER BEHAVIOR WARNING! - // If rectangle lights are before line lights, the compiler will duplicate light matrices in VGPR because they are used differently between the two types of lights. - // By keeping line lights first we avoid this behavior and save substantial register pressure. - // TODO: This is based on the current Lit.shader and can be different for any other way of implementing area lights, how to be generic and ensure performance ? - - uint i; - if (lightCount > 0) - { - i = 0; + EntityLookupParameters params = InitializeAreaLightLookup(tile, zBin); - uint last = lightCount - 1; - LightData lightData = FetchLight(lightStart, i); - - while (i <= last && lightData.lightType == GPULIGHTTYPE_TUBE) - { - lightData = FetchLight(lightStart, min(++i, last)); - } + i = 0; - while (i <= last) // GPULIGHTTYPE_RECTANGLE + LightData lightData; + while (TryLoadAreaLightData(i, params, lightData)) + { + if (lightData.lightType == GPULIGHTTYPE_RECTANGLE) { - lightData.lightType = GPULIGHTTYPE_RECTANGLE; // Enforce constant propagation - if (IsMatchingLightLayer(lightData.lightLayers, renderLayer)) { float3 L; @@ -206,9 +158,13 @@ void ShadowLoopMin(HDShadowContext shadowContext, PositionInputs posInput, float weight += 1.0f - shadowA; } } - - lightData = FetchLight(lightStart, min(++i, last)); } + else // GPULIGHTTYPE_TUBE + { + /* ??? */ + } + + i++; } } #ifdef SHADOW_LOOP_MULTIPLY diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightCullUtils.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightCullUtils.hlsl index 4a2a69df125..5a9994e6e7d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightCullUtils.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightCullUtils.hlsl @@ -1,7 +1,7 @@ #ifndef __LIGHTCULLUTILS_H__ #define __LIGHTCULLUTILS_H__ -// Used to index into our SFiniteLightBound (g_data) and +// Used to index into our FiniteLightBound (g_data) and // LightVolumeData (_LightVolumeData) buffers. uint GenerateLightCullDataIndex(uint lightIndex, uint numVisibleLights, uint eyeIndex) { @@ -23,8 +23,8 @@ struct ScreenSpaceBoundsIndices // Usually named g_vBoundsBuffer. The two values represent the min/max indices. ScreenSpaceBoundsIndices GenerateScreenSpaceBoundsIndices(uint lightIndex, uint numVisibleLights, uint eyeIndex) { - // In the monoscopic mode, there is one set of bounds (min,max -> 2 * g_iNrVisibLights) - // In stereo, there are two sets of bounds (leftMin, leftMax, rightMin, rightMax -> 4 * g_iNrVisibLights) + // In the monoscopic mode, there is one set of bounds (min,max -> 2 * _BoundedEntityCount) + // In stereo, there are two sets of bounds (leftMin, leftMax, rightMin, rightMax -> 4 * _BoundedEntityCount) const uint eyeRelativeBase = eyeIndex * 2 * numVisibleLights; ScreenSpaceBoundsIndices indices; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs index 8f3ba647613..f843e52102e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using UnityEngine.Experimental.Rendering; +using System.Runtime.InteropServices; namespace UnityEngine.Rendering.HighDefinition { @@ -51,14 +52,309 @@ public static VisibleLightAxisAndPosition GetAxisAndPosition(this VisibleLight v //----------------------------------------------------------------------------- [GenerateHLSL] - internal enum LightVolumeType + public enum BoundedEntityCategory // Defines the sorting order (takes priority over sorting by depth) { - Cone, - Sphere, - Box, - Count + PunctualLight, + AreaLight, + ReflectionProbe, + Decal, + DensityVolume, + Count, + None = Count // Unbounded + } + + internal class BoundedEntityCollection // Used for tiled lighting + { + // 'xrViewCount' and 'maxEntityCountPerCategory' control the size of the memory allocation. + public BoundedEntityCollection(int xrViewCount, int[] maxEntityCountPerCategory) + { + Debug.Assert(xrViewCount > 0); + Debug.Assert(maxEntityCountPerCategory.Length == (int)BoundedEntityCategory.Count); + + m_MaxEntityCount = 0; + + for (int i = 0, n = (int)BoundedEntityCategory.Count; i < n; i++) + { + m_EntityCountPerCategory[i] = 0; + + m_MaxEntityCount += maxEntityCountPerCategory[i]; + } + + m_TotalEntityCount = 0; + + m_Views = new ViewDependentData[xrViewCount]; + + for (int i = 0, n = xrViewCount; i < n; i++) + { + m_Views[i] = new ViewDependentData(); + + m_Views[i].punctualLightData = new List(); + m_Views[i].areaLightData = new List(); + m_Views[i].reflectionProbeData = new List(); + m_Views[i].decalData = new List(); + m_Views[i].densityVolumeData = new List(); + m_Views[i].entityBounds = new List(); + m_Views[i].entitySortKeys = new ulong[m_MaxEntityCount]; + } + + for (int i = 0, n = (int)BoundedEntityCategory.Count; i < n; i++) + { + m_EntityDataBufferPerCategory[i] = new ComputeBuffer(maxEntityCountPerCategory[i] * xrViewCount, s_EntityDataSizesPerCategory[i]); + } + + m_EntityBoundsBuffer = new ComputeBuffer(m_MaxEntityCount * xrViewCount, Marshal.SizeOf(typeof(FiniteLightBound))); + } + + // Reset the counters. + public void Reset() + { + for (int i = 0, n = (int)BoundedEntityCategory.Count; i < n; i++) + { + m_EntityCountPerCategory[i] = 0; + } + + m_TotalEntityCount = 0; + + for (int i = 0, n = m_Views.Length; i < n; i++) + { + m_Views[i].punctualLightData.Clear(); + m_Views[i].areaLightData.Clear(); + m_Views[i].reflectionProbeData.Clear(); + m_Views[i].decalData.Clear(); + m_Views[i].densityVolumeData.Clear(); + m_Views[i].entityBounds.Clear(); + + // Since we reset 'm_TotalEntityCount', we can leave 'entitySortKeys' alone. + } + + // No need to clear ComputeBuffers, we will just overwrite the contents. + } + + // Release the resources that are NOT automatically managed by C#. + public void Release() + { + for (int i = 0, n = (int)BoundedEntityCategory.Count; i < n; i++) + { + CoreUtils.SafeRelease(m_EntityDataBufferPerCategory[i]); + } + + CoreUtils.SafeRelease(m_EntityBoundsBuffer); + } + + public int GetEntityCount(BoundedEntityCategory category) + { + return m_EntityCountPerCategory[(int)category]; + } + + // For all categories combined. + public int GetMaxEntityCount() + { + return m_MaxEntityCount; + } + + public void AddEntitySortKey(int viewIndex, BoundedEntityCategory category, ulong key) + { + Debug.Assert(0 <= viewIndex && viewIndex < m_Views.Length); + + // We could decode the category from the key, but it is probably not worth the effort. + m_Views[viewIndex].entitySortKeys[m_TotalEntityCount] = key; + } + + public void IncrementEntityCount(BoundedEntityCategory category) + { + m_EntityCountPerCategory[(int)category]++; + m_TotalEntityCount++; + } + + // For all categories combined. + public int GetTotalEntityCount() + { + Debug.Assert(GetEntitySortKeyArrayOffset(BoundedEntityCategory.Count) == m_TotalEntityCount); + + return m_TotalEntityCount; + } + + public ulong GetEntitySortKey(int viewIndex, int keyIndex) + { + return m_Views[viewIndex].entitySortKeys[keyIndex]; + } + + // Returns an offset for the 'entitySortKeys' array. + // Assumes the array has been sorted prior to making this call. + public int GetEntitySortKeyArrayOffset(BoundedEntityCategory category) + { + int s = 0; + + for (int i = 0, n = (int)category; i < n; i++) + { + s += m_EntityCountPerCategory[i]; + } + + return s; + } + + public void Sort() + { + Debug.Assert(GetEntitySortKeyArrayOffset(BoundedEntityCategory.Count) == m_TotalEntityCount); + + for (int i = 0, n = m_Views.Length; i < n; i++) + { + // Call our own quicksort instead of Array.Sort(sortKeys, 0, sortCount) so we don't allocate memory. + CoreUnsafeUtils.QuickSort(m_Views[i].entitySortKeys, 0, m_TotalEntityCount - 1); + } + } + + // These must be added in the sorted order! TODO: how to enforce this? + public void AddEntityData(int viewIndex, BoundedEntityCategory category, LightData data) + { + if (category == BoundedEntityCategory.PunctualLight) + { + m_Views[viewIndex].punctualLightData.Add(data); + } + else if (category == BoundedEntityCategory.AreaLight) + { + m_Views[viewIndex].areaLightData.Add(data); + } + else + { + Debug.Assert(false); + } + } + + // These must be added in the sorted order! TODO: how to enforce this? + public void AddEntityData(int viewIndex, BoundedEntityCategory category, EnvLightData data) + { + Debug.Assert(category == BoundedEntityCategory.ReflectionProbe); + m_Views[viewIndex].reflectionProbeData.Add(data); + } + + // These must be added in the sorted order! TODO: how to enforce this? + public void AddEntityData(int viewIndex, BoundedEntityCategory category, DecalData data) + { + Debug.Assert(category == BoundedEntityCategory.Decal); + m_Views[viewIndex].decalData.Add(data); + } + + // These must be added in the sorted order! TODO: how to enforce this? + public void AddEntityData(int viewIndex, BoundedEntityCategory category, DensityVolumeData data) + { + Debug.Assert(category == BoundedEntityCategory.DensityVolume); + m_Views[viewIndex].densityVolumeData.Add(data); + } + + // These must be added in the sorted order! TODO: how to enforce this? + public void AddEntityBounds(int viewIndex, BoundedEntityCategory category, FiniteLightBound bounds) + { + m_Views[viewIndex].entityBounds.Add(bounds); + } + + public ComputeBuffer GetEntityDataBuffer(BoundedEntityCategory category) + { + return m_EntityDataBufferPerCategory[(int)category]; + } + + public ComputeBuffer GetEntityBoundsBuffer() + { + return m_EntityBoundsBuffer; + } + + public void CopyEntityDataToComputeBuffers(int activeViewCount) + { + int totalCount = 0; + + for (int c = 0; c < (int)BoundedEntityCategory.Count; c++) + { + var category = (BoundedEntityCategory)c; + int count = GetEntityCount(category); + + totalCount += count; + + // For each category, concatenate lists of all views. + for (int i = 0, n = activeViewCount; i < n; i++) + { + switch (category) + { + case BoundedEntityCategory.PunctualLight: + Debug.Assert(m_Views[i].punctualLightData.Count == count); + m_EntityDataBufferPerCategory[c].SetData(m_Views[i].punctualLightData, 0, i * count, count); + break; + case BoundedEntityCategory.AreaLight: + Debug.Assert(m_Views[i].areaLightData.Count == count); + m_EntityDataBufferPerCategory[c].SetData(m_Views[i].areaLightData, 0, i * count, count); + break; + case BoundedEntityCategory.ReflectionProbe: + Debug.Assert(m_Views[i].reflectionProbeData.Count == count); + m_EntityDataBufferPerCategory[c].SetData(m_Views[i].reflectionProbeData, 0, i * count, count); + break; + case BoundedEntityCategory.Decal: + Debug.Assert(m_Views[i].decalData.Count == count); + m_EntityDataBufferPerCategory[c].SetData(m_Views[i].decalData, 0, i * count, count); + break; + case BoundedEntityCategory.DensityVolume: + Debug.Assert(m_Views[i].densityVolumeData.Count == count); + m_EntityDataBufferPerCategory[c].SetData(m_Views[i].densityVolumeData, 0, i * count, count); + break; + default: + Debug.Assert(false); + break; + } + } + } + + for (int i = 0, n = activeViewCount; i < n; i++) + { + Debug.Assert(m_Views[i].entityBounds.Count == totalCount); + m_EntityBoundsBuffer.SetData(m_Views[i].entityBounds, 0, i * totalCount, totalCount); + } + } + + /* ------------------------------ Private interface ------------------------------ */ + + static int[] s_EntityDataSizesPerCategory = new int[(int)BoundedEntityCategory.Count] // Can't make it const in C#... + { + Marshal.SizeOf(typeof(LightData)), // BoundedEntityCategory.PunctualLight + Marshal.SizeOf(typeof(LightData)), // BoundedEntityCategory.AreaLight + Marshal.SizeOf(typeof(EnvLightData)), // BoundedEntityCategory.ReflectionProbe + Marshal.SizeOf(typeof(DecalData)), // BoundedEntityCategory.Decal + Marshal.SizeOf(typeof(DensityVolumeData)), // BoundedEntityCategory.DensityVolume + // Marshal.SizeOf(typeof(ProbeVolumeEngineData)) // BoundedEntityCategory.ProbeVolume + }; + + // The entity count is the same for all views. + int[] m_EntityCountPerCategory = new int[(int)BoundedEntityCategory.Count]; + int m_TotalEntityCount; // Prefix sum of the array above + int m_MaxEntityCount; // For all categories combined + + + // We sort entities by depth, which makes the order of items in these lists view-dependent. + struct ViewDependentData + { + // 1x list per category. + public List punctualLightData; + public List areaLightData; + public List reflectionProbeData; + public List decalData; + public List densityVolumeData; + + // 1x list for all entites (sorted by category). + public List entityBounds; + + // 1x list for entites of all categories. We have to use a raw array for QuickSort. + // See also: BoundedEntitySortingKeyLayout. + public ulong[] entitySortKeys; + } + + ViewDependentData[] m_Views; // 1x view unless it is an XR application + + // 1x list per category (we concatenate lists of all views). + ComputeBuffer[] m_EntityDataBufferPerCategory = new ComputeBuffer[(int)BoundedEntityCategory.Count]; + + // 1x list for all entites (sorted by category, we concatenate lists of all views). + ComputeBuffer m_EntityBoundsBuffer; } + // Only used by the ray tracing code. + // Should be probably deprecated in favor of BoundedEntityCategory. [GenerateHLSL] internal enum LightCategory { @@ -66,7 +362,7 @@ internal enum LightCategory Area, Env, Decal, - DensityVolume, // WARNING: Currently lightlistbuild.compute assumes density volume is the last element in the LightCategory enum. Do not append new LightCategory types after DensityVolume. TODO: Fix .compute code. + DensityVolume, Count } @@ -86,7 +382,7 @@ internal enum LightFeatureFlags } [GenerateHLSL] - class LightDefinitions + class TiledLightingConstants { public static int s_MaxNrBigTileLightsPlusOne = 512; // may be overkill but the footprint is 2 bits per pixel using uint16. public static float s_ViewportScaleZ = 1.0f; @@ -120,18 +416,26 @@ class LightDefinitions public static uint s_ScreenSpaceColorShadowFlag = 0x100; public static uint s_InvalidScreenSpaceShadow = 0xff; public static uint s_ScreenSpaceShadowIndexMask = 0xff; + + // Binned lighting + // For performance reasons, keep all sizes in powers of 2. + public static int s_CoarseTileSize = 64; // Pixels + public static int s_FineTileSize = 16; // Pixels + public static int s_zBinCount = 8192; } [GenerateHLSL] - struct SFiniteLightBound + struct FiniteLightBound { + public Vector3 center; // Center (in the view space) shared by the bounding box and the bounding sphere + public float radius; // Of the bounding sphere public Vector3 boxAxisX; // Scaled by the extents (half-size) + public float scaleXY; // Scale applied to the top of the box to turn it into a truncated pyramid (X = Y) public Vector3 boxAxisY; // Scaled by the extents (half-size) + public float __pad0__; public Vector3 boxAxisZ; // Scaled by the extents (half-size) - public Vector3 center; // Center of the bounds (box) in camera space - public float scaleXY; // Scale applied to the top of the box to turn it into a truncated pyramid (X = Y) - public float radius; // Circumscribed sphere for the bounds (box) - }; + public float __pad1__; + } [GenerateHLSL] struct LightVolumeData @@ -182,6 +486,20 @@ public enum ClusterDebugMode : int VisualizeSlice } + /// + /// Cluster visualization mode. + /// + [GenerateHLSL] + public enum BinnedDebugMode : int + { + /// Visualize z-binning on opaque objects. + VisualizeOpaque, + /// Visualize a slice of a range of z buckets. + VisualizeSlice, + /// Visualize material variants + VisualizeVariants + } + /// /// Light Volume Debug Mode. /// @@ -232,10 +550,13 @@ unsafe struct ShaderVariablesLightList [HLSLArray(ShaderConfig.k_XRMaxViewsForCBuffer, typeof(Matrix4x4))] public fixed float g_mProjectionArr[ShaderConfig.k_XRMaxViewsForCBuffer * 16]; + public Vector2Int _DepthPyramidMipLevelOffsetCoarse; + public Vector2Int _DepthPyramidMipLevelOffsetFine; + public Vector4 g_screenSize; public Vector2Int g_viDimensions; - public int g_iNrVisibLights; + public uint _BoundedEntityCount; public uint g_isOrthographic; public uint g_BaseFeatureFlags; @@ -253,9 +574,8 @@ internal struct ProcessedLightData { public HDAdditionalLightData additionalLightData; public HDLightType lightType; - public LightCategory lightCategory; + public BoundedEntityCategory lightCategory; public GPULightType gpuLightType; - public LightVolumeType lightVolumeType; public float distanceToCamera; public float lightDistanceFade; public float volumetricDistanceFade; @@ -266,6 +586,7 @@ internal struct ProcessedProbeData { public HDProbe hdProbe; public float weight; + public uint logVolume; // Used for sorting in the shader } public partial class HDRenderPipeline @@ -301,9 +622,11 @@ public partial class HDRenderPipeline int m_MaxPunctualLightsOnScreen; int m_MaxAreaLightsOnScreen; int m_MaxDecalsOnScreen; + int m_MaxDensityVolumesOnScreen = 1024; // TODO int m_MaxLightsOnScreen; int m_MaxEnvLightsOnScreen; int m_MaxPlanarReflectionOnScreen; + int m_TileEntryLimit; Texture2DArray m_DefaultTexture2DArray; Cubemap m_DefaultTextureCube; @@ -370,57 +693,107 @@ public void NewFrame() } } - internal class LightLoopLightData - { - public ComputeBuffer directionalLightData { get; private set; } - public ComputeBuffer lightData { get; private set; } - public ComputeBuffer envLightData { get; private set; } - public ComputeBuffer decalData { get; private set; } - - public void Initialize(int directionalCount, int punctualCount, int areaLightCount, int envLightCount, int decalCount) - { - directionalLightData = new ComputeBuffer(directionalCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(DirectionalLightData))); - lightData = new ComputeBuffer(punctualCount + areaLightCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(LightData))); - envLightData = new ComputeBuffer(envLightCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(EnvLightData))); - decalData = new ComputeBuffer(decalCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(DecalData))); - } - - public void Cleanup() - { - CoreUtils.SafeRelease(directionalLightData); - CoreUtils.SafeRelease(lightData); - CoreUtils.SafeRelease(envLightData); - CoreUtils.SafeRelease(decalData); - } - } + // internal class LightLoopLightData + // { + // public ComputeBuffer directionalLightData { get; private set; } + // public ComputeBuffer lightData { get; private set; } + // public ComputeBuffer envLightData { get; private set; } + // public ComputeBuffer decalData { get; private set; } + + // public void Initialize(int directionalCount, int punctualCount, int areaLightCount, int envLightCount, int decalCount) + // { + // directionalLightData = new ComputeBuffer(directionalCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(DirectionalLightData))); + // lightData = new ComputeBuffer(punctualCount + areaLightCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(LightData))); + // envLightData = new ComputeBuffer(envLightCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(EnvLightData))); + // decalData = new ComputeBuffer(decalCount, System.Runtime.InteropServices.Marshal.SizeOf(typeof(DecalData))); + // } + + // public void Cleanup() + // { + // CoreUtils.SafeRelease(directionalLightData); + // CoreUtils.SafeRelease(lightData); + // CoreUtils.SafeRelease(envLightData); + // CoreUtils.SafeRelease(decalData); + // } + // } // TODO RENDERGRAPH: When we remove the old pass, we need to remove/refactor this class // With render graph it's only useful for 3 buffers and a boolean value. class TileAndClusterData { - // Internal to light list building - public ComputeBuffer lightVolumeDataBuffer { get; private set; } - public ComputeBuffer convexBoundsBuffer { get; private set; } - public ComputeBuffer globalLightListAtomic { get; private set; } + // Buffers filled with the CPU outside of render graph. + public ComputeBuffer convexBoundsBuffer { get; /*private*/ set; } + + // Transient buffers that are not used outside of BuildGPULightList so they don't need to go outside the pass. + public ComputeBuffer xyBoundsBuffer { get; private set; } + public ComputeBuffer wBoundsBuffer { get; private set; } + + // Output + public ComputeBuffer coarseTileBuffer { get; private set; } + public ComputeBuffer fineTileBuffer { get; private set; } + public ComputeBuffer zBinBuffer { get; private set; } + public ComputeBuffer tileFeatureFlagsBuffer { get; private set; } // Deferred + public ComputeBuffer tileListBuffer { get; private set; } // Deferred + public ComputeBuffer dispatchIndirectBuffer { get; private set; } // Deferred + public bool listsAreClear = false; public bool clusterNeedsDepth { get; private set; } public bool hasTileBuffers { get; private set; } public int maxLightCount { get; private set; } + public int maxBoundedEntityCount { get; private set; } + public int tileEntryLimit { get; private set; } - public void Initialize(bool allocateTileBuffers, bool clusterNeedsDepth, int maxLightCount) + public void Initialize(bool allocateTileBuffers, bool clusterNeedsDepth, int maxLightCount, int maxBoundedEntityCount, int tileEntryLimit) { hasTileBuffers = allocateTileBuffers; this.clusterNeedsDepth = clusterNeedsDepth; this.maxLightCount = maxLightCount; - globalLightListAtomic = new ComputeBuffer(1, sizeof(uint)); + this.maxBoundedEntityCount = maxBoundedEntityCount; + this.tileEntryLimit = tileEntryLimit; + //globalLightListAtomic = new ComputeBuffer(1, sizeof(uint)); } - public void AllocateResolutionDependentBuffers(HDCamera hdCamera, int width, int height, int viewCount, int maxLightOnScreen) + public void AllocateResolutionDependentBuffers(HDCamera hdCamera, int width, int height, int viewCount) { - convexBoundsBuffer = new ComputeBuffer(viewCount * maxLightOnScreen, System.Runtime.InteropServices.Marshal.SizeOf(typeof(SFiniteLightBound))); - lightVolumeDataBuffer = new ComputeBuffer(viewCount * maxLightOnScreen, System.Runtime.InteropServices.Marshal.SizeOf(typeof(LightVolumeData))); + if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting)) + { + /* These are not resolution-dependent at all, but the old code allocated them here... */ + xyBoundsBuffer = new ComputeBuffer(maxBoundedEntityCount * viewCount, 4 * sizeof(float)); // {x_min, x_max, y_min, y_max} + wBoundsBuffer = new ComputeBuffer(maxBoundedEntityCount * viewCount, 2 * sizeof(float)); // {w_min, w_max} + zBinBuffer = new ComputeBuffer(TiledLightingConstants.s_zBinCount * (int)BoundedEntityCategory.Count * viewCount, sizeof(uint)); // {last << 16 | first} + + /* Actually resolution-dependent buffers below. */ + int elementsPerTile = HDUtils.DivRoundUp(tileEntryLimit, 32); // Each element is a DWORD + + Vector2Int coarseTileBufferDimensions = GetCoarseTileBufferDimensions(hdCamera); + + // The tile buffer is a bit field with 1 bit per entity. + int coarseTileBufferElementCount = coarseTileBufferDimensions.x * coarseTileBufferDimensions.y * viewCount * elementsPerTile; + + coarseTileBuffer = new ComputeBuffer(coarseTileBufferElementCount, sizeof(uint)); + + Vector2Int fineTileBufferDimensions = GetFineTileBufferDimensions(hdCamera); + + // The tile buffer is a bit field with 1 bit per entity. + int fineTileBufferElementCount = fineTileBufferDimensions.x * fineTileBufferDimensions.y * viewCount * elementsPerTile; + + fineTileBuffer = new ComputeBuffer(fineTileBufferElementCount, sizeof(uint)); + + // Assume the deferred lighting CS uses fine tiles. + int numTiles = fineTileBufferDimensions.x * fineTileBufferDimensions.y; + + /* We may want to allocate the 3 buffers below conditionally. */ + tileFeatureFlagsBuffer = new ComputeBuffer(numTiles * viewCount, sizeof(uint)); + tileListBuffer = new ComputeBuffer(numTiles * viewCount * TiledLightingConstants.s_NumFeatureVariants, sizeof(uint)); + + // DispatchIndirect: Buffer with arguments has to have three integer numbers at given argsOffset offset: number of work groups in X dimension, number of work groups in Y dimension, number of work groups in Z dimension. + // DrawProceduralIndirect: Buffer with arguments has to have four integer numbers at given argsOffset offset: vertex count per instance, instance count, start vertex location, and start instance location + // Use use max size of 4 unit for allocation + /* Also not resolution-dependent at all, but the old code allocated it here... */ + dispatchIndirectBuffer = new ComputeBuffer(TiledLightingConstants.s_NumFeatureVariants * viewCount, 4 * sizeof(uint), ComputeBufferType.IndirectArguments); + } // Make sure to invalidate the content of the buffers listsAreClear = false; @@ -428,15 +801,28 @@ public void AllocateResolutionDependentBuffers(HDCamera hdCamera, int width, int public void ReleaseResolutionDependentBuffers() { - CoreUtils.SafeRelease(convexBoundsBuffer); - CoreUtils.SafeRelease(lightVolumeDataBuffer); - convexBoundsBuffer = null; - lightVolumeDataBuffer = null; + // Binned lighting + CoreUtils.SafeRelease(xyBoundsBuffer); + xyBoundsBuffer = null; + CoreUtils.SafeRelease(wBoundsBuffer); + wBoundsBuffer = null; + CoreUtils.SafeRelease(zBinBuffer); + zBinBuffer = null; + CoreUtils.SafeRelease(coarseTileBuffer); + coarseTileBuffer = null; + CoreUtils.SafeRelease(fineTileBuffer); + fineTileBuffer = null; + CoreUtils.SafeRelease(tileFeatureFlagsBuffer); + tileFeatureFlagsBuffer = null; + CoreUtils.SafeRelease(tileListBuffer); + tileListBuffer = null; + CoreUtils.SafeRelease(dispatchIndirectBuffer); + dispatchIndirectBuffer = null; } public void Cleanup() { - CoreUtils.SafeRelease(globalLightListAtomic); + //CoreUtils.SafeRelease(globalLightListAtomic); ReleaseResolutionDependentBuffers(); } @@ -445,29 +831,21 @@ public void Cleanup() // TODO: Remove the internal internal LightLoopTextureCaches m_TextureCaches = new LightLoopTextureCaches(); // TODO: Remove the internal - internal LightLoopLightData m_LightLoopLightData = new LightLoopLightData(); + // internal LightLoopLightData m_LightLoopLightData = new LightLoopLightData(); TileAndClusterData m_TileAndClusterData = new TileAndClusterData(); // This control if we use cascade borders for directional light by default static internal readonly bool s_UseCascadeBorders = true; // Keep sorting array around to avoid garbage - uint[] m_SortKeys = null; DynamicArray m_ProcessedLightData = new DynamicArray(); DynamicArray m_ProcessedReflectionProbeData = new DynamicArray(); DynamicArray m_ProcessedPlanarProbeData = new DynamicArray(); - - void UpdateSortKeysArray(int count) - { - if (m_SortKeys == null || count > m_SortKeys.Length) - { - m_SortKeys = new uint[count]; - } - } + DynamicArray m_ProcessedShadowLightList = new DynamicArray(); static readonly Matrix4x4 s_FlipMatrixLHSRHS = Matrix4x4.Scale(new Vector3(1, 1, -1)); - Matrix4x4 GetWorldToViewMatrix(HDCamera hdCamera, int viewIndex) + static Matrix4x4 GetWorldToViewMatrix(HDCamera hdCamera, int viewIndex) { var viewMatrix = (hdCamera.xr.enabled ? hdCamera.xr.GetViewMatrix(viewIndex) : hdCamera.camera.worldToCameraMatrix); @@ -485,62 +863,22 @@ Matrix4x4 GetWorldToViewMatrix(HDCamera hdCamera, int viewIndex) // Matrix used for LightList building, keep them around to avoid GC Matrix4x4[] m_LightListProjMatrices = new Matrix4x4[ShaderConfig.s_XrMaxViews]; - internal class LightList - { - public List directionalLights; - public List lights; - public List envLights; - public int punctualLightCount; - public int areaLightCount; - - public struct LightsPerView - { - public List bounds; - public List lightVolumes; - } - - public List lightsPerView; - - public void Clear() - { - directionalLights.Clear(); - lights.Clear(); - envLights.Clear(); - punctualLightCount = 0; - areaLightCount = 0; - - for (int i = 0; i < lightsPerView.Count; ++i) - { - lightsPerView[i].bounds.Clear(); - lightsPerView[i].lightVolumes.Clear(); - } - } - - public void Allocate() - { - directionalLights = new List(); - lights = new List(); - envLights = new List(); + internal List m_DirectionalLightData; // Global list + internal List m_DirectionalLightIndices; + internal ComputeBuffer m_DirectionalLightDataBuffer; - lightsPerView = new List(); - for (int i = 0; i < TextureXR.slices; ++i) - { - lightsPerView.Add(new LightsPerView { bounds = new List(), lightVolumes = new List() }); - } - } - } + internal BoundedEntityCollection m_BoundedEntityCollection; // Per-tile (and per-view) lists - internal LightList m_lightList; - int m_TotalLightCount = 0; - int m_DensityVolumeCount = 0; bool m_EnableBakeShadowMask = false; // Track if any light require shadow mask. In this case we will need to enable the keyword shadow mask ComputeShader buildScreenAABBShader { get { return defaultResources.shaders.buildScreenAABBCS; } } + ComputeShader zBinShader { get { return defaultResources.shaders.zBinCS; } } + ComputeShader tileShader { get { return defaultResources.shaders.tileCS; } } ComputeShader buildPerTileLightListShader { get { return defaultResources.shaders.buildPerTileLightListCS; } } ComputeShader buildPerBigTileLightListShader { get { return defaultResources.shaders.buildPerBigTileLightListCS; } } ComputeShader buildPerVoxelLightListShader { get { return defaultResources.shaders.buildPerVoxelLightListCS; } } ComputeShader clearClusterAtomicIndexShader { get { return defaultResources.shaders.lightListClusterClearAtomicIndexCS; } } - ComputeShader buildMaterialFlagsShader { get { return defaultResources.shaders.buildMaterialFlagsCS; } } + ComputeShader classificationShader { get { return defaultResources.shaders.classificationCS; } } ComputeShader buildDispatchIndirectShader { get { return defaultResources.shaders.buildDispatchIndirectCS; } } ComputeShader clearDispatchIndirectShader { get { return defaultResources.shaders.clearDispatchIndirectCS; } } ComputeShader deferredComputeShader { get { return defaultResources.shaders.deferredCS; } } @@ -582,9 +920,7 @@ enum ClusterDepthSource : int static int[,] s_ClusterObliqueKernels = new int[(int)ClusterPrepassSource.Count, (int)ClusterDepthSource.Count]; static int s_ClearVoxelAtomicKernel; static int s_ClearDispatchIndirectKernel; - static int s_BuildIndirectKernel; static int s_ClearDrawProceduralIndirectKernel; - static int s_BuildMaterialFlagsWriteKernel; static int s_BuildMaterialFlagsOrKernel; static int s_shadeOpaqueDirectFptlKernel; @@ -592,7 +928,7 @@ enum ClusterDepthSource : int static int s_shadeOpaqueDirectShadowMaskFptlKernel; static int s_shadeOpaqueDirectShadowMaskFptlDebugDisplayKernel; - static int[] s_shadeOpaqueIndirectFptlKernels = new int[LightDefinitions.s_NumFeatureVariants]; + static int[] s_shadeOpaqueIndirectFptlKernels = new int[TiledLightingConstants.s_NumFeatureVariants]; static int s_deferredContactShadowKernel; @@ -614,14 +950,14 @@ enum ClusterDepthSource : int static Material s_DeferredTileRegularLightingMat; // stencil-test set to touch regular pixels only static Material s_DeferredTileSplitLightingMat; // stencil-test set to touch split-lighting pixels only static Material s_DeferredTileMat; // fallback when regular and split-lighting pixels must be touch - static String[] s_variantNames = new String[LightDefinitions.s_NumFeatureVariants]; + static String[] s_variantNames = new String[TiledLightingConstants.s_NumFeatureVariants]; ContactShadows m_ContactShadows = null; bool m_EnableContactShadow = false; IndirectLightingController m_indirectLightingController = null; - // Following is an array of material of size eight for all combination of keyword: OUTPUT_SPLIT_LIGHTING - LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - SHADOWS_SHADOWMASK - USE_FPTL_LIGHTLIST/USE_CLUSTERED_LIGHTLIST - DEBUG_DISPLAY + // Following is an array of material for all combination of keyword: OUTPUT_SPLIT_LIGHTING - SHADOWS_SHADOWMASK - DEBUG_DISPLAY Material[] m_deferredLightingMaterial; HashSet m_ScreenSpaceShadowsUnion = new HashSet(); @@ -633,18 +969,6 @@ enum ClusterDepthSource : int DirectionalLightData m_CurrentSunLightDirectionalLightData; internal Light GetCurrentSunLight() { return m_CurrentSunLight; } - // Screen space shadow data - struct ScreenSpaceShadowData - { - public HDAdditionalLightData additionalLightData; - public int lightDataIndex; - public bool valid; - } - - int m_ScreenSpaceShadowIndex = 0; - int m_ScreenSpaceShadowChannelSlot = 0; - ScreenSpaceShadowData[] m_CurrentScreenSpaceShadowData; - // Contact shadow index reseted at the beginning of each frame, used to generate the contact shadow mask int m_ContactShadowIndex; @@ -652,46 +976,61 @@ struct ScreenSpaceShadowData HDShadowManager m_ShadowManager; HDShadowInitParameters m_ShadowInitParameters; - // Used to shadow shadow maps with use selection enabled in the debug menu + // Used to debug shadow shadow maps with use selection enabled in the debug menu int m_DebugSelectedLightShadowIndex; int m_DebugSelectedLightShadowCount; + // Used to debug binned lighting. + public int m_DebugSelectedEntityCategory; + public int m_DebugSelectedEntityCategoryBudget; + // Data needed for the PrepareGPULightdata List m_WorldToViewMatrices = new List(ShaderConfig.s_XrMaxViews); - bool HasLightToCull() + static Vector2Int GetCoarseTileBufferDimensions(HDCamera hdCamera) + { + int w = HDUtils.DivRoundUp((int)hdCamera.screenSize.x, TiledLightingConstants.s_CoarseTileSize); + int h = HDUtils.DivRoundUp((int)hdCamera.screenSize.y, TiledLightingConstants.s_CoarseTileSize); + + return new Vector2Int(w, h); + } + + static Vector2Int GetFineTileBufferDimensions(HDCamera hdCamera) { - return m_TotalLightCount > 0; + int w = HDUtils.DivRoundUp((int)hdCamera.screenSize.x, TiledLightingConstants.s_FineTileSize); + int h = HDUtils.DivRoundUp((int)hdCamera.screenSize.y, TiledLightingConstants.s_FineTileSize); + + return new Vector2Int(w, h); } static int GetNumTileBigTileX(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, LightDefinitions.s_TileSizeBigTile); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, TiledLightingConstants.s_TileSizeBigTile); } static int GetNumTileBigTileY(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, LightDefinitions.s_TileSizeBigTile); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, TiledLightingConstants.s_TileSizeBigTile); } static int GetNumTileFtplX(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, LightDefinitions.s_TileSizeFptl); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, TiledLightingConstants.s_TileSizeFptl); } static int GetNumTileFtplY(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, LightDefinitions.s_TileSizeFptl); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, TiledLightingConstants.s_TileSizeFptl); } static int GetNumTileClusteredX(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, LightDefinitions.s_TileSizeClustered); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.x, TiledLightingConstants.s_TileSizeClustered); } static int GetNumTileClusteredY(HDCamera hdCamera) { - return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, LightDefinitions.s_TileSizeClustered); + return HDUtils.DivRoundUp((int)hdCamera.screenSize.y, TiledLightingConstants.s_TileSizeClustered); } void InitShadowSystem(HDRenderPipelineAsset hdAsset, RenderPipelineResources defaultResources) @@ -738,9 +1077,6 @@ void InitializeLightLoop(IBLFilterBSDF[] iBLFilterBSDFArray) { var lightLoopSettings = asset.currentPlatformRenderPipelineSettings.lightLoopSettings; - m_lightList = new LightList(); - m_lightList.Allocate(); - m_MaxDirectionalLightsOnScreen = lightLoopSettings.maxDirectionalLightsOnScreen; m_MaxPunctualLightsOnScreen = lightLoopSettings.maxPunctualLightsOnScreen; m_MaxAreaLightsOnScreen = lightLoopSettings.maxAreaLightsOnScreen; @@ -748,6 +1084,7 @@ void InitializeLightLoop(IBLFilterBSDF[] iBLFilterBSDFArray) m_MaxEnvLightsOnScreen = lightLoopSettings.maxEnvLightsOnScreen; m_MaxLightsOnScreen = m_MaxDirectionalLightsOnScreen + m_MaxPunctualLightsOnScreen + m_MaxAreaLightsOnScreen + m_MaxEnvLightsOnScreen; m_MaxPlanarReflectionOnScreen = lightLoopSettings.maxPlanarReflectionOnScreen; + m_TileEntryLimit = lightLoopSettings.tileEntryLimit; // Cluster { @@ -767,28 +1104,38 @@ void InitializeLightLoop(IBLFilterBSDF[] iBLFilterBSDFArray) s_GenListPerBigTileKernel = buildPerBigTileLightListShader.FindKernel("BigTileLightListGen"); - s_BuildIndirectKernel = buildDispatchIndirectShader.FindKernel("BuildIndirect"); s_ClearDispatchIndirectKernel = clearDispatchIndirectShader.FindKernel("ClearDispatchIndirect"); s_ClearDrawProceduralIndirectKernel = clearDispatchIndirectShader.FindKernel("ClearDrawProceduralIndirect"); - s_BuildMaterialFlagsWriteKernel = buildMaterialFlagsShader.FindKernel("MaterialFlagsGen"); - s_shadeOpaqueDirectFptlKernel = deferredComputeShader.FindKernel("Deferred_Direct_Fptl"); s_shadeOpaqueDirectFptlDebugDisplayKernel = deferredComputeShader.FindKernel("Deferred_Direct_Fptl_DebugDisplay"); s_deferredContactShadowKernel = contactShadowComputeShader.FindKernel("DeferredContactShadow"); - for (int variant = 0; variant < LightDefinitions.s_NumFeatureVariants; variant++) + for (int variant = 0; variant < TiledLightingConstants.s_NumFeatureVariants; variant++) { s_shadeOpaqueIndirectFptlKernels[variant] = deferredComputeShader.FindKernel("Deferred_Indirect_Fptl_Variant" + variant); } m_TextureCaches.Initialize(asset, defaultResources, iBLFilterBSDFArray); - // All the allocation of the compute buffers need to happened after the kernel finding in order to avoid the leak loop when a shader does not compile or is not available - m_LightLoopLightData.Initialize(m_MaxDirectionalLightsOnScreen, m_MaxPunctualLightsOnScreen, m_MaxAreaLightsOnScreen, m_MaxEnvLightsOnScreen, m_MaxDecalsOnScreen); - m_TileAndClusterData.Initialize(allocateTileBuffers: true, clusterNeedsDepth: k_UseDepthBuffer, maxLightCount: m_MaxLightsOnScreen); + int xrViewCount = TextureXR.slices; + + int[] maxBoundedEntityCounts = new int[(int)BoundedEntityCategory.Count]; + maxBoundedEntityCounts[(int)BoundedEntityCategory.PunctualLight] = m_MaxPunctualLightsOnScreen; + maxBoundedEntityCounts[(int)BoundedEntityCategory.AreaLight] = m_MaxAreaLightsOnScreen; + maxBoundedEntityCounts[(int)BoundedEntityCategory.ReflectionProbe] = m_MaxEnvLightsOnScreen; + maxBoundedEntityCounts[(int)BoundedEntityCategory.Decal] = m_MaxDecalsOnScreen; + maxBoundedEntityCounts[(int)BoundedEntityCategory.DensityVolume] = m_MaxDensityVolumesOnScreen; + + m_DirectionalLightData = new List(); + m_DirectionalLightIndices = new List(); + m_DirectionalLightDataBuffer = new ComputeBuffer(m_MaxDirectionalLightsOnScreen, Marshal.SizeOf(typeof(DirectionalLightData))); + m_BoundedEntityCollection = new BoundedEntityCollection(xrViewCount, maxBoundedEntityCounts); + + // All the allocation of the compute buffers need to happened after the kernel finding in order to avoid the leak loop when a shader does not compile or is not available + m_TileAndClusterData.Initialize(allocateTileBuffers: true, clusterNeedsDepth: k_UseDepthBuffer, maxLightCount: m_MaxLightsOnScreen, maxBoundedEntityCount: m_BoundedEntityCollection.GetMaxEntityCount(), tileEntryLimit: m_TileEntryLimit); // OUTPUT_SPLIT_LIGHTING - SHADOWS_SHADOWMASK - DEBUG_DISPLAY m_deferredLightingMaterial = new Material[8]; @@ -840,7 +1187,7 @@ void InitializeLightLoop(IBLFilterBSDF[] iBLFilterBSDFArray) s_DeferredTileMat.SetInt(HDShaderIDs._StencilRef, (int)StencilUsage.Clear); s_DeferredTileMat.SetInt(HDShaderIDs._StencilCmp, (int)CompareFunction.NotEqual); - for (int i = 0; i < LightDefinitions.s_NumFeatureVariants; ++i) + for (int i = 0; i < TiledLightingConstants.s_NumFeatureVariants; ++i) s_variantNames[i] = "VARIANT" + i; m_DefaultTexture2DArray = new Texture2DArray(1, 1, 1, TextureFormat.ARGB32, false); @@ -885,9 +1232,10 @@ void InitializeLightLoop(IBLFilterBSDF[] iBLFilterBSDFArray) s_lightVolumes = new DebugLightVolumes(); s_lightVolumes.InitData(defaultResources); - // Screen space shadow int numMaxShadows = Math.Max(m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.maxScreenSpaceShadowSlots, 1); m_CurrentScreenSpaceShadowData = new ScreenSpaceShadowData[numMaxShadows]; + m_CurrentScreenSpaceShadowLightData = new LightData[numMaxShadows]; + m_ScreenSpaceShadowsLightData = new ComputeBuffer(numMaxShadows, System.Runtime.InteropServices.Marshal.SizeOf(typeof(LightData))); } void CleanupLightLoop() @@ -900,9 +1248,11 @@ void CleanupLightLoop() CoreUtils.Destroy(m_DefaultTextureCube); m_TextureCaches.Cleanup(); - m_LightLoopLightData.Cleanup(); m_TileAndClusterData.Cleanup(); + CoreUtils.SafeRelease(m_DirectionalLightDataBuffer); + m_BoundedEntityCollection.Release(); + LightLoopReleaseResolutionDependentBuffers(); for (int outputSplitLighting = 0; outputSplitLighting < 2; ++outputSplitLighting) @@ -920,6 +1270,9 @@ void CleanupLightLoop() CoreUtils.Destroy(s_DeferredTileRegularLightingMat); CoreUtils.Destroy(s_DeferredTileSplitLightingMat); CoreUtils.Destroy(s_DeferredTileMat); + + CoreUtils.SafeRelease(m_ScreenSpaceShadowsLightData); + m_ScreenSpaceShadowsLightData = null; } void LightLoopNewRender() @@ -967,7 +1320,7 @@ static int NumLightIndicesPerClusteredTile() void LightLoopAllocResolutionDependentBuffers(HDCamera hdCamera, int width, int height) { - m_TileAndClusterData.AllocateResolutionDependentBuffers(hdCamera, width, height, m_MaxViewCount, m_MaxLightsOnScreen); + m_TileAndClusterData.AllocateResolutionDependentBuffers(hdCamera, width, height, m_MaxViewCount); } void LightLoopReleaseResolutionDependentBuffers() @@ -1112,7 +1465,7 @@ static Vector3 EvaluateAtmosphericAttenuation(PhysicallyBasedSky skySettings, Ve } } - internal void GetDirectionalLightData(CommandBuffer cmd, HDCamera hdCamera, VisibleLight light, Light lightComponent, int lightIndex, int shadowIndex, + internal DirectionalLightData GetDirectionalLightData(CommandBuffer cmd, HDCamera hdCamera, VisibleLight light, Light lightComponent, int lightIndex, int shadowIndex, int sortedIndex, bool isPhysicallyBasedSkyActive, ref int screenSpaceShadowIndex, ref int screenSpaceShadowslot) { var processedData = m_ProcessedLightData[lightIndex]; @@ -1141,7 +1494,7 @@ internal void GetDirectionalLightData(CommandBuffer cmd, HDCamera hdCamera, Visi lightData.volumetricLightDimmer = additionalLightData.volumetricDimmer; lightData.shadowIndex = -1; - lightData.screenSpaceShadowIndex = (int)LightDefinitions.s_InvalidScreenSpaceShadow; + lightData.screenSpaceShadowIndex = (int)TiledLightingConstants.s_InvalidScreenSpaceShadow; lightData.isRayTracedContactShadow = 0.0f; if (lightComponent != null && lightComponent.cookie != null) @@ -1185,7 +1538,7 @@ internal void GetDirectionalLightData(CommandBuffer cmd, HDCamera hdCamera, Visi if (additionalLightData.colorShadow && additionalLightData.WillRenderRayTracedShadow()) { screenSpaceShadowslot += 3; - lightData.screenSpaceShadowIndex |= (int)LightDefinitions.s_ScreenSpaceColorShadowFlag; + lightData.screenSpaceShadowIndex |= (int)TiledLightingConstants.s_ScreenSpaceColorShadowFlag; } else { @@ -1247,7 +1600,7 @@ internal void GetDirectionalLightData(CommandBuffer cmd, HDCamera hdCamera, Visi // Fallback to the first non shadow casting directional light. m_CurrentSunLight = m_CurrentSunLight == null ? lightComponent : m_CurrentSunLight; - m_lightList.directionalLights.Add(lightData); + return lightData; } // This function evaluates if there is currently enough screen space sahdow slots of a given light based on its light type @@ -1264,13 +1617,15 @@ bool EnoughScreenSpaceShadowSlots(GPULightType gpuLightType, int screenSpaceChan } } - internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSettings shadowSettings, VisibleLight light, Light lightComponent, - in ProcessedLightData processedData, int shadowIndex, BoolScalableSetting contactShadowsScalableSetting, bool isRasterization, ref Vector3 lightDimensions, ref int screenSpaceShadowIndex, ref int screenSpaceChannelSlot, ref LightData lightData) + internal LightData GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSettings shadowSettings, VisibleLight light, Light lightComponent, + in ProcessedLightData processedData, int shadowIndex, BoolScalableSetting contactShadowsScalableSetting, bool isRasterization, ref Vector3 lightDimensions, ref int screenSpaceShadowIndex, ref int screenSpaceChannelSlot) { var additionalLightData = processedData.additionalLightData; var gpuLightType = processedData.gpuLightType; var lightType = processedData.lightType; + var lightData = new LightData(); + var visibleLightAxisAndPosition = light.GetAxisAndPosition(); lightData.lightLayers = hdCamera.frameSettings.IsEnabled(FrameSettingsField.LightLayers) ? additionalLightData.GetLightLayers() : uint.MaxValue; @@ -1410,7 +1765,7 @@ internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSetting lightData.cookieMode = CookieMode.None; lightData.shadowIndex = -1; - lightData.screenSpaceShadowIndex = (int)LightDefinitions.s_InvalidScreenSpaceShadow; + lightData.screenSpaceShadowIndex = (int)TiledLightingConstants.s_InvalidScreenSpaceShadow; lightData.isRayTracedContactShadow = 0.0f; if (lightComponent != null && additionalLightData != null && @@ -1488,7 +1843,36 @@ internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSetting else lightData.shadowTint = new Vector3(additionalLightData.shadowTint.r, additionalLightData.shadowTint.g, additionalLightData.shadowTint.b); + lightData.shadowIndex = shadowIndex; + + if (isRasterization) + { + // Keep track of the shadow map (for indirect lighting and transparents) + additionalLightData.shadowIndex = shadowIndex; + } + + + //Value of max smoothness is derived from Radius. Formula results from eyeballing. Radius of 0 results in 1 and radius of 2.5 results in 0. + float maxSmoothness = Mathf.Clamp01(1.1725f / (1.01f + Mathf.Pow(1.0f * (additionalLightData.shapeRadius + 0.1f), 2f)) - 0.15f); + // Value of max smoothness is from artists point of view, need to convert from perceptual smoothness to roughness + lightData.minRoughness = (1.0f - maxSmoothness) * (1.0f - maxSmoothness); + + lightData.shadowMaskSelector = Vector4.zero; + + if (processedData.isBakedShadowMask) + { + lightData.shadowMaskSelector[lightComponent.bakingOutput.occlusionMaskChannel] = 1.0f; + lightData.nonLightMappedOnly = lightComponent.lightShadowCasterMode == LightShadowCasterMode.NonLightmappedOnly ? 1 : 0; + } + else + { + // use -1 to say that we don't use shadow mask + lightData.shadowMaskSelector.x = -1.0f; + lightData.nonLightMappedOnly = 0; + } + // If there is still a free slot in the screen space shadow array and this needs to render a screen space shadow + // Keep that at the end because we copy the LightData in the SSShadow array so we need it to be complete. if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && EnoughScreenSpaceShadowSlots(lightData.lightType, screenSpaceChannelSlot) && additionalLightData.WillRenderScreenSpaceShadow() @@ -1510,10 +1894,18 @@ internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSetting // Keep track of the screen space shadow data m_CurrentScreenSpaceShadowData[screenSpaceShadowIndex].additionalLightData = additionalLightData; - m_CurrentScreenSpaceShadowData[screenSpaceShadowIndex].lightDataIndex = m_lightList.lights.Count; m_CurrentScreenSpaceShadowData[screenSpaceShadowIndex].valid = true; + m_CurrentScreenSpaceShadowLightData[screenSpaceShadowIndex] = lightData; m_ScreenSpaceShadowsUnion.Add(additionalLightData); + // Screen space shadows require camera relative positions. + // So we have to convert this here just for shadows because the position is still required in absolute world space after this function call in the main light data arrays. + if (ShaderConfig.s_CameraRelativeRendering != 0) + { + Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; + m_CurrentScreenSpaceShadowLightData[screenSpaceShadowIndex].positionRWS -= hdCamera.mainViewConstants.worldSpaceCameraPos; + } + // increment the number of screen space shadows screenSpaceShadowIndex++; @@ -1524,37 +1916,11 @@ internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSetting screenSpaceChannelSlot++; } - lightData.shadowIndex = shadowIndex; - - if (isRasterization) - { - // Keep track of the shadow map (for indirect lighting and transparents) - additionalLightData.shadowIndex = shadowIndex; - } - - - //Value of max smoothness is derived from Radius. Formula results from eyeballing. Radius of 0 results in 1 and radius of 2.5 results in 0. - float maxSmoothness = Mathf.Clamp01(1.1725f / (1.01f + Mathf.Pow(1.0f * (additionalLightData.shapeRadius + 0.1f), 2f)) - 0.15f); - // Value of max smoothness is from artists point of view, need to convert from perceptual smoothness to roughness - lightData.minRoughness = (1.0f - maxSmoothness) * (1.0f - maxSmoothness); - - lightData.shadowMaskSelector = Vector4.zero; - - if (processedData.isBakedShadowMask) - { - lightData.shadowMaskSelector[lightComponent.bakingOutput.occlusionMaskChannel] = 1.0f; - lightData.nonLightMappedOnly = lightComponent.lightShadowCasterMode == LightShadowCasterMode.NonLightmappedOnly ? 1 : 0; - } - else - { - // use -1 to say that we don't use shadow mask - lightData.shadowMaskSelector.x = -1.0f; - lightData.nonLightMappedOnly = 0; - } - } + return lightData; + } // TODO: we should be able to do this calculation only with LightData without VisibleLight light, but for now pass both - void GetLightVolumeDataAndBound(LightCategory lightCategory, GPULightType gpuLightType, LightVolumeType lightVolumeType, + FiniteLightBound GetLightVolumeDataAndBound(BoundedEntityCategory lightCategory, GPULightType gpuLightType, VisibleLight light, LightData lightData, Vector3 lightDimensions, Matrix4x4 worldToView, int viewIndex) { // Then Culling side @@ -1568,11 +1934,11 @@ void GetLightVolumeDataAndBound(LightCategory lightCategory, GPULightType gpuLig Vector3 zAxisVS = worldToView.MultiplyVector(lightToWorld.GetColumn(2)); // Fill bounds - var bound = new SFiniteLightBound(); + var bound = new FiniteLightBound(); var lightVolumeData = new LightVolumeData(); lightVolumeData.lightCategory = (uint)lightCategory; - lightVolumeData.lightVolume = (uint)lightVolumeType; + //lightVolumeData.lightVolume = (uint)lightVolumeType; if (gpuLightType == GPULightType.Spot || gpuLightType == GPULightType.ProjectorPyramid) { @@ -1606,8 +1972,17 @@ void GetLightVolumeDataAndBound(LightCategory lightCategory, GPULightType gpuLig bound.center = worldToView.MultiplyPoint(positionWS + ((0.5f * range) * lightDir)); // use mid point of the spot as the center of the bounding volume for building screen-space AABB for tiled lighting. // scale axis to match box or base of pyramid - bound.boxAxisX = (fS * range) * vx; - bound.boxAxisY = (fS * range) * vy; + if (gpuLightType == GPULightType.ProjectorPyramid) + { + bound.boxAxisX = (0.5f * range) * lightDimensions.x * vx; + bound.boxAxisY = (0.5f * range) * lightDimensions.y * vy; + } + else + { + bound.boxAxisX = (fS * range) * vx; + bound.boxAxisY = (fS * range) * vy; + } + bound.boxAxisZ = (0.5f * range) * vz; // generate bounding sphere radius @@ -1621,7 +1996,7 @@ void GetLightVolumeDataAndBound(LightCategory lightCategory, GPULightType gpuLig // Handle case of pyramid with this select (currently unused) var altDist = Mathf.Sqrt(fAltDy * fAltDy + (true ? 1.0f : 2.0f) * fAltDx * fAltDx); bound.radius = altDist > (0.5f * range) ? altDist : (0.5f * range); // will always pick fAltDist - bound.scaleXY = squeeze ? 0.01f : 1.0f; + bound.scaleXY = squeeze ? 1e-4f : 1.0f; lightVolumeData.lightAxisX = vx; lightVolumeData.lightAxisY = vy; @@ -1726,8 +2101,7 @@ void GetLightVolumeDataAndBound(LightCategory lightCategory, GPULightType gpuLig Debug.Assert(false, "TODO: encountered an unknown GPULightType."); } - m_lightList.lightsPerView[viewIndex].bounds.Add(bound); - m_lightList.lightsPerView[viewIndex].lightVolumes.Add(lightVolumeData); + return bound; } internal bool GetEnvLightData(CommandBuffer cmd, HDCamera hdCamera, in ProcessedProbeData processedProbe, ref EnvLightData envLightData) @@ -1850,6 +2224,7 @@ internal bool GetEnvLightData(CommandBuffer cmd, HDCamera hdCamera, in Processed InfluenceVolume influence = probe.influenceVolume; envLightData.lightLayers = hdCamera.frameSettings.IsEnabled(FrameSettingsField.LightLayers) ? probe.lightLayersAsUInt : uint.MaxValue; + envLightData.logVolume = processedProbe.logVolume; envLightData.influenceShapeType = influence.envShape; envLightData.weight = processedProbe.weight; envLightData.multiplier = probe.multiplier * m_indirectLightingController.reflectionProbeIntensityMultiplier.value; @@ -1905,9 +2280,9 @@ internal bool GetEnvLightData(CommandBuffer cmd, HDCamera hdCamera, in Processed return true; } - void GetEnvLightVolumeDataAndBound(HDProbe probe, LightVolumeType lightVolumeType, Matrix4x4 worldToView, int viewIndex) + FiniteLightBound GetEnvLightVolumeDataAndBound(HDProbe probe, Matrix4x4 worldToView, int viewIndex) { - var bound = new SFiniteLightBound(); + var bound = new FiniteLightBound(); var lightVolumeData = new LightVolumeData(); // C is reflection volume center in world space (NOT same as cube map capture point) @@ -1921,13 +2296,13 @@ void GetEnvLightVolumeDataAndBound(HDProbe probe, LightVolumeType lightVolumeTyp var influenceForwardVS = worldToView.MultiplyVector(influenceToWorld.GetColumn(2).normalized); var influencePositionVS = worldToView.MultiplyPoint(influenceToWorld.GetColumn(3)); - lightVolumeData.lightCategory = (uint)LightCategory.Env; - lightVolumeData.lightVolume = (uint)lightVolumeType; + lightVolumeData.lightCategory = (uint)BoundedEntityCategory.ReflectionProbe; + //lightVolumeData.lightVolume = (uint)lightVolumeType; lightVolumeData.featureFlags = (uint)LightFeatureFlags.Env; - switch (lightVolumeType) + switch (probe.influenceVolume.shape) { - case LightVolumeType.Sphere: + case InfluenceShape.Sphere: { lightVolumeData.lightPos = influencePositionVS; lightVolumeData.radiusSq = influenceExtents.x * influenceExtents.x; @@ -1943,7 +2318,7 @@ void GetEnvLightVolumeDataAndBound(HDProbe probe, LightVolumeType lightVolumeTyp bound.radius = influenceExtents.x; break; } - case LightVolumeType.Box: + case InfluenceShape.Box: { bound.center = influencePositionVS; bound.boxAxisX = influenceExtents.x * influenceRightVS; @@ -1963,16 +2338,20 @@ void GetEnvLightVolumeDataAndBound(HDProbe probe, LightVolumeType lightVolumeTyp lightVolumeData.boxInvRange.Set(1.0f / k_BoxCullingExtentThreshold.x, 1.0f / k_BoxCullingExtentThreshold.y, 1.0f / k_BoxCullingExtentThreshold.z); break; } + default: + { + Debug.Assert(false, "Encountered an unexpected case of a switch statement."); + break; + } } - m_lightList.lightsPerView[viewIndex].bounds.Add(bound); - m_lightList.lightsPerView[viewIndex].lightVolumes.Add(lightVolumeData); + return bound; } - void CreateBoxVolumeDataAndBound(OrientedBBox obb, LightCategory category, LightFeatureFlags featureFlags, Matrix4x4 worldToView, float normalBiasDilation, out LightVolumeData volumeData, out SFiniteLightBound bound) + FiniteLightBound GetBoxVolumeDataAndBound(OrientedBBox obb, BoundedEntityCategory category, LightFeatureFlags featureFlags, Matrix4x4 worldToView, float normalBiasDilation) { - volumeData = new LightVolumeData(); - bound = new SFiniteLightBound(); + var volumeData = new LightVolumeData(); + var bound = new FiniteLightBound(); // Used in Probe Volumes: // Conservatively dilate bounds used for tile / cluster assignment by normal bias. @@ -1989,7 +2368,7 @@ void CreateBoxVolumeDataAndBound(OrientedBBox obb, LightCategory category, Light var forwardVS = Vector3.Cross(upVS, rightVS); var extents = new Vector3(extentConservativeX, extentConservativeY, extentConservativeZ); - volumeData.lightVolume = (uint)LightVolumeType.Box; + //volumeData.lightVolume = (uint)LightVolumeType.Box; volumeData.lightCategory = (uint)category; volumeData.featureFlags = (uint)featureFlags; @@ -2009,6 +2388,8 @@ void CreateBoxVolumeDataAndBound(OrientedBBox obb, LightCategory category, Light volumeData.lightAxisZ = forwardVS; volumeData.boxInnerDist = extents - k_BoxCullingExtentThreshold; // We have no blend range, but the culling code needs a small EPS value for some reason??? volumeData.boxInvRange.Set(1.0f / k_BoxCullingExtentThreshold.x, 1.0f / k_BoxCullingExtentThreshold.y, 1.0f / k_BoxCullingExtentThreshold.z); + + return bound; } internal int GetCurrentShadowCount() @@ -2037,30 +2418,26 @@ internal static bool IsBakedShadowMaskLight(Light light) } internal static void EvaluateGPULightType(HDLightType lightType, SpotLightShape spotLightShape, AreaLightShape areaLightShape, - ref LightCategory lightCategory, ref GPULightType gpuLightType, ref LightVolumeType lightVolumeType) + ref BoundedEntityCategory lightCategory, ref GPULightType gpuLightType) { - lightCategory = LightCategory.Count; + lightCategory = BoundedEntityCategory.Count; gpuLightType = GPULightType.Point; - lightVolumeType = LightVolumeType.Count; switch (lightType) { case HDLightType.Spot: - lightCategory = LightCategory.Punctual; + lightCategory = BoundedEntityCategory.PunctualLight; switch (spotLightShape) { case SpotLightShape.Cone: gpuLightType = GPULightType.Spot; - lightVolumeType = LightVolumeType.Cone; break; case SpotLightShape.Pyramid: gpuLightType = GPULightType.ProjectorPyramid; - lightVolumeType = LightVolumeType.Cone; break; case SpotLightShape.Box: gpuLightType = GPULightType.ProjectorBox; - lightVolumeType = LightVolumeType.Box; break; default: Debug.Assert(false, "Encountered an unknown SpotLightShape."); @@ -2069,37 +2446,32 @@ internal static void EvaluateGPULightType(HDLightType lightType, SpotLightShape break; case HDLightType.Directional: - lightCategory = LightCategory.Punctual; + lightCategory = BoundedEntityCategory.None; // Unbounded gpuLightType = GPULightType.Directional; // No need to add volume, always visible - lightVolumeType = LightVolumeType.Count; // Count is none break; case HDLightType.Point: - lightCategory = LightCategory.Punctual; + lightCategory = BoundedEntityCategory.PunctualLight; gpuLightType = GPULightType.Point; - lightVolumeType = LightVolumeType.Sphere; break; case HDLightType.Area: - lightCategory = LightCategory.Area; + lightCategory = BoundedEntityCategory.AreaLight; switch (areaLightShape) { case AreaLightShape.Rectangle: gpuLightType = GPULightType.Rectangle; - lightVolumeType = LightVolumeType.Box; break; case AreaLightShape.Tube: gpuLightType = GPULightType.Tube; - lightVolumeType = LightVolumeType.Box; break; case AreaLightShape.Disc: //not used in real-time at the moment anyway gpuLightType = GPULightType.Disc; - lightVolumeType = LightVolumeType.Sphere; break; default: @@ -2114,6 +2486,135 @@ internal static void EvaluateGPULightType(HDLightType lightType, SpotLightShape } } + static float Log2f(float f) + { + return Mathf.Log(f, 2); // No way to directly emit the log2() instruction + } + + static int CeilLog2i(int i) + { + return Mathf.CeilToInt(Log2f(i)); // No integer log in our math library + } + + static void AssertUnitLength(Vector3 vec) + { + const float FLT_EPS = 5.960464478e-8f; + const float k = 32; // Empirical constant + + float sqMag = Vector3.SqrMagnitude(vec); + + Debug.Assert(Mathf.Abs(1 - sqMag) < k * FLT_EPS); + } + + static Vector3 ComputeWorldSpaceCentroidOfBoundedEntity(Light light) + { + // Most lights are "centered" by nature. + Vector3 centroidWS = light.transform.position; + + HDAdditionalLightData lightData = GetHDAdditionalLightData(light); + + HDLightType lightType = lightData.ComputeLightType(light); + Debug.Assert(lightType != HDLightType.Directional); + + if (lightType == HDLightType.Spot) + { + AssertUnitLength(light.transform.forward); + + Vector3 dirWS = light.transform.forward; + float range = lightData.range; + + centroidWS += (0.5f * range) * dirWS; + } + + return centroidWS; + } + + static Vector3 ComputeWorldSpaceCentroidOfBoundedEntity(HDProbe probe) + { + return (Vector3)probe.influenceToWorld.GetColumn(3); + } + + static float ComputeLinearDepth(Vector3 positionWS, HDCamera hdCamera, int viewIndex, bool forceRWS = false) + { + Matrix4x4 viewMatrix = GetWorldToViewMatrix(hdCamera, viewIndex); // Non-RWS + + if (forceRWS && (ShaderConfig.s_CameraRelativeRendering != 0)) + { + viewMatrix.SetColumn(3, new Vector4(0, 0, 0, 1)); + } + + Vector3 positionVS = viewMatrix.MultiplyPoint(positionWS); + + Debug.Assert(viewMatrix.MultiplyVector(hdCamera.camera.transform.forward).z > 0, "The view space z-axis must point forward!"); + + return positionVS.z; + } + + // 'w' is the linear depth (Z coordinate of the view-space position). + // 'f' is the distance to the far plane. + // We consider the distance to the near plane n ≈ 0, since that plane may be oblique. + static int ComputeFixedPointLinearDepth(float w, float f, int numBits = 16) + { + float z = Mathf.Clamp01(w/f); + + return Mathf.RoundToInt(z * ((1 << numBits) - 1)); + } + + internal struct BoundedEntitySortingKeyLayout + { + public const int k_EntityIndexBitCount = 16; + public const int k_EntitySpatialKeyBitCount = 20; + + public int categoryBitCount; + public int fixedPointSpatialKeyBitCount; + public int lightTypeBitCount; + public int indexBitCount; + public int totalBitCount; + + public int categoryOffset; + public int fixedPointSpatialKeyOffset; + public int lightTypeOffset; + public int indexOffset; + } + + internal static BoundedEntitySortingKeyLayout GetBoundedEntitySortingKeyLayout() + { + BoundedEntitySortingKeyLayout layout; + + layout.categoryBitCount = CeilLog2i((int)BoundedEntityCategory.Count); + layout.fixedPointSpatialKeyBitCount = BoundedEntitySortingKeyLayout.k_EntitySpatialKeyBitCount; + layout.lightTypeBitCount = CeilLog2i((int)GPULightType.Count); + layout.indexBitCount = BoundedEntitySortingKeyLayout.k_EntityIndexBitCount; + layout.totalBitCount = layout.categoryBitCount + + layout.fixedPointSpatialKeyBitCount + + layout.lightTypeBitCount + + layout.indexBitCount; + // LSB -> MSB. + layout.indexOffset = 0; + layout.lightTypeOffset = layout.indexBitCount + layout.indexOffset; + layout.fixedPointSpatialKeyOffset = layout.lightTypeBitCount + layout.lightTypeOffset; + layout.categoryOffset = layout.fixedPointSpatialKeyBitCount + layout.fixedPointSpatialKeyOffset; + + return layout; + } + + // 'lightType' is optional in case the entity is not a light. + internal static ulong GenerateBoundedEntitySortingKey(int index, BoundedEntityCategory category, int fixedPointLogDepth, int lightType = 0) + { + BoundedEntitySortingKeyLayout layout = GetBoundedEntitySortingKeyLayout(); + + Debug.Assert(layout.totalBitCount <= 8 * sizeof(ulong)); + Debug.Assert(0 <= (int)category && (int)category < (int)BoundedEntityCategory.Count); + Debug.Assert(fixedPointLogDepth < (1 << layout.fixedPointSpatialKeyBitCount)); + + ulong key = ((ulong)category << layout.categoryOffset) + | ((ulong)fixedPointLogDepth << layout.fixedPointSpatialKeyOffset) + | ((ulong)lightType << layout.lightTypeOffset) + | ((ulong)index << layout.indexOffset); + + return key; + } + bool TrivialRejectLight(VisibleLight light, HDCamera hdCamera, in AOVRequestData aovRequest) { // We can skip the processing of lights that are so small to not affect at least a pixel on screen. @@ -2140,12 +2641,11 @@ void PreprocessLightData(ref ProcessedLightData processedData, VisibleLight ligh processedData.lightType = additionalLightData.ComputeLightType(lightComponent); processedData.distanceToCamera = (additionalLightData.transform.position - hdCamera.camera.transform.position).magnitude; - // Evaluate the types that define the current light - processedData.lightCategory = LightCategory.Count; - processedData.gpuLightType = GPULightType.Point; - processedData.lightVolumeType = LightVolumeType.Count; - HDRenderPipeline.EvaluateGPULightType(processedData.lightType, processedData.additionalLightData.spotLightShape, processedData.additionalLightData.areaLightShape, - ref processedData.lightCategory, ref processedData.gpuLightType, ref processedData.lightVolumeType); + processedData.lightCategory = BoundedEntityCategory.Count; + processedData.gpuLightType = GPULightType.Count; + + EvaluateGPULightType(processedData.lightType, processedData.additionalLightData.spotLightShape, processedData.additionalLightData.areaLightShape, + ref processedData.lightCategory, ref processedData.gpuLightType); processedData.lightDistanceFade = processedData.gpuLightType == GPULightType.Directional ? 1.0f : HDUtils.ComputeLinearDistanceFade(processedData.distanceToCamera, additionalLightData.fadeDistance); processedData.volumetricDistanceFade = processedData.gpuLightType == GPULightType.Directional ? 1.0f : HDUtils.ComputeLinearDistanceFade(processedData.distanceToCamera, additionalLightData.volumetricFadeDistance); @@ -2165,16 +2665,14 @@ int PreprocessVisibleLights(HDCamera hdCamera, CullingResults cullResults, Debug // 1. Count the number of lights and sort all lights by category, type and volume - This is required for the fptl/cluster shader code // If we reach maximum of lights available on screen, then we discard the light. // Lights are processed in order, so we don't discards light based on their importance but based on their ordering in visible lights list. - int directionalLightcount = 0; - int punctualLightcount = 0; - int areaLightCount = 0; m_ProcessedLightData.Resize(cullResults.visibleLights.Length); + m_ProcessedShadowLightList.Resize(cullResults.visibleLights.Length); - int lightCount = Math.Min(cullResults.visibleLights.Length, m_MaxLightsOnScreen); - UpdateSortKeysArray(lightCount); - int sortCount = 0; - for (int lightIndex = 0, numLights = cullResults.visibleLights.Length; (lightIndex < numLights) && (sortCount < lightCount); ++lightIndex) + int maxLightCount = m_MaxDirectionalLightsOnScreen + m_MaxPunctualLightsOnScreen + m_MaxAreaLightsOnScreen; + int includedLightCount = 0; + + for (int lightIndex = 0, numLights = cullResults.visibleLights.Length; (lightIndex < numLights) && (includedLightCount < maxLightCount); ++lightIndex) { var light = cullResults.visibleLights[lightIndex]; @@ -2184,6 +2682,7 @@ int PreprocessVisibleLights(HDCamera hdCamera, CullingResults cullResults, Debug // Then we compute all light data that will be reused for the rest of the light loop. ref ProcessedLightData processedData = ref m_ProcessedLightData[lightIndex]; + m_ProcessedShadowLightList[lightIndex] = false; PreprocessLightData(ref processedData, light, hdCamera); // Then we can reject lights based on processed data. @@ -2206,19 +2705,15 @@ int PreprocessVisibleLights(HDCamera hdCamera, CullingResults cullResults, Debug // Do NOT process lights beyond the specified limit! switch (processedData.lightCategory) { - case LightCategory.Punctual: - if (processedData.gpuLightType == GPULightType.Directional) // Our directional lights are "punctual"... - { - if (!debugDisplaySettings.data.lightingDebugSettings.showDirectionalLight || directionalLightcount >= m_MaxDirectionalLightsOnScreen) continue; - directionalLightcount++; - break; - } - if (!debugDisplaySettings.data.lightingDebugSettings.showPunctualLight || punctualLightcount >= m_MaxPunctualLightsOnScreen) continue; - punctualLightcount++; + case BoundedEntityCategory.None: // Unbounded + Debug.Assert(processedData.gpuLightType == GPULightType.Directional); + if (!debugDisplaySettings.data.lightingDebugSettings.showDirectionalLight || m_DirectionalLightIndices.Count >= m_MaxDirectionalLightsOnScreen) continue; + break; + case BoundedEntityCategory.PunctualLight: + if (!debugDisplaySettings.data.lightingDebugSettings.showPunctualLight || m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.PunctualLight) >= m_MaxPunctualLightsOnScreen) continue; break; - case LightCategory.Area: - if (!debugDisplaySettings.data.lightingDebugSettings.showAreaLight || areaLightCount >= m_MaxAreaLightsOnScreen) continue; - areaLightCount++; + case BoundedEntityCategory.AreaLight: + if (!debugDisplaySettings.data.lightingDebugSettings.showAreaLight || m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.AreaLight) >= m_MaxAreaLightsOnScreen) continue; break; default: break; @@ -2240,22 +2735,35 @@ int PreprocessVisibleLights(HDCamera hdCamera, CullingResults cullResults, Debug && !debugLightFilter.IsEnabledFor(processedData.gpuLightType, additionalData.spotLightShape)) continue; - // 5 bit (0x1F) light category, 5 bit (0x1F) GPULightType, 5 bit (0x1F) lightVolume, 1 bit for shadow casting, 16 bit index - m_SortKeys[sortCount++] = (uint)processedData.lightCategory << 27 | (uint)processedData.gpuLightType << 22 | (uint)processedData.lightVolumeType << 17 | (uint)lightIndex; + if (processedData.gpuLightType == GPULightType.Directional) + { + m_DirectionalLightIndices.Add(lightIndex); + } + else + { + int xrViewCount = hdCamera.viewCount; + + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + float w = ComputeLinearDepth(ComputeWorldSpaceCentroidOfBoundedEntity(light.light), hdCamera, viewIndex); + int d = ComputeFixedPointLinearDepth(w, hdCamera.camera.farClipPlane, BoundedEntitySortingKeyLayout.k_EntitySpatialKeyBitCount); // Assume XR uses the same far plane for all views + ulong key = GenerateBoundedEntitySortingKey(lightIndex, processedData.lightCategory, d, (int)processedData.gpuLightType); + + m_BoundedEntityCollection.AddEntitySortKey(viewIndex, processedData.lightCategory, key); + } + m_BoundedEntityCollection.IncrementEntityCount(processedData.lightCategory); + } + + includedLightCount++; } - CoreUnsafeUtils.QuickSort(m_SortKeys, 0, sortCount - 1); // Call our own quicksort instead of Array.Sort(sortKeys, 0, sortCount) so we don't allocate memory (note the SortCount-1 that is different from original call). - return sortCount; + return includedLightCount; } - void PrepareGPULightdata(CommandBuffer cmd, HDCamera hdCamera, CullingResults cullResults, int processedLightCount) + void PrepareGPULightdata(CommandBuffer cmd, HDCamera hdCamera, CullingResults cullResults) { Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; - int directionalLightcount = 0; - int punctualLightcount = 0; - int areaLightCount = 0; - // Now that all the lights have requested a shadow resolution, we can layout them in the atlas // And if needed rescale the whole atlas m_ShadowManager.LayoutShadowMaps(m_CurrentDebugDisplaySettings.data.lightingDebugSettings); @@ -2284,16 +2792,11 @@ void PrepareGPULightdata(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu var shadowFilteringQuality = HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.hdShadowInitParams.shadowFilteringQuality; // 2. Go through all lights, convert them to GPU format. - // Simultaneously create data for culling (LightVolumeData and SFiniteLightBound) + // Simultaneously create data for culling - for (int sortIndex = 0; sortIndex < processedLightCount; ++sortIndex) + for (int sortIndex = 0, indexCount = m_DirectionalLightIndices.Count; sortIndex < indexCount; sortIndex++) { - // In 1. we have already classify and sorted the light, we need to use this sorted order here - uint sortKey = m_SortKeys[sortIndex]; - LightCategory lightCategory = (LightCategory)((sortKey >> 27) & 0x1F); - GPULightType gpuLightType = (GPULightType)((sortKey >> 22) & 0x1F); - LightVolumeType lightVolumeType = (LightVolumeType)((sortKey >> 17) & 0x1F); - int lightIndex = (int)(sortKey & 0xFFFF); + int lightIndex = m_DirectionalLightIndices[sortIndex]; var light = cullResults.visibleLights[lightIndex]; var lightComponent = light.light; @@ -2301,7 +2804,6 @@ void PrepareGPULightdata(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu m_EnableBakeShadowMask = m_EnableBakeShadowMask || processedData.isBakedShadowMask; - // Light should always have additional data, however preview light right don't have, so we must handle the case by assigning HDUtils.s_DefaultHDAdditionalLightData var additionalLightData = processedData.additionalLightData; int shadowIndex = -1; @@ -2323,75 +2825,95 @@ void PrepareGPULightdata(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu #endif } - // Directional rendering side, it is separated as it is always visible so no volume to handle here - if (gpuLightType == GPULightType.Directional) - { - GetDirectionalLightData(cmd, hdCamera, light, lightComponent, lightIndex, shadowIndex, directionalLightcount, isPbrSkyActive, ref m_ScreenSpaceShadowIndex, ref m_ScreenSpaceShadowChannelSlot); + Debug.Assert(processedData.gpuLightType == GPULightType.Directional); - directionalLightcount++; + DirectionalLightData lightData = GetDirectionalLightData(cmd, hdCamera, light, lightComponent, lightIndex, shadowIndex, sortIndex, isPbrSkyActive, ref m_ScreenSpaceShadowIndex, ref m_ScreenSpaceShadowChannelSlot); - // We make the light position camera-relative as late as possible in order - // to allow the preceding code to work with the absolute world space coordinates. - if (ShaderConfig.s_CameraRelativeRendering != 0) - { - // Caution: 'DirectionalLightData.positionWS' is camera-relative after this point. - int last = m_lightList.directionalLights.Count - 1; - DirectionalLightData lightData = m_lightList.directionalLights[last]; - lightData.positionRWS -= camPosWS; - m_lightList.directionalLights[last] = lightData; - } + // We make the light position camera-relative as late as possible in order + // to allow the preceding code to work with the absolute world space coordinates. + if (ShaderConfig.s_CameraRelativeRendering != 0) + { + // Caution: 'DirectionalLightData.positionWS' is camera-relative after this point. + lightData.positionRWS -= camPosWS; } - else + + m_DirectionalLightData.Add(lightData); + } + + int xrViewCount = hdCamera.viewCount; + + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + // Go through both categories at the same time (to make the existing code work). + int start = m_BoundedEntityCollection.GetEntitySortKeyArrayOffset(BoundedEntityCategory.PunctualLight); + int count = m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.PunctualLight) + + m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.AreaLight); + + Debug.Assert(((int)BoundedEntityCategory.AreaLight - (int)BoundedEntityCategory.PunctualLight) == 1); + + for (int sortIndex = start; sortIndex < (start + count); ++sortIndex) { - Vector3 lightDimensions = new Vector3(); // X = length or width, Y = height, Z = range (depth) + BoundedEntitySortingKeyLayout layout = GetBoundedEntitySortingKeyLayout(); - // Allocate a light data - LightData lightData = new LightData(); + // In 1. we have already classify and sorted the light, we need to use this sorted order here + ulong sortKey = m_BoundedEntityCollection.GetEntitySortKey(viewIndex, sortIndex); - // Punctual, area, projector lights - the rendering side. - GetLightData(cmd, hdCamera, hdShadowSettings, light, lightComponent, in m_ProcessedLightData[lightIndex], shadowIndex, contactShadowScalableSetting, isRasterization: true, ref lightDimensions, ref m_ScreenSpaceShadowIndex, ref m_ScreenSpaceShadowChannelSlot, ref lightData); + var category = (BoundedEntityCategory)((sortKey >> layout.categoryOffset) & ((1ul << layout.categoryBitCount) - 1)); + var gpuLightType = (GPULightType)((sortKey >> layout.lightTypeOffset) & ((1ul << layout.lightTypeBitCount) - 1)); + var lightIndex = (int)((sortKey >> layout.indexOffset) & ((1ul << layout.indexBitCount) - 1)); + + Debug.Assert(category == BoundedEntityCategory.PunctualLight || category == BoundedEntityCategory.AreaLight); + + var light = cullResults.visibleLights[lightIndex]; + var lightComponent = light.light; + ProcessedLightData processedData = m_ProcessedLightData[lightIndex]; + + m_EnableBakeShadowMask = m_EnableBakeShadowMask || processedData.isBakedShadowMask; + + var additionalLightData = processedData.additionalLightData; - // Add the previously created light data - m_lightList.lights.Add(lightData); + int shadowIndex = -1; - switch (lightCategory) + // Manage shadow requests + if (additionalLightData.WillRenderShadowMap() && !m_ProcessedShadowLightList[lightIndex]) { - case LightCategory.Punctual: - punctualLightcount++; - break; - case LightCategory.Area: - areaLightCount++; - break; - default: - Debug.Assert(false, "TODO: encountered an unknown LightCategory."); - break; + m_ProcessedShadowLightList[lightIndex] = true; + int shadowRequestCount; + shadowIndex = additionalLightData.UpdateShadowRequest(hdCamera, m_ShadowManager, hdShadowSettings, light, cullResults, lightIndex, m_CurrentDebugDisplaySettings.data.lightingDebugSettings, shadowFilteringQuality, out shadowRequestCount); + + #if UNITY_EDITOR + if ((m_CurrentDebugDisplaySettings.data.lightingDebugSettings.shadowDebugUseSelection + || m_CurrentDebugDisplaySettings.data.lightingDebugSettings.shadowDebugMode == ShadowMapDebugMode.SingleShadow) + && UnityEditor.Selection.activeGameObject == lightComponent.gameObject) + { + m_DebugSelectedLightShadowIndex = shadowIndex; + m_DebugSelectedLightShadowCount = shadowRequestCount; + } + #endif } + Debug.Assert(gpuLightType != GPULightType.Directional); + + Vector3 lightDimensions = new Vector3(); // X = length or width, Y = height, Z = range (depth) + + // Punctual, area, projector lights - the rendering side. + LightData lightData = GetLightData(cmd, hdCamera, hdShadowSettings, light, lightComponent, in m_ProcessedLightData[lightIndex], shadowIndex, contactShadowScalableSetting, isRasterization: true, ref lightDimensions, ref m_ScreenSpaceShadowIndex, ref m_ScreenSpaceShadowChannelSlot); + // Then culling side. Must be call in this order as we pass the created Light data to the function - for (int viewIndex = 0; viewIndex < hdCamera.viewCount; ++viewIndex) - { - GetLightVolumeDataAndBound(lightCategory, gpuLightType, lightVolumeType, light, m_lightList.lights[m_lightList.lights.Count - 1], lightDimensions, m_WorldToViewMatrices[viewIndex], viewIndex); - } + FiniteLightBound bounds = GetLightVolumeDataAndBound(category, gpuLightType, light, lightData, lightDimensions, m_WorldToViewMatrices[viewIndex], viewIndex); // We make the light position camera-relative as late as possible in order // to allow the preceding code to work with the absolute world space coordinates. if (ShaderConfig.s_CameraRelativeRendering != 0) { // Caution: 'LightData.positionWS' is camera-relative after this point. - int last = m_lightList.lights.Count - 1; - lightData = m_lightList.lights[last]; lightData.positionRWS -= camPosWS; - m_lightList.lights[last] = lightData; } + + m_BoundedEntityCollection.AddEntityData(viewIndex, category, lightData); + m_BoundedEntityCollection.AddEntityBounds(viewIndex, category, bounds); } } - - // Sanity check - Debug.Assert(m_lightList.directionalLights.Count == directionalLightcount); - Debug.Assert(m_lightList.lights.Count == areaLightCount + punctualLightcount); - - m_lightList.punctualLightCount = punctualLightcount; - m_lightList.areaLightCount = areaLightCount; } bool TrivialRejectProbe(in ProcessedProbeData processedProbe, HDCamera hdCamera) @@ -2421,6 +2943,16 @@ bool TrivialRejectProbe(in ProcessedProbeData processedProbe, HDCamera hdCamera) return false; } + static uint CalculateProbeLogVolume(Bounds bounds) + { + //Notes: + // - 1+ term is to prevent having negative values in the log result + // - 1000* is too keep 3 digit after the dot while we truncate the result later + float boxVolume = 8f * bounds.extents.x * bounds.extents.y * bounds.extents.z; + uint logVolume = (uint)Math.Max(0, Math.Min((int)(1000 * Mathf.Log(1 + boxVolume, 1.05f)), (1 << BoundedEntitySortingKeyLayout.k_EntitySpatialKeyBitCount) - 1)); + return logVolume; + } + internal static void PreprocessReflectionProbeData(ref ProcessedProbeData processedData, VisibleReflectionProbe probe, HDCamera hdCamera) { var add = probe.reflectionProbe.GetComponent(); @@ -2433,13 +2965,14 @@ internal static void PreprocessReflectionProbeData(ref ProcessedProbeData proces add.influenceVolume.shape = InfluenceShape.Box; } - PreprocessProbeData(ref processedData, add, hdCamera); + PreprocessProbeData(ref processedData, add, probe.bounds, hdCamera); } - internal static void PreprocessProbeData(ref ProcessedProbeData processedData, HDProbe probe, HDCamera hdCamera) + internal static void PreprocessProbeData(ref ProcessedProbeData processedData, HDProbe probe, Bounds bounds, HDCamera hdCamera) { - processedData.hdProbe = probe; - processedData.weight = HDUtils.ComputeWeightedLinearFadeDistance(processedData.hdProbe.transform.position, hdCamera.camera.transform.position, processedData.hdProbe.weight, processedData.hdProbe.fadeDistance); + processedData.hdProbe = probe; + processedData.weight = HDUtils.ComputeWeightedLinearFadeDistance(processedData.hdProbe.transform.position, hdCamera.camera.transform.position, processedData.hdProbe.weight, processedData.hdProbe.fadeDistance); + processedData.logVolume = CalculateProbeLogVolume(bounds); } int PreprocessVisibleProbes(HDCamera hdCamera, CullingResults cullResults, HDProbeCullingResults hdProbeCullingResults, in AOVRequestData aovRequest) @@ -2449,15 +2982,13 @@ int PreprocessVisibleProbes(HDCamera hdCamera, CullingResults cullResults, HDPro // Redo everything but this time with envLights Debug.Assert(m_MaxEnvLightsOnScreen <= 256); //for key construction - int envLightCount = 0; - - var totalProbes = cullResults.visibleReflectionProbes.Length + hdProbeCullingResults.visibleProbes.Count; m_ProcessedReflectionProbeData.Resize(cullResults.visibleReflectionProbes.Length); m_ProcessedPlanarProbeData.Resize(hdProbeCullingResults.visibleProbes.Count); - int maxProbeCount = Math.Min(totalProbes, m_MaxEnvLightsOnScreen); - UpdateSortKeysArray(maxProbeCount); + var totalProbeCount = cullResults.visibleReflectionProbes.Length + hdProbeCullingResults.visibleProbes.Count; + int maxProbeCount = m_MaxEnvLightsOnScreen; + int includedProbeCount = 0; var enableReflectionProbes = hdCamera.frameSettings.IsEnabled(FrameSettingsField.ReflectionProbe) && (!hasDebugLightFilter || debugLightFilter.IsEnabledFor(ProbeSettings.ProbeType.ReflectionProbe)); @@ -2467,7 +2998,7 @@ int PreprocessVisibleProbes(HDCamera hdCamera, CullingResults cullResults, HDPro if (enableReflectionProbes) { - for (int probeIndex = 0; probeIndex < cullResults.visibleReflectionProbes.Length; probeIndex++) + for (int probeIndex = 0; (probeIndex < cullResults.visibleReflectionProbes.Length) && (includedProbeCount < maxProbeCount); probeIndex++) { var probe = cullResults.visibleReflectionProbes[probeIndex]; @@ -2479,6 +3010,10 @@ int PreprocessVisibleProbes(HDCamera hdCamera, CullingResults cullResults, HDPro ref ProcessedProbeData processedData = ref m_ProcessedReflectionProbeData[probeIndex]; PreprocessReflectionProbeData(ref processedData, probe, hdCamera); + // Skip the probe if the probe has never rendered (in realtime cases) or if texture is null + if(!processedData.hdProbe.HasValidRenderedData()) + continue; + if (TrivialRejectProbe(processedData, hdCamera)) continue; @@ -2489,85 +3024,96 @@ int PreprocessVisibleProbes(HDCamera hdCamera, CullingResults cullResults, HDPro continue; } - // This test needs to be the last one otherwise we may consume an available slot and then discard the probe. - if (envLightCount >= maxProbeCount) - continue; + int xrViewCount = hdCamera.viewCount; - LightVolumeType lightVolumeType = LightVolumeType.Box; - if (processedData.hdProbe != null && processedData.hdProbe.influenceVolume.shape == InfluenceShape.Sphere) - lightVolumeType = LightVolumeType.Sphere; + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + int d = (int)CalculateProbeLogVolume(probe.bounds); + ulong key = GenerateBoundedEntitySortingKey(probeIndex, BoundedEntityCategory.ReflectionProbe, d, (int)GPULightType.CubemapReflection); - var logVolume = CalculateProbeLogVolume(probe.bounds); - - m_SortKeys[envLightCount++] = PackProbeKey(logVolume, lightVolumeType, 0u, probeIndex); // Sort by volume + m_BoundedEntityCollection.AddEntitySortKey(viewIndex, BoundedEntityCategory.ReflectionProbe, key); + } + m_BoundedEntityCollection.IncrementEntityCount(BoundedEntityCategory.ReflectionProbe); + includedProbeCount++; } } if (enablePlanarProbes) { - for (int planarProbeIndex = 0; planarProbeIndex < hdProbeCullingResults.visibleProbes.Count; planarProbeIndex++) + for (int planarProbeIndex = 0; (planarProbeIndex < hdProbeCullingResults.visibleProbes.Count) && (includedProbeCount < maxProbeCount); planarProbeIndex++) { var probe = hdProbeCullingResults.visibleProbes[planarProbeIndex]; + // Skip the probe if the probe has never rendered (in realtime cases) or if texture is null + if(!probe.HasValidRenderedData()) + continue; + ref ProcessedProbeData processedData = ref m_ProcessedPlanarProbeData[planarProbeIndex]; - PreprocessProbeData(ref processedData, probe, hdCamera); + PreprocessProbeData(ref processedData, probe, probe.bounds, hdCamera); if (!aovRequest.IsLightEnabled(probe.gameObject)) continue; - // This test needs to be the last one otherwise we may consume an available slot and then discard the probe. - if (envLightCount >= maxProbeCount) - continue; - - var lightVolumeType = LightVolumeType.Box; - if (probe.influenceVolume.shape == InfluenceShape.Sphere) - lightVolumeType = LightVolumeType.Sphere; - - var logVolume = CalculateProbeLogVolume(probe.bounds); + int xrViewCount = hdCamera.viewCount; - m_SortKeys[envLightCount++] = PackProbeKey(logVolume, lightVolumeType, 1u, planarProbeIndex); // Sort by volume + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + int d = (int)CalculateProbeLogVolume(probe.bounds); + ulong key = GenerateBoundedEntitySortingKey(planarProbeIndex, BoundedEntityCategory.ReflectionProbe, d, (int)GPULightType.PlanarReflection); + m_BoundedEntityCollection.AddEntitySortKey(viewIndex, BoundedEntityCategory.ReflectionProbe, key); + } + m_BoundedEntityCollection.IncrementEntityCount(BoundedEntityCategory.ReflectionProbe); + includedProbeCount++; } } - // Not necessary yet but call it for future modification with sphere influence volume - CoreUnsafeUtils.QuickSort(m_SortKeys, 0, envLightCount - 1); // Call our own quicksort instead of Array.Sort(sortKeys, 0, sortCount) so we don't allocate memory (note the SortCount-1 that is different from original call). - return envLightCount; + return includedProbeCount; } - void PrepareGPUProbeData(CommandBuffer cmd, HDCamera hdCamera, CullingResults cullResults, HDProbeCullingResults hdProbeCullingResults, int processedLightCount) + void PrepareGPUProbeData(CommandBuffer cmd, HDCamera hdCamera, CullingResults cullResults, HDProbeCullingResults hdProbeCullingResults) { Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; - for (int sortIndex = 0; sortIndex < processedLightCount; ++sortIndex) + int xrViewCount = hdCamera.viewCount; + + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) { - // In 1. we have already classify and sorted the light, we need to use this sorted order here - uint sortKey = m_SortKeys[sortIndex]; - LightVolumeType lightVolumeType; - int probeIndex; - int listType; - UnpackProbeSortKey(sortKey, out lightVolumeType, out probeIndex, out listType); + int start = m_BoundedEntityCollection.GetEntitySortKeyArrayOffset(BoundedEntityCategory.ReflectionProbe); + int count = m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.ReflectionProbe); - ProcessedProbeData processedProbe = (listType == 0) ? m_ProcessedReflectionProbeData[probeIndex] : m_ProcessedPlanarProbeData[probeIndex]; + for (int sortIndex = start; sortIndex < (start + count); ++sortIndex) + { + BoundedEntitySortingKeyLayout layout = GetBoundedEntitySortingKeyLayout(); - EnvLightData envLightData = new EnvLightData(); + // In 1. we have already classify and sorted the light, we need to use this sorted order here + ulong sortKey = m_BoundedEntityCollection.GetEntitySortKey(viewIndex, sortIndex); - if (GetEnvLightData(cmd, hdCamera, processedProbe, ref envLightData)) - { - // it has been filled - m_lightList.envLights.Add(envLightData); + var category = (BoundedEntityCategory)((sortKey >> layout.categoryOffset) & ((1ul << layout.categoryBitCount) - 1)); + var gpuLightType = (GPULightType)((sortKey >> layout.lightTypeOffset) & ((1ul << layout.lightTypeBitCount) - 1)); + var probeIndex = (int)((sortKey >> layout.indexOffset) & ((1ul << layout.indexBitCount) - 1)); - for (int viewIndex = 0; viewIndex < hdCamera.viewCount; ++viewIndex) + ProcessedProbeData processedProbe = (gpuLightType == GPULightType.PlanarReflection) ? m_ProcessedPlanarProbeData[probeIndex] + : m_ProcessedReflectionProbeData[probeIndex]; + EnvLightData envLightData = new EnvLightData(); + + if (GetEnvLightData(cmd, hdCamera, processedProbe, ref envLightData)) { var worldToView = GetWorldToViewMatrix(hdCamera, viewIndex); - GetEnvLightVolumeDataAndBound(processedProbe.hdProbe, lightVolumeType, worldToView, viewIndex); - } + FiniteLightBound bounds = GetEnvLightVolumeDataAndBound(processedProbe.hdProbe, worldToView, viewIndex); - // We make the light position camera-relative as late as possible in order - // to allow the preceding code to work with the absolute world space coordinates. - UpdateEnvLighCameraRelativetData(ref envLightData, camPosWS); + // We make the light position camera-relative as late as possible in order + // to allow the preceding code to work with the absolute world space coordinates. + if (ShaderConfig.s_CameraRelativeRendering != 0) + { + // Caution: 'EnvLightData.positionRWS' is camera-relative after this point. + envLightData.capturePositionRWS -= camPosWS; + envLightData.influencePositionRWS -= camPosWS; + envLightData.proxyPositionRWS -= camPosWS; + } - int last = m_lightList.envLights.Count - 1; - m_lightList.envLights[last] = envLightData; + m_BoundedEntityCollection.AddEntityData(viewIndex, BoundedEntityCategory.ReflectionProbe, envLightData); + m_BoundedEntityCollection.AddEntityBounds(viewIndex, BoundedEntityCategory.ReflectionProbe, bounds); + } } } } @@ -2588,8 +3134,6 @@ bool PrepareLightsForGPU(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu // If any light require it, we need to enabled bake shadow mask feature m_EnableBakeShadowMask = false; - m_lightList.Clear(); - // We need to properly reset this here otherwise if we go from 1 light to no visible light we would keep the old reference active. m_CurrentSunLight = null; m_CurrentSunLightAdditionalLightData = null; @@ -2597,7 +3141,15 @@ bool PrepareLightsForGPU(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu m_DebugSelectedLightShadowIndex = -1; m_DebugSelectedLightShadowCount = 0; - int decalDatasCount = Math.Min(DecalSystem.m_DecalDatasCount, m_MaxDecalsOnScreen); + int xrViewCount = hdCamera.viewCount; + + // Step 1: Fill m_BoundedEntityCollection.entitySortKeys and m_DirectionalLightIndices. + // Step 2: Sort m_BoundedEntityCollection. + // Step 3: Fill m_BoundedEntityCollection.*Data (in the sorted order!) and m_DirectionalLightData. + // Step 4: Upload the data to the GPU. + m_DirectionalLightData.Clear(); + m_DirectionalLightIndices.Clear(); + m_BoundedEntityCollection.Reset(); // We must clear the shadow requests before checking if they are any visible light because we would have requests from the last frame executed in the case where we don't see any lights m_ShadowManager.Clear(); @@ -2612,20 +3164,65 @@ bool PrepareLightsForGPU(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu for (int i = 0; i < m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.maxScreenSpaceShadowSlots; ++i) { m_CurrentScreenSpaceShadowData[i].additionalLightData = null; - m_CurrentScreenSpaceShadowData[i].lightDataIndex = -1; m_CurrentScreenSpaceShadowData[i].valid = false; } + /* ---------------------------- Step 1 ---------------------------- */ + // Do not pre-process per view... + // Note: Light with null intensity/Color are culled by the C++, no need to test it here if (cullResults.visibleLights.Length != 0) { - int processedLightCount = PreprocessVisibleLights(hdCamera, cullResults, debugDisplaySettings, aovRequest); + PreprocessVisibleLights(hdCamera, cullResults, debugDisplaySettings, aovRequest); + } + + if (cullResults.visibleReflectionProbes.Length != 0 || hdProbeCullingResults.visibleProbes.Count != 0) + { + PreprocessVisibleProbes(hdCamera, cullResults, hdProbeCullingResults, aovRequest); + } + + int decalCount = Math.Min(DecalSystem.m_DecalDatasCount, m_MaxDecalsOnScreen); + for (int decalIndex = 0; decalIndex < decalCount; decalIndex++) + { + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + // decals are not spatially sorted, use their index in the data array to preserve draw order + ulong key = GenerateBoundedEntitySortingKey(decalIndex, BoundedEntityCategory.Decal, decalIndex); + m_BoundedEntityCollection.AddEntitySortKey(viewIndex, BoundedEntityCategory.Decal, key); + } + m_BoundedEntityCollection.IncrementEntityCount(BoundedEntityCategory.Decal); + } + + int densityVolumeCount = (densityVolumes.data != null) ? Math.Min(densityVolumes.data.Count, m_MaxDensityVolumesOnScreen) : 0; + + for (int densityVolumeIndex = 0; densityVolumeIndex < densityVolumeCount; densityVolumeIndex++) + { + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) + { + // The OBB is RWS. + float w = ComputeLinearDepth(densityVolumes.data[densityVolumeIndex].center, hdCamera, viewIndex, forceRWS: true); + int d = ComputeFixedPointLinearDepth(w, hdCamera.camera.farClipPlane, BoundedEntitySortingKeyLayout.k_EntitySpatialKeyBitCount); // Assume XR uses the same far plane for all views + ulong key = GenerateBoundedEntitySortingKey(densityVolumeIndex, BoundedEntityCategory.DensityVolume, d); + + m_BoundedEntityCollection.AddEntitySortKey(viewIndex, BoundedEntityCategory.DensityVolume, key); + } + m_BoundedEntityCollection.IncrementEntityCount(BoundedEntityCategory.DensityVolume); + } + + /* ---------------------------- Step 2 ---------------------------- */ + m_BoundedEntityCollection.Sort(); + + /* ---------------------------- Step 3 ---------------------------- */ + + // Note: Light with null intensity/Color are culled by the C++, no need to test it here + if (cullResults.visibleLights.Length != 0) + { // In case ray tracing supported and a light cluster is built, we need to make sure to reserve all the cookie slots we need if (m_RayTracingSupported) ReserveRayTracingCookieAtlasSlots(); - PrepareGPULightdata(cmd, hdCamera, cullResults, processedLightCount); + PrepareGPULightdata(cmd, hdCamera, cullResults); // Update the compute buffer with the shadow request datas m_ShadowManager.PrepareGPUShadowDatas(cullResults, hdCamera); @@ -2639,26 +3236,48 @@ bool PrepareLightsForGPU(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu if (cullResults.visibleReflectionProbes.Length != 0 || hdProbeCullingResults.visibleProbes.Count != 0) { - int processedProbesCount = PreprocessVisibleProbes(hdCamera, cullResults, hdProbeCullingResults, aovRequest); - PrepareGPUProbeData(cmd, hdCamera, cullResults, hdProbeCullingResults, processedProbesCount); + PrepareGPUProbeData(cmd, hdCamera, cullResults, hdProbeCullingResults); } - if (decalDatasCount > 0) + // Decals. + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) { - for (int i = 0; i < decalDatasCount; i++) + int start = m_BoundedEntityCollection.GetEntitySortKeyArrayOffset(BoundedEntityCategory.Decal); + int count = m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.Decal); + + for (int sortIndex = start; sortIndex < (start + count); ++sortIndex) { - for (int viewIndex = 0; viewIndex < hdCamera.viewCount; ++viewIndex) + BoundedEntitySortingKeyLayout layout = GetBoundedEntitySortingKeyLayout(); + + ulong sortKey = m_BoundedEntityCollection.GetEntitySortKey(viewIndex, sortIndex); + + var category = (BoundedEntityCategory)((sortKey >> layout.categoryOffset) & ((1ul << layout.categoryBitCount) - 1)); + var decalIndex = (int)((sortKey >> layout.indexOffset) & ((1ul << layout.indexBitCount) - 1)); + + Debug.Assert(category == BoundedEntityCategory.Decal); + + FiniteLightBound bounds = DecalSystem.m_Bounds[decalIndex]; + + if (viewIndex > 0) { - m_lightList.lightsPerView[viewIndex].bounds.Add(DecalSystem.m_Bounds[i]); - m_lightList.lightsPerView[viewIndex].lightVolumes.Add(DecalSystem.m_LightVolumes[i]); + // This is quite suboptimal... + Matrix4x4 viewMatrixEye0 = GetWorldToViewMatrix(hdCamera, 0); + Matrix4x4 viewMatrixEyeI = GetWorldToViewMatrix(hdCamera, viewIndex); + Matrix4x4 viewTransferMatrix = viewMatrixEyeI * viewMatrixEye0.inverse; + + bounds.boxAxisX = viewTransferMatrix.MultiplyVector(bounds.boxAxisX); + bounds.boxAxisY = viewTransferMatrix.MultiplyVector(bounds.boxAxisY); + bounds.boxAxisZ = viewTransferMatrix.MultiplyVector(bounds.boxAxisZ); + bounds.center = viewTransferMatrix.MultiplyPoint(bounds.center); } + + m_BoundedEntityCollection.AddEntityData(viewIndex, BoundedEntityCategory.Decal, DecalSystem.m_DecalDatas[decalIndex]); + m_BoundedEntityCollection.AddEntityBounds(viewIndex, BoundedEntityCategory.Decal, bounds); } } - // Inject density volumes into the clustered data structure for efficient look up. - m_DensityVolumeCount = densityVolumes.bounds != null ? densityVolumes.bounds.Count : 0; - - for (int viewIndex = 0; viewIndex < hdCamera.viewCount; ++viewIndex) + // Density volumes. + for (int viewIndex = 0; viewIndex < xrViewCount; viewIndex++) { Matrix4x4 worldToViewCR = GetWorldToViewMatrix(hdCamera, viewIndex); @@ -2668,32 +3287,41 @@ bool PrepareLightsForGPU(CommandBuffer cmd, HDCamera hdCamera, CullingResults cu worldToViewCR.SetColumn(3, new Vector4(0, 0, 0, 1)); } - for (int i = 0, n = m_DensityVolumeCount; i < n; i++) + int start = m_BoundedEntityCollection.GetEntitySortKeyArrayOffset(BoundedEntityCategory.DensityVolume); + int count = m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.DensityVolume); + + for (int sortIndex = start; sortIndex < (start + count); ++sortIndex) { + BoundedEntitySortingKeyLayout layout = GetBoundedEntitySortingKeyLayout(); + + ulong sortKey = m_BoundedEntityCollection.GetEntitySortKey(viewIndex, sortIndex); + + var category = (BoundedEntityCategory)((sortKey >> layout.categoryOffset) & ((1ul << layout.categoryBitCount) - 1)); + var densityVolumeIndex = (int)((sortKey >> layout.indexOffset) & ((1ul << layout.indexBitCount) - 1)); + + Debug.Assert(category == BoundedEntityCategory.DensityVolume); + // Density volumes are not lights and therefore should not affect light classification. LightFeatureFlags featureFlags = 0; - CreateBoxVolumeDataAndBound(densityVolumes.bounds[i], LightCategory.DensityVolume, featureFlags, worldToViewCR, 0.0f, out LightVolumeData volumeData, out SFiniteLightBound bound); - m_lightList.lightsPerView[viewIndex].lightVolumes.Add(volumeData); - m_lightList.lightsPerView[viewIndex].bounds.Add(bound); - } - } - m_TotalLightCount = m_lightList.lights.Count + m_lightList.envLights.Count + decalDatasCount + m_DensityVolumeCount; + OrientedBBox obb = new OrientedBBox(); - Debug.Assert(m_TotalLightCount == m_lightList.lightsPerView[0].bounds.Count); - Debug.Assert(m_TotalLightCount == m_lightList.lightsPerView[0].lightVolumes.Count); + obb.right = densityVolumes.data[densityVolumeIndex].right; + obb.extentX = densityVolumes.data[densityVolumeIndex].extentX; + obb.up = densityVolumes.data[densityVolumeIndex].up; + obb.extentY = densityVolumes.data[densityVolumeIndex].extentY; + obb.center = densityVolumes.data[densityVolumeIndex].center; + obb.extentZ = densityVolumes.data[densityVolumeIndex].extentZ; - // Aggregate the remaining views into the first entry of the list (view 0) - for (int viewIndex = 1; viewIndex < hdCamera.viewCount; ++viewIndex) - { - Debug.Assert(m_lightList.lightsPerView[viewIndex].bounds.Count == m_TotalLightCount); - m_lightList.lightsPerView[0].bounds.AddRange(m_lightList.lightsPerView[viewIndex].bounds); + FiniteLightBound bounds = GetBoxVolumeDataAndBound(obb, BoundedEntityCategory.DensityVolume, featureFlags, worldToViewCR, viewIndex); - Debug.Assert(m_lightList.lightsPerView[viewIndex].lightVolumes.Count == m_TotalLightCount); - m_lightList.lightsPerView[0].lightVolumes.AddRange(m_lightList.lightsPerView[viewIndex].lightVolumes); + m_BoundedEntityCollection.AddEntityData(viewIndex, BoundedEntityCategory.DensityVolume, densityVolumes.data[densityVolumeIndex]); + m_BoundedEntityCollection.AddEntityBounds(viewIndex, BoundedEntityCategory.DensityVolume, bounds); + } } - PushLightDataGlobalParams(cmd); + /* ---------------------------- Step 4 ---------------------------- */ + PushLightDataGlobalParams(cmd, xrViewCount); PushShadowGlobalParams(cmd); } @@ -2745,54 +3373,12 @@ internal void ReserveCookieAtlasTexture(HDAdditionalLightData hdLightData, Light } } - internal static void UpdateLightCameraRelativetData(ref LightData lightData, Vector3 camPosWS) - { - if (ShaderConfig.s_CameraRelativeRendering != 0) - { - lightData.positionRWS -= camPosWS; - } - } - - internal static void UpdateEnvLighCameraRelativetData(ref EnvLightData envLightData, Vector3 camPosWS) - { - if (ShaderConfig.s_CameraRelativeRendering != 0) - { - // Caution: 'EnvLightData.positionRWS' is camera-relative after this point. - envLightData.capturePositionRWS -= camPosWS; - envLightData.influencePositionRWS -= camPosWS; - envLightData.proxyPositionRWS -= camPosWS; - } - } - - static float CalculateProbeLogVolume(Bounds bounds) - { - //Notes: - // - 1+ term is to prevent having negative values in the log result - // - 1000* is too keep 3 digit after the dot while we truncate the result later - // - 1048575 is 2^20-1 as we pack the result on 20bit later - float boxVolume = 8f * bounds.extents.x * bounds.extents.y * bounds.extents.z; - float logVolume = Mathf.Clamp(Mathf.Log(1 + boxVolume, 1.05f) * 1000, 0, 1048575); - return logVolume; - } - - static void UnpackProbeSortKey(uint sortKey, out LightVolumeType lightVolumeType, out int probeIndex, out int listType) - { - lightVolumeType = (LightVolumeType)((sortKey >> 9) & 0x3); - probeIndex = (int)(sortKey & 0xFF); - listType = (int)((sortKey >> 8) & 1); - } - - static uint PackProbeKey(float logVolume, LightVolumeType lightVolumeType, uint listType, int probeIndex) - { - // 20 bit volume, 3 bit LightVolumeType, 1 bit list type, 8 bit index - return (uint)logVolume << 12 | (uint)lightVolumeType << 9 | listType << 8 | ((uint)probeIndex & 0xFF); - } - struct BuildGPULightListParameters { // Common - public int totalLightCount; // Regular + Env + Decal + Density Volumes - public int viewCount; + public bool hasDirectionalLights; + public int boundedEntityCount; + public int viewCount; public bool runLightList; public bool clearLightLists; public bool enableFeatureVariants; @@ -2800,20 +3386,22 @@ struct BuildGPULightListParameters public bool computeLightVariants; public bool skyEnabled; public bool probeVolumeEnabled; - public LightList lightList; // Clear Light lists public ComputeShader clearLightListCS; public int clearLightListKernel; - // Screen Space AABBs + // Binned lighting + public bool binEntities; public ComputeShader screenSpaceAABBShader; - public int screenSpaceAABBKernel; + public ComputeShader zBinShader; + public ComputeShader tileShader; + public Vector2Int coarseTileBufferDimensions; + public Vector2Int fineTileBufferDimensions; // Big Tile public ComputeShader bigTilePrepassShader; public int bigTilePrepassKernel; - public bool runBigTilePrepass; public int numBigTilesX, numBigTilesY; // FPTL @@ -2833,7 +3421,7 @@ struct BuildGPULightListParameters public bool clusterNeedsDepth; // Build dispatch indirect - public ComputeShader buildMaterialFlagsShader; + public ComputeShader classificationShader; public ComputeShader clearDispatchIndirectShader; public ComputeShader buildDispatchIndirectShader; public bool useComputeAsPixel; @@ -2844,21 +3432,31 @@ struct BuildGPULightListParameters struct BuildGPULightListResources { public RTHandle depthBuffer; - public RTHandle stencilTexture; + public RTHandle depthPyramidBuffer; + public RTHandle stencilBuffer; public RTHandle[] gBuffer; - // Internal to light list building - public ComputeBuffer lightVolumeDataBuffer; + // Buffers filled with the CPU outside of render graph. public ComputeBuffer convexBoundsBuffer; - public ComputeBuffer AABBBoundsBuffer; - public ComputeBuffer globalLightListAtomic; + + // Transient buffers that are not used outside of BuildGPULightList so they don't need to go outside the pass. + public ComputeBuffer xyBoundsBuffer; + public ComputeBuffer wBoundsBuffer; + + //public ComputeBuffer globalLightListAtomic; // Output - public ComputeBuffer tileFeatureFlags; // Deferred + public ComputeBuffer coarseTileBuffer; + public ComputeBuffer fineTileBuffer; + public ComputeBuffer zBinBuffer; + public ComputeBuffer tileFeatureFlagsBuffer; // Deferred + public ComputeBuffer tileListBuffer; // Deferred public ComputeBuffer dispatchIndirectBuffer; // Deferred + + /* Old junk below. */ + public ComputeBuffer perVoxelOffset; // Cluster public ComputeBuffer perTileLogBaseTweak; // Cluster - public ComputeBuffer tileList; // Deferred // used for pre-pass coarse culling on 64x64 tiles public ComputeBuffer bigTileLightList; // Volumetrics public ComputeBuffer perVoxelLightLists; // Cluster @@ -2894,215 +3492,194 @@ static void ClearLightLists(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) { - if (parameters.clearLightLists) - { - // Note we clear the whole content and not just the header since it is fast enough, happens only in one frame and is a bit more robust - // to changes to the inner workings of the lists. - // Also, we clear all the lists and to be resilient to changes in pipeline. - if (parameters.runBigTilePrepass) - ClearLightList(parameters, cmd, resources.bigTileLightList); - if (resources.lightList != null) // This can happen for probe volume light list build where we only generate clusters. - ClearLightList(parameters, cmd, resources.lightList); - ClearLightList(parameters, cmd, resources.perVoxelOffset); - } + // We should not have to clear anything. That consumes GPU time and creates GPU bubbles. + // We should, however, discard the contents of the resource. For more information, see + // https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm#5.7%20Resource%20Discard + + //if (parameters.clearLightLists) + //{ + // // Note we clear the whole content and not just the header since it is fast enough, happens only in one frame and is a bit more robust + // // to changes to the inner workings of the lists. + // // Also, we clear all the lists and to be resilient to changes in pipeline. + // if (parameters.runBigTilePrepass) + // ClearLightList(parameters, cmd, resources.bigTileLightList); + // if (resources.lightList != null) // This can happen for probe volume light list build where we only generate clusters. + // ClearLightList(parameters, cmd, resources.lightList); + // ClearLightList(parameters, cmd, resources.perVoxelOffset); + //} } - // generate screen-space AABBs (used for both fptl and clustered). static void GenerateLightsScreenSpaceAABBs(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) { - if (parameters.totalLightCount != 0) + if (parameters.boundedEntityCount > 0) // Do not perform a dispatch with 0 groups; this will leave the output buffer in an uninitialized state { using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.GenerateLightAABBs))) { - // With XR single-pass, we have one set of light bounds per view to iterate over (bounds are in view space for each view) - cmd.SetComputeBufferParam(parameters.screenSpaceAABBShader, parameters.screenSpaceAABBKernel, HDShaderIDs.g_data, resources.convexBoundsBuffer); - cmd.SetComputeBufferParam(parameters.screenSpaceAABBShader, parameters.screenSpaceAABBKernel, HDShaderIDs.g_vBoundsBuffer, resources.AABBBoundsBuffer); + var shader = parameters.screenSpaceAABBShader; + int kernel = 0; + + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._EntityBoundsBuffer, resources.convexBoundsBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._xyBoundsBuffer, resources.xyBoundsBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._wBoundsBuffer, resources.wBoundsBuffer); - ConstantBuffer.Push(cmd, parameters.lightListCB, parameters.screenSpaceAABBShader, HDShaderIDs._ShaderVariablesLightList); + ConstantBuffer.Push(cmd, parameters.lightListCB, shader, HDShaderIDs._ShaderVariablesLightList); - const int threadsPerLight = 4; // Shader: THREADS_PER_LIGHT (4) - const int threadsPerGroup = 64; // Shader: THREADS_PER_GROUP (64) + const int entitiesPerGroup = 16; // Shader: ENTITIES_PER_GROUP - int groupCount = HDUtils.DivRoundUp(parameters.totalLightCount * threadsPerLight, threadsPerGroup); + int groupCount = HDUtils.DivRoundUp(parameters.boundedEntityCount, entitiesPerGroup); // 4x threads/entity - cmd.DispatchCompute(parameters.screenSpaceAABBShader, parameters.screenSpaceAABBKernel, groupCount, parameters.viewCount, 1); + cmd.DispatchCompute(shader, kernel, groupCount, 1, parameters.viewCount); } } } - // enable coarse 2D pass on 64x64 tiles (used for both fptl and clustered). - static void BigTilePrepass(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) + static void PerformZBinning(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) { - if (parameters.runLightList && parameters.runBigTilePrepass) + // If (boundedEntityCount == 0), we still perform a dispatch that will initialize bins as empty. + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.PerformZBinning))) { - cmd.SetComputeBufferParam(parameters.bigTilePrepassShader, parameters.bigTilePrepassKernel, HDShaderIDs.g_vLightList, resources.bigTileLightList); - cmd.SetComputeBufferParam(parameters.bigTilePrepassShader, parameters.bigTilePrepassKernel, HDShaderIDs.g_vBoundsBuffer, resources.AABBBoundsBuffer); - cmd.SetComputeBufferParam(parameters.bigTilePrepassShader, parameters.bigTilePrepassKernel, HDShaderIDs._LightVolumeData, resources.lightVolumeDataBuffer); - cmd.SetComputeBufferParam(parameters.bigTilePrepassShader, parameters.bigTilePrepassKernel, HDShaderIDs.g_data, resources.convexBoundsBuffer); + var shader = parameters.zBinShader; + int kernel = 0; - ConstantBuffer.Push(cmd, parameters.lightListCB, parameters.bigTilePrepassShader, HDShaderIDs._ShaderVariablesLightList); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._wBoundsBuffer, resources.wBoundsBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._zBinBuffer, resources.zBinBuffer); + + ConstantBuffer.Push(cmd, parameters.lightListCB, shader, HDShaderIDs._ShaderVariablesLightList); - cmd.DispatchCompute(parameters.bigTilePrepassShader, parameters.bigTilePrepassKernel, parameters.numBigTilesX, parameters.numBigTilesY, parameters.viewCount); + const int threadsPerGroup = 64; // Shader: THREADS_PER_GROUP + + int groupCount = HDUtils.DivRoundUp(TiledLightingConstants.s_zBinCount, threadsPerGroup); // 1x thread/z-bin + + cmd.DispatchCompute(shader, kernel, groupCount, (int)BoundedEntityCategory.Count, parameters.viewCount); } } - static void BuildPerTileLightList(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, ref bool tileFlagsWritten, CommandBuffer cmd) + static void FillScreenTiles(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) { - // optimized for opaques only - if (parameters.runLightList && parameters.runFPTL) + // If (boundedEntityCount == 0), we still perform a dispatch that will initialize bins as empty. + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.FillScreenTiles))) { - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_vBoundsBuffer, resources.AABBBoundsBuffer); - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs._LightVolumeData, resources.lightVolumeDataBuffer); - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_data, resources.convexBoundsBuffer); + var shader = parameters.tileShader; - cmd.SetComputeTextureParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_depth_tex, resources.depthBuffer); - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_vLightList, resources.lightList); - if (parameters.runBigTilePrepass) - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_vBigTileLightList, resources.bigTileLightList); + ConstantBuffer.Push(cmd, parameters.lightListCB, shader, HDShaderIDs._ShaderVariablesLightList); - var localLightListCB = parameters.lightListCB; + const int threadsPerGroup = 64; // Shader: THREADS_PER_GROUP + const int tilesPerGroup = 16; // Shader: TILES_PER_GROUP - if (parameters.enableFeatureVariants) - { - uint baseFeatureFlags = 0; - if (parameters.lightList.directionalLights.Count > 0) - { - baseFeatureFlags |= (uint)LightFeatureFlags.Directional; - } - if (parameters.skyEnabled) - { - baseFeatureFlags |= (uint)LightFeatureFlags.Sky; - } - if (!parameters.computeMaterialVariants) - { - baseFeatureFlags |= LightDefinitions.s_MaterialFeatureMaskFlags; - } + int coarseBufferSize = parameters.coarseTileBufferDimensions.x * parameters.coarseTileBufferDimensions.y; + int fineTilesPerCoarseTile = (TiledLightingConstants.s_CoarseTileSize / TiledLightingConstants.s_FineTileSize) + * (TiledLightingConstants.s_CoarseTileSize / TiledLightingConstants.s_FineTileSize); - if (parameters.probeVolumeEnabled) - { - // If probe volume feature is enabled, we toggle this feature on for all tiles. - // This is necessary because all tiles must sample ambient probe fallback. - // It is possible we could save a little bit of work by having 2x feature flags for probe volumes: - // one specifiying which tiles contain probe volumes, - // and another triggered for all tiles to handle fallback. - baseFeatureFlags |= (uint)LightFeatureFlags.ProbeVolume; - } + int kernel, groupCount; - localLightListCB.g_BaseFeatureFlags = baseFeatureFlags; + kernel = 0; // FillCoarseTiles - cmd.SetComputeBufferParam(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlags); - tileFlagsWritten = true; - } + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._xyBoundsBuffer, resources.xyBoundsBuffer); + // This is not an accident. We alias the fine tile buffer memory. + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._CoarseTileBuffer, resources.fineTileBuffer); - ConstantBuffer.Push(cmd, localLightListCB, parameters.buildPerTileLightListShader, HDShaderIDs._ShaderVariablesLightList); + groupCount = HDUtils.DivRoundUp(coarseBufferSize, threadsPerGroup); // 1x thread/coarse_tile - cmd.DispatchCompute(parameters.buildPerTileLightListShader, parameters.buildPerTileLightListKernel, parameters.numTilesFPTLX, parameters.numTilesFPTLY, parameters.viewCount); - } - } + cmd.DispatchCompute(shader, kernel, groupCount, (int)BoundedEntityCategory.Count, parameters.viewCount); - static void VoxelLightListGeneration(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) - { - if (parameters.runLightList) - { - // clear atomic offset index - cmd.SetComputeBufferParam(parameters.clearClusterAtomicIndexShader, s_ClearVoxelAtomicKernel, HDShaderIDs.g_LayeredSingleIdxBuffer, resources.globalLightListAtomic); - cmd.DispatchCompute(parameters.clearClusterAtomicIndexShader, s_ClearVoxelAtomicKernel, 1, 1, 1); + kernel = 1; // PruneCoarseTiles - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, s_ClearVoxelAtomicKernel, HDShaderIDs.g_LayeredSingleIdxBuffer, resources.globalLightListAtomic); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_vLayeredLightList, resources.perVoxelLightLists); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_LayeredOffset, resources.perVoxelOffset); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_LayeredSingleIdxBuffer, resources.globalLightListAtomic); + cmd.SetComputeTextureParam(shader, kernel, HDShaderIDs._DepthPyramidBuffer, resources.depthPyramidBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._EntityBoundsBuffer, resources.convexBoundsBuffer); + // This is not an accident. We alias the fine tile buffer memory. + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._SrcCoarseTileBuffer, resources.fineTileBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._DstCoarseTileBuffer, resources.coarseTileBuffer); - if (parameters.runBigTilePrepass) - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_vBigTileLightList, resources.bigTileLightList); + groupCount = HDUtils.DivRoundUp(coarseBufferSize, tilesPerGroup); // 4x threads/coarse_tile - if (parameters.clusterNeedsDepth) - { - cmd.SetComputeTextureParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_depth_tex, resources.depthBuffer); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_logBaseBuffer, resources.perTileLogBaseTweak); - } + cmd.DispatchCompute(shader, kernel, groupCount, (int)BoundedEntityCategory.Count, parameters.viewCount); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_vBoundsBuffer, resources.AABBBoundsBuffer); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs._LightVolumeData, resources.lightVolumeDataBuffer); - cmd.SetComputeBufferParam(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, HDShaderIDs.g_data, resources.convexBoundsBuffer); + kernel = 2; // FillFineTiles - ConstantBuffer.Push(cmd, parameters.lightListCB, parameters.buildPerVoxelLightListShader, HDShaderIDs._ShaderVariablesLightList); + cmd.SetComputeTextureParam(shader, kernel, HDShaderIDs._DepthPyramidBuffer, resources.depthPyramidBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._EntityBoundsBuffer, resources.convexBoundsBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._CoarseTileBuffer, resources.coarseTileBuffer); + cmd.SetComputeBufferParam(shader, kernel, HDShaderIDs._FineTileBuffer, resources.fineTileBuffer); - cmd.DispatchCompute(parameters.buildPerVoxelLightListShader, parameters.buildPerVoxelLightListKernel, parameters.numTilesClusterX, parameters.numTilesClusterY, parameters.viewCount); + groupCount = HDUtils.DivRoundUp(coarseBufferSize * fineTilesPerCoarseTile, tilesPerGroup); // 4x threads/fine_tile, 64x threads/coarse_tile + + cmd.DispatchCompute(shader, kernel, groupCount, (int)BoundedEntityCategory.Count, parameters.viewCount); } } - static void BuildDispatchIndirectArguments(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, bool tileFlagsWritten, CommandBuffer cmd) + static void PerformClassification(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) { - if (parameters.enableFeatureVariants) + if (!parameters.enableFeatureVariants) return; + + Debug.Assert(parameters.computeLightVariants || parameters.computeMaterialVariants); + + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.PerformClassification))) { - // We need to touch up the tile flags if we need material classification or, if disabled, to patch up for missing flags during the skipped light tile gen - bool needModifyingTileFeatures = !tileFlagsWritten || parameters.computeMaterialVariants; - if (needModifyingTileFeatures) + uint baseFeatureFlags = 0; + + if (parameters.computeLightVariants) { - int buildMaterialFlagsKernel = s_BuildMaterialFlagsWriteKernel; - parameters.buildMaterialFlagsShader.shaderKeywords = null; - if (tileFlagsWritten && parameters.computeLightVariants) - { - parameters.buildMaterialFlagsShader.EnableKeyword("USE_OR"); - } + parameters.classificationShader.EnableKeyword("LIGHT_CLASSIFICATION"); + cmd.SetComputeBufferParam(parameters.classificationShader, 0, HDShaderIDs._FineTileBuffer, resources.fineTileBuffer); + cmd.SetComputeBufferParam(parameters.classificationShader, 0, HDShaderIDs._zBinBuffer, resources.zBinBuffer); + } - uint baseFeatureFlags = 0; - if (!parameters.computeLightVariants) - { - baseFeatureFlags |= LightDefinitions.s_LightFeatureMaskFlags; - } - if (parameters.probeVolumeEnabled) - { - // TODO: Verify that we should be globally enabling ProbeVolume feature for all tiles here, or if we should be using per-tile culling. - baseFeatureFlags |= (uint)LightFeatureFlags.ProbeVolume; - } + if (parameters.computeMaterialVariants) + { + parameters.classificationShader.EnableKeyword("MATERIAL_CLASSIFICATION"); + } + else + { + baseFeatureFlags |= TiledLightingConstants.s_MaterialFeatureMaskFlags; + } - // If we haven't run the light list building, we are missing some basic lighting flags. - if (!tileFlagsWritten) - { - if (parameters.lightList.directionalLights.Count > 0) - { - baseFeatureFlags |= (uint)LightFeatureFlags.Directional; - } - if (parameters.skyEnabled) - { - baseFeatureFlags |= (uint)LightFeatureFlags.Sky; - } - if (!parameters.computeMaterialVariants) - { - baseFeatureFlags |= LightDefinitions.s_MaterialFeatureMaskFlags; - } - } + if (parameters.hasDirectionalLights) + { + baseFeatureFlags |= (uint)LightFeatureFlags.Directional; + } + if (parameters.skyEnabled) + { + baseFeatureFlags |= (uint)LightFeatureFlags.Sky; + } - var localLightListCB = parameters.lightListCB; - localLightListCB.g_BaseFeatureFlags = baseFeatureFlags; + var localLightListCB = parameters.lightListCB; + localLightListCB.g_BaseFeatureFlags = baseFeatureFlags; - cmd.SetComputeBufferParam(parameters.buildMaterialFlagsShader, buildMaterialFlagsKernel, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlags); + ConstantBuffer.Push(cmd, localLightListCB, parameters.classificationShader, HDShaderIDs._ShaderVariablesLightList); - for (int i = 0; i < resources.gBuffer.Length; ++i) - cmd.SetComputeTextureParam(parameters.buildMaterialFlagsShader, buildMaterialFlagsKernel, HDShaderIDs._GBufferTexture[i], resources.gBuffer[i]); + // Note that all material feature flag bellow are in the same GBuffer (inGBuffer2) and thus material classification only sample one Gbuffer + cmd.SetComputeTextureParam(parameters.classificationShader, 0, HDShaderIDs._GBufferTexture[2], resources.gBuffer[2]); + cmd.SetComputeBufferParam(parameters.classificationShader, 0, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlagsBuffer); - if (resources.stencilTexture.rt == null || - resources.stencilTexture.rt.stencilFormat == GraphicsFormat.None) // We are accessing MSAA resolved version and not the depth stencil buffer directly. - { - cmd.SetComputeTextureParam(parameters.buildMaterialFlagsShader, buildMaterialFlagsKernel, HDShaderIDs._StencilTexture, resources.stencilTexture); - } - else - { - cmd.SetComputeTextureParam(parameters.buildMaterialFlagsShader, buildMaterialFlagsKernel, HDShaderIDs._StencilTexture, resources.stencilTexture, 0, RenderTextureSubElement.Stencil); - } + if (resources.stencilBuffer.rt == null || + resources.stencilBuffer.rt.stencilFormat == GraphicsFormat.None) // We are accessing MSAA resolved version and not the depth stencil buffer directly. + { + cmd.SetComputeTextureParam(parameters.classificationShader, 0, HDShaderIDs._StencilTexture, resources.stencilBuffer); + } + else + { + cmd.SetComputeTextureParam(parameters.classificationShader, 0, HDShaderIDs._StencilTexture, resources.stencilBuffer, 0, RenderTextureSubElement.Stencil); + } + + // Assume that we use fine (and not coarse) tiles in the shader. + cmd.DispatchCompute(parameters.classificationShader, 0, parameters.fineTileBufferDimensions.x, parameters.fineTileBufferDimensions.y, parameters.viewCount); + } + } - ConstantBuffer.Push(cmd, localLightListCB, parameters.buildMaterialFlagsShader, HDShaderIDs._ShaderVariablesLightList); + static void BuildDispatchIndirect(in BuildGPULightListParameters parameters, in BuildGPULightListResources resources, CommandBuffer cmd) + { + if (!parameters.enableFeatureVariants) return; - cmd.DispatchCompute(parameters.buildMaterialFlagsShader, buildMaterialFlagsKernel, parameters.numTilesFPTLX, parameters.numTilesFPTLY, parameters.viewCount); - } + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.BuildDispatchIndirect))) + { + // Assume that we use fine (and not coarse) tiles in the shader. + int numTiles = parameters.fineTileBufferDimensions.x * parameters.fineTileBufferDimensions.y; // clear dispatch indirect buffer if (parameters.useComputeAsPixel) { cmd.SetComputeBufferParam(parameters.clearDispatchIndirectShader, s_ClearDrawProceduralIndirectKernel, HDShaderIDs.g_DispatchIndirectBuffer, resources.dispatchIndirectBuffer); - cmd.SetComputeIntParam(parameters.clearDispatchIndirectShader, HDShaderIDs.g_NumTiles, parameters.numTilesFPTL); + cmd.SetComputeIntParam(parameters.clearDispatchIndirectShader, HDShaderIDs.g_NumTiles, numTiles); cmd.SetComputeIntParam(parameters.clearDispatchIndirectShader, HDShaderIDs.g_VertexPerTile, k_HasNativeQuadSupport ? 4 : 6); cmd.DispatchCompute(parameters.clearDispatchIndirectShader, s_ClearDrawProceduralIndirectKernel, 1, 1, 1); } @@ -3113,13 +3690,13 @@ static void BuildDispatchIndirectArguments(in BuildGPULightListParameters parame } // add tiles to indirect buffer - cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, s_BuildIndirectKernel, HDShaderIDs.g_DispatchIndirectBuffer, resources.dispatchIndirectBuffer); - cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, s_BuildIndirectKernel, HDShaderIDs.g_TileList, resources.tileList); - cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, s_BuildIndirectKernel, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlags); - cmd.SetComputeIntParam(parameters.buildDispatchIndirectShader, HDShaderIDs.g_NumTiles, parameters.numTilesFPTL); - cmd.SetComputeIntParam(parameters.buildDispatchIndirectShader, HDShaderIDs.g_NumTilesX, parameters.numTilesFPTLX); - // Round on k_ThreadGroupOptimalSize so we have optimal thread for buildDispatchIndirectShader kernel - cmd.DispatchCompute(parameters.buildDispatchIndirectShader, s_BuildIndirectKernel, (parameters.numTilesFPTL + k_ThreadGroupOptimalSize - 1) / k_ThreadGroupOptimalSize, 1, parameters.viewCount); + cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, 0, HDShaderIDs.g_DispatchIndirectBuffer, resources.dispatchIndirectBuffer); + cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, 0, HDShaderIDs.g_TileList, resources.tileListBuffer); + cmd.SetComputeBufferParam(parameters.buildDispatchIndirectShader, 0, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlagsBuffer); + + int groupCount = HDUtils.DivRoundUp(numTiles, k_ThreadGroupOptimalSize); + + cmd.DispatchCompute(parameters.buildDispatchIndirectShader, 0, groupCount, 1, parameters.viewCount); } } @@ -3130,8 +3707,7 @@ static bool DeferredUseComputeAsPixel(FrameSettings frameSettings) unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera hdCamera, TileAndClusterData tileAndClusterData, - ref ShaderVariablesLightList constantBuffer, - int totalLightCount) + ref ShaderVariablesLightList constantBuffer) { BuildGPULightListParameters parameters = new BuildGPULightListParameters(); @@ -3181,23 +3757,30 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera } } - var decalDatasCount = Math.Min(DecalSystem.m_DecalDatasCount, m_MaxDecalsOnScreen); + var decalDatasCount = Math.Min(DecalSystem.m_DecalDatasCount, m_MaxDecalsOnScreen); + int boundedEntityCount = m_BoundedEntityCollection.GetTotalEntityCount(); + + Vector2Int coarseTileBufferDimensions = GetCoarseTileBufferDimensions(hdCamera); - cb.g_iNrVisibLights = totalLightCount; + cb._BoundedEntityCount = (uint)boundedEntityCount; cb.g_screenSize = hdCamera.screenSize; // TODO remove and use global one. cb.g_viDimensions = new Vector2Int((int)hdCamera.screenSize.x, (int)hdCamera.screenSize.y); cb.g_isOrthographic = camera.orthographic ? 1u : 0u; cb.g_BaseFeatureFlags = 0; // Filled for each individual pass. - cb.g_iNumSamplesMSAA = (int)hdCamera.msaaSamples; - cb._EnvLightIndexShift = (uint)m_lightList.lights.Count; - cb._DecalIndexShift = (uint)(m_lightList.lights.Count + m_lightList.envLights.Count); - cb._DensityVolumeIndexShift = (uint)(m_lightList.lights.Count + m_lightList.envLights.Count + decalDatasCount); + + var mipInfo = GetDepthBufferMipChainInfo(); + + // This will NOT work if tile sizes are not powers of 2! + cb._DepthPyramidMipLevelOffsetCoarse = mipInfo.mipLevelOffsets[CeilLog2i(TiledLightingConstants.s_CoarseTileSize)]; + cb._DepthPyramidMipLevelOffsetFine = mipInfo.mipLevelOffsets[CeilLog2i(TiledLightingConstants.s_FineTileSize)]; // Copy the constant buffer into the parameter struct. parameters.lightListCB = cb; - parameters.totalLightCount = totalLightCount; - parameters.runLightList = parameters.totalLightCount > 0; + parameters.hasDirectionalLights = m_DirectionalLightData.Count != 0; + parameters.boundedEntityCount = boundedEntityCount; + + parameters.runLightList = boundedEntityCount != 0; parameters.clearLightLists = false; // TODO RENDERGRAPH: This logic is flawed with Render Graph. @@ -3206,6 +3789,7 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera // because for now buffers are pooled based on their parameters. When we do proper aliasing though, we might end up with any random chunk of memory. // Always build the light list in XR mode to avoid issues with multi-pass + // TODO: ????????????????? if (hdCamera.xr.enabled) { parameters.runLightList = true; @@ -3225,7 +3809,6 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera parameters.enableFeatureVariants = GetFeatureVariantsEnabled(hdCamera.frameSettings) && tileAndClusterData.hasTileBuffers; parameters.computeMaterialVariants = hdCamera.frameSettings.IsEnabled(FrameSettingsField.ComputeMaterialVariants); parameters.computeLightVariants = hdCamera.frameSettings.IsEnabled(FrameSettingsField.ComputeLightVariants); - parameters.lightList = m_lightList; parameters.skyEnabled = m_SkyManager.IsLightingSkyValid(hdCamera); parameters.useComputeAsPixel = DeferredUseComputeAsPixel(hdCamera.frameSettings); parameters.probeVolumeEnabled = hdCamera.frameSettings.IsEnabled(FrameSettingsField.ProbeVolume); @@ -3236,12 +3819,15 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera parameters.clearLightListCS = defaultResources.shaders.clearLightListsCS; parameters.clearLightListKernel = parameters.clearLightListCS.FindKernel("ClearList"); - // Screen space AABB - parameters.screenSpaceAABBShader = buildScreenAABBShader; - parameters.screenSpaceAABBKernel = 0; - + // Binned lighting + parameters.binEntities = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting); + parameters.screenSpaceAABBShader = buildScreenAABBShader; + parameters.zBinShader = zBinShader; + parameters.tileShader = tileShader; + parameters.coarseTileBufferDimensions = GetCoarseTileBufferDimensions(hdCamera); + parameters.fineTileBufferDimensions = GetFineTileBufferDimensions(hdCamera); + // Big tile prepass - parameters.runBigTilePrepass = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BigTilePrepass); parameters.bigTilePrepassShader = buildPerBigTileLightListShader; parameters.bigTilePrepassKernel = s_GenListPerBigTileKernel; parameters.numBigTilesX = (w + 63) / 64; @@ -3251,7 +3837,7 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera parameters.runFPTL = hdCamera.frameSettings.fptl && tileAndClusterData.hasTileBuffers; parameters.buildPerTileLightListShader = buildPerTileLightListShader; parameters.buildPerTileLightListShader.shaderKeywords = null; - if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.BigTilePrepass)) + if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting)) { parameters.buildPerTileLightListShader.EnableKeyword("USE_TWO_PASS_TILED_LIGHTING"); } @@ -3271,7 +3857,7 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera // Cluster bool msaa = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA); - var clustPrepassSourceIdx = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BigTilePrepass) ? ClusterPrepassSource.BigTile : ClusterPrepassSource.None; + var clustPrepassSourceIdx = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting) ? ClusterPrepassSource.BigTile : ClusterPrepassSource.None; var clustDepthSourceIdx = ClusterDepthSource.NoDepth; if (tileAndClusterData.clusterNeedsDepth) clustDepthSourceIdx = msaa ? ClusterDepthSource.MSAA_Depth : ClusterDepthSource.Depth; @@ -3284,7 +3870,7 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera parameters.clusterNeedsDepth = tileAndClusterData.clusterNeedsDepth; // Build dispatch indirect - parameters.buildMaterialFlagsShader = buildMaterialFlagsShader; + parameters.classificationShader = classificationShader; parameters.clearDispatchIndirectShader = clearDispatchIndirectShader; parameters.buildDispatchIndirectShader = buildDispatchIndirectShader; parameters.buildDispatchIndirectShader.shaderKeywords = null; @@ -3297,7 +3883,7 @@ unsafe BuildGPULightListParameters PrepareBuildGPULightListParameters(HDCamera return parameters; } - HDAdditionalLightData GetHDAdditionalLightData(Light light) + static HDAdditionalLightData GetHDAdditionalLightData(Light light) { HDAdditionalLightData add = null; @@ -3318,6 +3904,11 @@ struct LightLoopGlobalParameters public TileAndClusterData tileAndClusterData; } + private bool IsDepthSorted(BoundedEntityCategory category) + { + return (category != BoundedEntityCategory.ReflectionProbe) && (category != BoundedEntityCategory.Decal); + } + unsafe void UpdateShaderVariablesGlobalLightLoop(ref ShaderVariablesGlobal cb, HDCamera hdCamera) { // Atlases @@ -3339,12 +3930,14 @@ unsafe void UpdateShaderVariablesGlobalLightLoop(ref ShaderVariablesGlobal cb, H cb._Env2DAtlasScaleOffset[i * 4 + j] = m_TextureCaches.env2DAtlasScaleOffset[i][j]; } - // Light info - cb._PunctualLightCount = (uint)m_lightList.punctualLightCount; - cb._AreaLightCount = (uint)m_lightList.areaLightCount; - cb._EnvLightCount = (uint)m_lightList.envLights.Count; - cb._DirectionalLightCount = (uint)m_lightList.directionalLights.Count; - cb._DecalCount = (uint)DecalSystem.m_DecalDatasCount; + // Entity info + cb._DirectionalLightCount = (uint)m_DirectionalLightData.Count; + cb._PunctualLightCount = (uint)m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.PunctualLight); + cb._AreaLightCount = (uint)m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.AreaLight); + cb._ReflectionProbeCount = (uint)m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.ReflectionProbe); + cb._DecalCount = (uint)m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.Decal); + cb._DensityVolumeCount = (uint)m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.DensityVolume); + HDAdditionalLightData sunLightData = GetHDAdditionalLightData(m_CurrentSunLight); bool sunLightShadow = sunLightData != null && m_CurrentShadowSortedSunLightIndex >= 0; cb._DirectionalShadowIndex = sunLightShadow ? m_CurrentShadowSortedSunLightIndex : -1; @@ -3355,7 +3948,35 @@ unsafe void UpdateShaderVariablesGlobalLightLoop(ref ShaderVariablesGlobal cb, H const float C = (float)(1 << k_Log2NumClusters); var geomSeries = (1.0 - Mathf.Pow(k_ClustLogBase, C)) / (1 - k_ClustLogBase); // geometric series: sum_k=0^{C-1} base^k - // Tile/Cluster + // Binned lighting + for (int i = 0; i < (int)BoundedEntityCategory.Count; i++) + { + cb._BoundedEntityCountPerCategory[i * 4] = (uint)m_BoundedEntityCollection.GetEntityCount((BoundedEntityCategory)i); + cb._BoundedEntityDwordCountPerCategory[i * 4] = (uint)HDUtils.DivRoundUp((int)cb._BoundedEntityCountPerCategory[i * 4], 32); + // depth sorted categories only use 1 DWORD with start and end indices compressed into 32 bits. + cb._BoundedEntityZBinDwordCountPerCategory[i * 4] = IsDepthSorted((BoundedEntityCategory)i) ? 1 : (uint)HDUtils.DivRoundUp((int)cb._BoundedEntityCountPerCategory[i * 4], 32); + } + + cb._BoundedEntityOffsetPerCategory[0] = 0; + cb._BoundedEntityDwordOffsetPerCategory[0] = 0; + + for (int i = 1; i < (int)BoundedEntityCategory.Count; i++) + { + cb._BoundedEntityOffsetPerCategory[i * 4] = cb._BoundedEntityOffsetPerCategory[(i - 1) * 4] + cb._BoundedEntityCountPerCategory[(i - 1) * 4]; + cb._BoundedEntityDwordOffsetPerCategory[i * 4] = cb._BoundedEntityDwordOffsetPerCategory[(i - 1) * 4] + cb._BoundedEntityDwordCountPerCategory[(i - 1) * 4]; + cb._BoundedEntityZBinDwordOffsetPerCategory[i * 4] = cb._BoundedEntityZBinDwordOffsetPerCategory[(i - 1) * 4] + cb._BoundedEntityZBinDwordCountPerCategory[(i - 1) * 4]; + } + + int elementsPerTile = HDUtils.DivRoundUp(m_TileEntryLimit, 32); // Each element is a DWORD + int dwordsRequired = (int)cb._BoundedEntityDwordOffsetPerCategory[((int)BoundedEntityCategory.Count - 1) * 4] + + (int)cb._BoundedEntityDwordCountPerCategory[((int)BoundedEntityCategory.Count - 1) * 4]; + + Debug.Assert(dwordsRequired <= elementsPerTile, "Insufficient allocation of tile memory. Tiled/binned lighting may experience graphical corruption. Increase 'Tile entry limit' in the Lighting section of your HDRP asset."); + + cb._CoarseTileBufferDimensions = GetCoarseTileBufferDimensions(hdCamera); + cb._FineTileBufferDimensions = GetFineTileBufferDimensions(hdCamera); + + // Old stuff below... cb._NumTileFtplX = (uint)GetNumTileFtplX(hdCamera); cb._NumTileFtplY = (uint)GetNumTileFtplY(hdCamera); cb.g_fClustScale = (float)(geomSeries / (hdCamera.camera.farClipPlane - hdCamera.camera.nearClipPlane));; @@ -3371,25 +3992,25 @@ unsafe void UpdateShaderVariablesGlobalLightLoop(ref ShaderVariablesGlobal cb, H cb._EnableSSRefraction = hdCamera.frameSettings.IsEnabled(FrameSettingsField.Refraction) ? 1u : 0u; } - void PushLightDataGlobalParams(CommandBuffer cmd) + void PushLightDataGlobalParams(CommandBuffer cmd, int activeViewCount) { - m_LightLoopLightData.directionalLightData.SetData(m_lightList.directionalLights); - m_LightLoopLightData.lightData.SetData(m_lightList.lights); - m_LightLoopLightData.envLightData.SetData(m_lightList.envLights); - m_LightLoopLightData.decalData.SetData(DecalSystem.m_DecalDatas, 0, 0, Math.Min(DecalSystem.m_DecalDatasCount, m_MaxDecalsOnScreen)); // don't add more than the size of the buffer + m_DirectionalLightDataBuffer.SetData(m_DirectionalLightData); + m_BoundedEntityCollection.CopyEntityDataToComputeBuffers(activeViewCount); - // These two buffers have been set in Rebuild(). At this point, view 0 contains combined data from all views - m_TileAndClusterData.convexBoundsBuffer.SetData(m_lightList.lightsPerView[0].bounds); - m_TileAndClusterData.lightVolumeDataBuffer.SetData(m_lightList.lightsPerView[0].lightVolumes); + // Hand it over so it can be used to construct light lists. BEC still owns (and manages) the buffer. + m_TileAndClusterData.convexBoundsBuffer = m_BoundedEntityCollection.GetEntityBoundsBuffer(); cmd.SetGlobalTexture(HDShaderIDs._CookieAtlas, m_TextureCaches.lightCookieManager.atlasTexture); cmd.SetGlobalTexture(HDShaderIDs._EnvCubemapTextures, m_TextureCaches.reflectionProbeCache.GetTexCache()); cmd.SetGlobalTexture(HDShaderIDs._Env2DTextures, m_TextureCaches.reflectionPlanarProbeCache.GetTexCache()); - cmd.SetGlobalBuffer(HDShaderIDs._LightDatas, m_LightLoopLightData.lightData); - cmd.SetGlobalBuffer(HDShaderIDs._EnvLightDatas, m_LightLoopLightData.envLightData); - cmd.SetGlobalBuffer(HDShaderIDs._DecalDatas, m_LightLoopLightData.decalData); - cmd.SetGlobalBuffer(HDShaderIDs._DirectionalLightDatas, m_LightLoopLightData.directionalLightData); + // TODO: see if setting these not globally but, rather, per pass, is worth it. + cmd.SetGlobalBuffer(HDShaderIDs._DirectionalLightData, m_DirectionalLightDataBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._PunctualLightData, m_BoundedEntityCollection.GetEntityDataBuffer(BoundedEntityCategory.PunctualLight)); + cmd.SetGlobalBuffer(HDShaderIDs._AreaLightData, m_BoundedEntityCollection.GetEntityDataBuffer(BoundedEntityCategory.AreaLight)); + cmd.SetGlobalBuffer(HDShaderIDs._ReflectionProbeData, m_BoundedEntityCollection.GetEntityDataBuffer(BoundedEntityCategory.ReflectionProbe)); + cmd.SetGlobalBuffer(HDShaderIDs._DecalData, m_BoundedEntityCollection.GetEntityDataBuffer(BoundedEntityCategory.Decal)); + cmd.SetGlobalBuffer(HDShaderIDs._DensityVolumeData, m_BoundedEntityCollection.GetEntityDataBuffer(BoundedEntityCategory.DensityVolume)); } void PushShadowGlobalParams(CommandBuffer cmd) @@ -3412,7 +4033,7 @@ void GetContactShadowMask(HDAdditionalLightData hdAdditionalLightData, BoolScala // If contact shadows are not enabled or we already reached the manimal number of contact shadows // or this is not rasterization if ((!hdAdditionalLightData.useContactShadow.Value(contactShadowEnabled)) - || m_ContactShadowIndex >= LightDefinitions.s_LightListMaxPrunedEntries + || m_ContactShadowIndex >= TiledLightingConstants.s_LightListMaxPrunedEntries || !isRasterization) return; @@ -3426,8 +4047,6 @@ void GetContactShadowMask(HDAdditionalLightData hdAdditionalLightData, BoolScala struct DeferredLightingParameters { - public int numTilesX; - public int numTilesY; public int numTiles; public bool enableTile; public bool outputSplitLighting; @@ -3452,17 +4071,16 @@ DeferredLightingParameters PrepareDeferredLightingParameters(HDCamera hdCamera, bool debugDisplayOrSceneLightOff = CoreUtils.IsSceneLightingDisabled(hdCamera.camera) || debugDisplaySettings.IsDebugDisplayEnabled(); - int w = hdCamera.actualWidth; - int h = hdCamera.actualHeight; - parameters.numTilesX = (w + 15) / 16; - parameters.numTilesY = (h + 15) / 16; - parameters.numTiles = parameters.numTilesX * parameters.numTilesY; + // Assume the deferred lighting CS uses fine tiles. + Vector2Int fineTileBufferDimensions = GetFineTileBufferDimensions(hdCamera); + parameters.numTiles = fineTileBufferDimensions.x * fineTileBufferDimensions.y; + parameters.enableTile = hdCamera.frameSettings.IsEnabled(FrameSettingsField.DeferredTile); parameters.outputSplitLighting = hdCamera.frameSettings.IsEnabled(FrameSettingsField.SubsurfaceScattering); parameters.useComputeLightingEvaluation = hdCamera.frameSettings.IsEnabled(FrameSettingsField.ComputeLightEvaluation); parameters.enableFeatureVariants = GetFeatureVariantsEnabled(hdCamera.frameSettings) && !debugDisplayOrSceneLightOff; parameters.enableShadowMasks = m_EnableBakeShadowMask; - parameters.numVariants = LightDefinitions.s_NumFeatureVariants; + parameters.numVariants = TiledLightingConstants.s_NumFeatureVariants; parameters.debugDisplaySettings = debugDisplaySettings; // Compute Lighting @@ -3483,7 +4101,8 @@ struct DeferredLightingResources public RTHandle depthStencilBuffer; public RTHandle depthTexture; - public ComputeBuffer lightListBuffer; + public ComputeBuffer fineTileBuffer; + public ComputeBuffer zBinBuffer; public ComputeBuffer tileFeatureFlagsBuffer; public ComputeBuffer tileListBuffer; public ComputeBuffer dispatchIndirectBuffer; @@ -3493,7 +4112,8 @@ static void RenderComputeDeferredLighting(in DeferredLightingParameters paramete { using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.RenderDeferredLightingCompute))) { - cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListGlobal, resources.lightListBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._FineTileBuffer, resources.fineTileBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._zBinBuffer, resources.zBinBuffer); parameters.deferredComputeShader.shaderKeywords = null; switch (HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.hdShadowInitParams.shadowFilteringQuality) @@ -3538,18 +4158,17 @@ static void RenderComputeDeferredLighting(in DeferredLightingParameters paramete cmd.SetComputeTextureParam(parameters.deferredComputeShader, kernel, HDShaderIDs._StencilTexture, resources.depthStencilBuffer, 0, RenderTextureSubElement.Stencil); - // always do deferred lighting in blocks of 16x16 (not same as tiled light size) if (parameters.enableFeatureVariants) { cmd.SetComputeBufferParam(parameters.deferredComputeShader, kernel, HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlagsBuffer); cmd.SetComputeIntParam(parameters.deferredComputeShader, HDShaderIDs.g_TileListOffset, variant * parameters.numTiles * parameters.viewCount); cmd.SetComputeBufferParam(parameters.deferredComputeShader, kernel, HDShaderIDs.g_TileList, resources.tileListBuffer); - cmd.DispatchCompute(parameters.deferredComputeShader, kernel, resources.dispatchIndirectBuffer, (uint)variant * 3 * sizeof(uint)); + cmd.DispatchCompute(parameters.deferredComputeShader, kernel, resources.dispatchIndirectBuffer, (uint)(variant * 3 * sizeof(uint))); } else { - // 4x 8x8 groups per a 16x16 tile. - cmd.DispatchCompute(parameters.deferredComputeShader, kernel, parameters.numTilesX * 2, parameters.numTilesY * 2, parameters.viewCount); + cmd.DispatchCompute(parameters.deferredComputeShader, kernel, parameters.numTiles * 4, 1, parameters.viewCount); // 4x 8*8 groups per a 16*16 tile + break; // There's only one variant. Don't render the same thing 30 times! } } } @@ -3569,7 +4188,7 @@ static void RenderComputeAsPixelDeferredLighting(in DeferredLightingParameters p for (int variant = 0; variant < parameters.numVariants; variant++) { - cmd.SetGlobalInt(HDShaderIDs.g_TileListOffset, variant * parameters.numTiles); + cmd.SetGlobalInt(HDShaderIDs.g_TileListOffset, variant * parameters.numTiles * parameters.viewCount); cmd.EnableShaderKeyword(s_variantNames[variant]); @@ -3595,7 +4214,8 @@ static void RenderComputeAsPixelDeferredLighting(in DeferredLightingParameters p { using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.RenderDeferredLightingComputeAsPixel))) { - cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListGlobal, resources.lightListBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._FineTileBuffer, resources.fineTileBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._zBinBuffer, resources.zBinBuffer); cmd.SetGlobalTexture(HDShaderIDs._CameraDepthTexture, resources.depthTexture); cmd.SetGlobalBuffer(HDShaderIDs.g_TileFeatureFlags, resources.tileFeatureFlagsBuffer); @@ -3617,7 +4237,8 @@ static void RenderComputeAsPixelDeferredLighting(in DeferredLightingParameters p static void RenderPixelDeferredLighting(in DeferredLightingParameters parameters, in DeferredLightingResources resources, CommandBuffer cmd) { - cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListGlobal, resources.lightListBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._FineTileBuffer, resources.fineTileBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._zBinBuffer, resources.zBinBuffer); // First, render split lighting. if (parameters.outputSplitLighting) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl index 823997f2ae9..ce3b2e164bd 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl @@ -22,6 +22,17 @@ #define LIGHTCATEGORY_DENSITY_VOLUME (4) #define LIGHTCATEGORY_COUNT (5) +// +// UnityEngine.Rendering.HighDefinition.BoundedEntityCategory: static fields +// +#define BOUNDEDENTITYCATEGORY_PUNCTUAL_LIGHT (0) +#define BOUNDEDENTITYCATEGORY_AREA_LIGHT (1) +#define BOUNDEDENTITYCATEGORY_REFLECTION_PROBE (2) +#define BOUNDEDENTITYCATEGORY_DECAL (3) +#define BOUNDEDENTITYCATEGORY_DENSITY_VOLUME (4) +#define BOUNDEDENTITYCATEGORY_COUNT (5) +#define BOUNDEDENTITYCATEGORY_NONE (5) + // // UnityEngine.Rendering.HighDefinition.LightFeatureFlags: static fields // @@ -35,7 +46,7 @@ #define LIGHTFEATUREFLAGS_PROBE_VOLUME (524288) // -// UnityEngine.Rendering.HighDefinition.LightDefinitions: static fields +// UnityEngine.Rendering.HighDefinition.TiledLightingConstants: static fields // #define MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE (512) #define VIEWPORT_SCALE_Z (1) @@ -58,6 +69,9 @@ #define SCREEN_SPACE_COLOR_SHADOW_FLAG (256) #define INVALID_SCREEN_SPACE_SHADOW (255) #define SCREEN_SPACE_SHADOW_INDEX_MASK (255) +#define COARSE_TILE_SIZE (64) +#define FINE_TILE_SIZE (16) +#define Z_BIN_COUNT (8192) // // UnityEngine.Rendering.HighDefinition.ClusterDebugMode: static fields @@ -65,16 +79,25 @@ #define CLUSTERDEBUGMODE_VISUALIZE_OPAQUE (0) #define CLUSTERDEBUGMODE_VISUALIZE_SLICE (1) -// Generated from UnityEngine.Rendering.HighDefinition.SFiniteLightBound +// +// UnityEngine.Rendering.HighDefinition.BinnedDebugMode: static fields +// +#define BINNEDDEBUGMODE_VISUALIZE_OPAQUE (0) +#define BINNEDDEBUGMODE_VISUALIZE_SLICE (1) +#define BINNEDDEBUGMODE_VISUALIZE_VARIANTS (2) + +// Generated from UnityEngine.Rendering.HighDefinition.FiniteLightBound // PackingRules = Exact -struct SFiniteLightBound +struct FiniteLightBound { + float3 center; + float radius; float3 boxAxisX; + float scaleXY; float3 boxAxisY; + float __pad0__; float3 boxAxisZ; - float3 center; - float scaleXY; - float radius; + float __pad1__; }; // Generated from UnityEngine.Rendering.HighDefinition.LightVolumeData @@ -102,9 +125,11 @@ CBUFFER_START(ShaderVariablesLightList) float4x4 g_mScrProjectionArr[2]; float4x4 g_mInvProjectionArr[2]; float4x4 g_mProjectionArr[2]; + int2 _DepthPyramidMipLevelOffsetCoarse; + int2 _DepthPyramidMipLevelOffsetFine; float4 g_screenSize; int2 g_viDimensions; - int g_iNrVisibLights; + uint _BoundedEntityCount; uint g_isOrthographic; uint g_BaseFeatureFlags; int g_iNumSamplesMSAA; @@ -117,31 +142,39 @@ CBUFFER_START(ShaderVariablesLightList) CBUFFER_END // -// Accessors for UnityEngine.Rendering.HighDefinition.SFiniteLightBound +// Accessors for UnityEngine.Rendering.HighDefinition.FiniteLightBound // -float3 GetBoxAxisX(SFiniteLightBound value) +float3 GetCenter(FiniteLightBound value) +{ + return value.center; +} +float GetRadius(FiniteLightBound value) +{ + return value.radius; +} +float3 GetBoxAxisX(FiniteLightBound value) { return value.boxAxisX; } -float3 GetBoxAxisY(SFiniteLightBound value) +float GetScaleXY(FiniteLightBound value) { - return value.boxAxisY; + return value.scaleXY; } -float3 GetBoxAxisZ(SFiniteLightBound value) +float3 GetBoxAxisY(FiniteLightBound value) { - return value.boxAxisZ; + return value.boxAxisY; } -float3 GetCenter(SFiniteLightBound value) +float Get__pad0__(FiniteLightBound value) { - return value.center; + return value.__pad0__; } -float GetScaleXY(SFiniteLightBound value) +float3 GetBoxAxisZ(FiniteLightBound value) { - return value.scaleXY; + return value.boxAxisZ; } -float GetRadius(SFiniteLightBound value) +float Get__pad1__(FiniteLightBound value) { - return value.radius; + return value.__pad1__; } // // Accessors for UnityEngine.Rendering.HighDefinition.LightVolumeData diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index a80b8fb7d6c..33d5451f530 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -119,7 +119,7 @@ void ApplyDebug(LightLoopContext context, PositionInputs posInput, BSDFData bsdf SHADOW_TYPE shadow = 1.0; if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; #if defined(SCREEN_SPACE_SHADOWS_ON) && !defined(_SURFACE_TYPE_TRANSPARENT) if ((light.screenSpaceShadowIndex & SCREEN_SPACE_SHADOW_INDEX_MASK) != INVALID_SCREEN_SPACE_SHADOW) @@ -174,7 +174,7 @@ void ApplyDebug(LightLoopContext context, PositionInputs posInput, BSDFData bsdf #endif } -void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BSDFData bsdfData, BuiltinData builtinData, uint featureFlags, +void LightLoop( float3 V, PositionInputs posInput, uint tile, uint zBin, PreLightData preLightData, BSDFData bsdfData, BuiltinData builtinData, uint featureFlags, out LightLoopOutput lightLoopOutput) { // Init LightLoop output structure @@ -199,7 +199,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // Evaluate sun shadows. if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; #if defined(SCREEN_SPACE_SHADOWS_ON) && !defined(_SURFACE_TYPE_TRANSPARENT) if ((light.screenSpaceShadowIndex & SCREEN_SPACE_SHADOW_INDEX_MASK) != INVALID_SCREEN_SPACE_SHADOW) @@ -225,6 +225,8 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS } } + uint i; // Declare once to avoid the D3D11 compiler warning. + // This struct is define in the material. the Lightloop must not access it // PostEvaluateBSDF call at the end will convert Lighting to diffuse and specular lighting AggregateLighting aggregateLighting; @@ -232,63 +234,23 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS if (featureFlags & LIGHTFEATUREFLAGS_PUNCTUAL) { - uint lightCount, lightStart; - -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_PUNCTUAL, lightStart, lightCount); -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - lightCount = _PunctualLightCount; - lightStart = 0; -#endif - - bool fastPath = false; - #if SCALARIZE_LIGHT_LOOP - uint lightStartLane0; - fastPath = IsFastPath(lightStart, lightStartLane0); - - if (fastPath) - { - lightStart = lightStartLane0; - } - #endif + EntityLookupParameters params = InitializePunctualLightLookup(tile, zBin); - // Scalarized loop. All lights that are in a tile/cluster touched by any pixel in the wave are loaded (scalar load), only the one relevant to current thread/pixel are processed. - // For clarity, the following code will follow the convention: variables starting with s_ are meant to be wave uniform (meant for scalar register), - // v_ are variables that might have different value for each thread in the wave (meant for vector registers). - // This will perform more loads than it is supposed to, however, the benefits should offset the downside, especially given that light data accessed should be largely coherent. - // Note that the above is valid only if wave intriniscs are supported. - uint v_lightListOffset = 0; - uint v_lightIdx = lightStart; + i = 0; - while (v_lightListOffset < lightCount) + LightData lightData; + while (TryLoadPunctualLightData(i, params, lightData)) { - v_lightIdx = FetchIndex(lightStart, v_lightListOffset); -#if SCALARIZE_LIGHT_LOOP - uint s_lightIdx = ScalarizeElementIndex(v_lightIdx, fastPath); -#else - uint s_lightIdx = v_lightIdx; -#endif - if (s_lightIdx == -1) - break; - - LightData s_lightData = FetchLight(s_lightIdx); - - // If current scalar and vector light index match, we process the light. The v_lightListOffset for current thread is increased. - // Note that the following should really be ==, however, since helper lanes are not considered by WaveActiveMin, such helper lanes could - // end up with a unique v_lightIdx value that is smaller than s_lightIdx hence being stuck in a loop. All the active lanes will not have this problem. - if (s_lightIdx >= v_lightIdx) + if (IsMatchingLightLayer(lightData.lightLayers, builtinData.renderingLayers)) { - v_lightListOffset++; - if (IsMatchingLightLayer(s_lightData.lightLayers, builtinData.renderingLayers)) - { - DirectLighting lighting = EvaluateBSDF_Punctual(context, V, posInput, preLightData, s_lightData, bsdfData, builtinData); - AccumulateDirectLighting(lighting, aggregateLighting); - } + DirectLighting lighting = EvaluateBSDF_Punctual(context, V, posInput, preLightData, lightData, bsdfData, builtinData); + AccumulateDirectLighting(lighting, aggregateLighting); } + + i++; } } - // Define macro for a better understanding of the loop // TODO: this code is now much harder to understand... #define EVALUATE_BSDF_ENV_SKY(envLightData, TYPE, type) \ @@ -304,22 +266,6 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS float reflectionHierarchyWeight = 0.0; // Max: 1.0 float refractionHierarchyWeight = _EnableSSRefraction ? 0.0 : 1.0; // Max: 1.0 - uint envLightStart, envLightCount; - - // Fetch first env light to provide the scene proxy for screen space computation -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_ENV, envLightStart, envLightCount); -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - envLightCount = _EnvLightCount; - envLightStart = 0; -#endif - - bool fastPath = false; - #if SCALARIZE_LIGHT_LOOP - uint envStartFirstLane; - fastPath = IsFastPath(envLightStart, envStartFirstLane); - #endif - // Reflection / Refraction hierarchy is // 1. Screen Space Refraction / Reflection // 2. Environment Reflection / Refraction @@ -334,12 +280,10 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS } #endif + EntityLookupParameters params = InitializeReflectionProbeLookup(tile, zBin); + i = 0; EnvLightData envLightData; - if (envLightCount > 0) - { - envLightData = FetchEnvLight(envLightStart, 0); - } - else + if(!TryLoadReflectionProbeData(i, params, envLightData)) { envLightData = InitSkyEnvLightData(0); } @@ -353,52 +297,25 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // Reflection probes are sorted by volume (in the increasing order). if (featureFlags & LIGHTFEATUREFLAGS_ENV) { + params = InitializeReflectionProbeLookup(tile, zBin); context.sampleReflection = SINGLE_PASS_CONTEXT_SAMPLE_REFLECTION_PROBES; - #if SCALARIZE_LIGHT_LOOP - if (fastPath) - { - envLightStart = envStartFirstLane; - } - #endif - - // Scalarized loop, same rationale of the punctual light version - uint v_envLightListOffset = 0; - uint v_envLightIdx = envLightStart; - while (v_envLightListOffset < envLightCount) + while (TryLoadReflectionProbeData(i, params, envLightData)) { - v_envLightIdx = FetchIndex(envLightStart, v_envLightListOffset); -#if SCALARIZE_LIGHT_LOOP - uint s_envLightIdx = ScalarizeElementIndex(v_envLightIdx, fastPath); -#else - uint s_envLightIdx = v_envLightIdx; -#endif - if (s_envLightIdx == -1) - break; - - EnvLightData s_envLightData = FetchEnvLight(s_envLightIdx); // Scalar load. - - // If current scalar and vector light index match, we process the light. The v_envLightListOffset for current thread is increased. - // Note that the following should really be ==, however, since helper lanes are not considered by WaveActiveMin, such helper lanes could - // end up with a unique v_envLightIdx value that is smaller than s_envLightIdx hence being stuck in a loop. All the active lanes will not have this problem. - if (s_envLightIdx >= v_envLightIdx) + if (reflectionHierarchyWeight < 1.0) { - v_envLightListOffset++; - if (reflectionHierarchyWeight < 1.0) - { - EVALUATE_BSDF_ENV(s_envLightData, REFLECTION, reflection); - } - // Refraction probe and reflection probe will process exactly the same weight. It will be good for performance to be able to share this computation - // However it is hard to deal with the fact that reflectionHierarchyWeight and refractionHierarchyWeight have not the same values, they are independent - // The refraction probe is rarely used and happen only with sphere shape and high IOR. So we accept the slow path that use more simple code and - // doesn't affect the performance of the reflection which is more important. - // We reuse LIGHTFEATUREFLAGS_SSREFRACTION flag as refraction is mainly base on the screen. Would be a waste to not use screen and only cubemap. - if ((featureFlags & LIGHTFEATUREFLAGS_SSREFRACTION) && (refractionHierarchyWeight < 1.0)) - { - EVALUATE_BSDF_ENV(s_envLightData, REFRACTION, refraction); - } + EVALUATE_BSDF_ENV(envLightData, REFLECTION, reflection); } - + // Refraction probe and reflection probe will process exactly the same weight. It will be good for performance to be able to share this computation + // However it is hard to deal with the fact that reflectionHierarchyWeight and refractionHierarchyWeight have not the same values, they are independent + // The refraction probe is rarely used and happen only with sphere shape and high IOR. So we accept the slow path that use more simple code and + // doesn't affect the performance of the reflection which is more important. + // We reuse LIGHTFEATUREFLAGS_SSREFRACTION flag as refraction is mainly base on the screen. Would be a waste to not use screen and only cubemap. + if ((featureFlags & LIGHTFEATUREFLAGS_SSREFRACTION) && (refractionHierarchyWeight < 1.0)) + { + EVALUATE_BSDF_ENV(envLightData, REFRACTION, refraction); + } + i++; } } @@ -426,14 +343,13 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS #undef EVALUATE_BSDF_ENV #undef EVALUATE_BSDF_ENV_SKY - uint i = 0; // Declare once to avoid the D3D11 compiler warning. if (featureFlags & LIGHTFEATUREFLAGS_DIRECTIONAL) { for (i = 0; i < _DirectionalLightCount; ++i) { - if (IsMatchingLightLayer(_DirectionalLightDatas[i].lightLayers, builtinData.renderingLayers)) + if (IsMatchingLightLayer(_DirectionalLightData[i].lightLayers, builtinData.renderingLayers)) { - DirectLighting lighting = EvaluateBSDF_Directional(context, V, posInput, preLightData, _DirectionalLightDatas[i], bsdfData, builtinData); + DirectLighting lighting = EvaluateBSDF_Directional(context, V, posInput, preLightData, _DirectionalLightData[i], bsdfData, builtinData); AccumulateDirectLighting(lighting, aggregateLighting); } } @@ -442,53 +358,20 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS #if SHADEROPTIONS_AREA_LIGHTS if (featureFlags & LIGHTFEATUREFLAGS_AREA) { - uint lightCount, lightStart; - - #ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_AREA, lightStart, lightCount); - #else - lightCount = _AreaLightCount; - lightStart = _PunctualLightCount; - #endif + EntityLookupParameters params = InitializeAreaLightLookup(tile, zBin); - // COMPILER BEHAVIOR WARNING! - // If rectangle lights are before line lights, the compiler will duplicate light matrices in VGPR because they are used differently between the two types of lights. - // By keeping line lights first we avoid this behavior and save substantial register pressure. - // TODO: This is based on the current Lit.shader and can be different for any other way of implementing area lights, how to be generic and ensure performance ? + i = 0; - if (lightCount > 0) + LightData lightData; + while (TryLoadAreaLightData(i, params, lightData)) { - i = 0; - - uint last = lightCount - 1; - LightData lightData = FetchLight(lightStart, i); - - while (i <= last && lightData.lightType == GPULIGHTTYPE_TUBE) + if (IsMatchingLightLayer(lightData.lightLayers, builtinData.renderingLayers)) { - lightData.lightType = GPULIGHTTYPE_TUBE; // Enforce constant propagation - lightData.cookieMode = COOKIEMODE_NONE; // Enforce constant propagation - - if (IsMatchingLightLayer(lightData.lightLayers, builtinData.renderingLayers)) - { - DirectLighting lighting = EvaluateBSDF_Area(context, V, posInput, preLightData, lightData, bsdfData, builtinData); - AccumulateDirectLighting(lighting, aggregateLighting); - } - - lightData = FetchLight(lightStart, min(++i, last)); + DirectLighting lighting = EvaluateBSDF_Area(context, V, posInput, preLightData, lightData, bsdfData, builtinData); + AccumulateDirectLighting(lighting, aggregateLighting); } - while (i <= last) // GPULIGHTTYPE_RECTANGLE - { - lightData.lightType = GPULIGHTTYPE_RECTANGLE; // Enforce constant propagation - - if (IsMatchingLightLayer(lightData.lightLayers, builtinData.renderingLayers)) - { - DirectLighting lighting = EvaluateBSDF_Area(context, V, posInput, preLightData, lightData, bsdfData, builtinData); - AccumulateDirectLighting(lighting, aggregateLighting); - } - - lightData = FetchLight(lightStart, min(++i, last)); - } + i++; } } #endif diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl index 254a65cd632..c1f1bca732e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl @@ -169,177 +169,329 @@ float4 SampleEnv(LightLoopContext lightLoopContext, int index, float3 texCoord, // Single Pass and Tile Pass // ---------------------------------------------------------------------------- -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl" -// Calculate the offset in global light index light for current light category -int GetTileOffset(PositionInputs posInput, uint lightCategory) -{ - uint2 tileIndex = posInput.tileCoord; - return (tileIndex.y + lightCategory * _NumTileFtplY) * _NumTileFtplX + tileIndex.x; -} +#if (defined(COARSE_BINNING) || defined(FINE_BINNING)) -void GetCountAndStartTile(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount) +uint BitFieldFromBitRange(int minBit, int maxBit) { - int tileOffset = GetTileOffset(posInput, lightCategory); + uint mask = 0; -#if defined(UNITY_STEREO_INSTANCING_ENABLED) - // Eye base offset must match code in lightlistbuild.compute - tileOffset += unity_StereoEyeIndex * _NumTileFtplX * _NumTileFtplY * LIGHTCATEGORY_COUNT; -#endif + if ((maxBit >= minBit) && (maxBit >= 0) && (minBit <= 31)) + { + minBit = max( 0, minBit); + maxBit = min(31, maxBit); - // The first entry inside a tile is the number of light for lightCategory (thus the +0) - lightCount = g_vLightListGlobal[DWORD_PER_TILE * tileOffset + 0] & 0xffff; - start = tileOffset; -} + uint minMask = (1u << minBit) - 1u; // (minBit = 0) -> (minMask = 0) + uint maxMask = UINT_MAX >> (31 - maxBit); // (maxBit = 31) -> (maxMask = 0xFFFFFFFF) -#ifdef USE_FPTL_LIGHTLIST + mask = minMask ^ maxMask; + } -uint GetTileSize() -{ - return TILE_SIZE_FPTL; + return mask; } -void GetCountAndStart(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount) +// Internal. Do not access directly. +struct EntityLookupParameters { - GetCountAndStartTile(posInput, lightCategory, start, lightCount); -} + uint dwordIndex; // Wave-uniform + uint dwordCount; // Wave-uniform + int2 zBinEntityIndexRange; // Wave-varying + uint tileBufferIndex; // Wave-uniform (deferred CS) or wave-varying (others) + uint zBinBufferIndex; // Wave-varying + uint inputDword; // Wave-uniform + bool depthSorted; // Wave-uniform +}; -uint FetchIndex(uint tileOffset, uint lightOffset) +// Internal. Do not call directly. +EntityLookupParameters InitializeEntityLookup(uint tile, uint2 zBinRange, uint category) { - const uint lightOffsetPlusOne = lightOffset + 1; // Add +1 as first slot is reserved to store number of light - // Light index are store on 16bit - return (g_vLightListGlobal[DWORD_PER_TILE * tileOffset + (lightOffsetPlusOne >> 1)] >> ((lightOffsetPlusOne & 1) * DWORD_PER_TILE)) & 0xffff; -} + EntityLookupParameters params; + ZERO_INITIALIZE(EntityLookupParameters, params); -#elif defined(USE_CLUSTERED_LIGHTLIST) + params.dwordIndex = 0; + params.dwordCount = _BoundedEntityDwordCountPerCategory[category].x; + params.depthSorted = IsDepthSorted(category); -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClusteredUtils.hlsl" + if (params.dwordCount > 0) + { + uint zbinDword = 0; + // fetch zbin + if (IsDepthSorted(category)) // sorted by depth, can use the min,max index per zbin optimization + { + const uint zBinBufferIndex0 = ComputeZBinBufferIndex(zBinRange[0], category, unity_StereoEyeIndex); + const uint zBinBufferIndex1 = ComputeZBinBufferIndex(zBinRange[1], category, unity_StereoEyeIndex); + const uint zBinRangeData0 = _zBinBuffer[zBinBufferIndex0]; // {last << 16 | first} + const uint zBinRangeData1 = _zBinBuffer[zBinBufferIndex1]; // {last << 16 | first} + + // Recall that entities are sorted by the z-coordinate. + // So we can take the smallest index from the first bin and the largest index from the last bin. + // To see why there's -1, see the discussion in 'zbin.compute'. + params.zBinEntityIndexRange = int2(zBinRangeData0 & UINT16_MAX, (zBinRangeData1 >> 16) == UINT16_MAX ? -1 : (zBinRangeData1 >> 16)); + zbinDword = BitFieldFromBitRange(params.zBinEntityIndexRange.x, params.zBinEntityIndexRange.y); + } + else // unsorted or custom sort + { + params.zBinBufferIndex = ComputeZBinBufferIndex(zBinRange.x, category, unity_StereoEyeIndex); + // Fetch the first zbin DWORD + zbinDword = _zBinBuffer[params.zBinBufferIndex]; + } -uint GetTileSize() -{ - return TILE_SIZE_CLUSTERED; + // Fetch tile + params.tileBufferIndex = ComputeTileBufferIndex(tile, category, unity_StereoEyeIndex); + + // Fetch the first tile DWORD. + const uint tileDword = TILE_BUFFER[params.tileBufferIndex]; + + params.inputDword = tileDword & zbinDword; // Intersect the ranges + + #ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + params.inputDword = WaveActiveBitOr(params.inputDword); // Scalarize (make wave-uniform) + #endif + } + + return params; } -uint GetLightClusterIndex(uint2 tileIndex, float linearDepth) +// Internal. Do not call directly. +uint TryFindEntityIndex(uint i, inout EntityLookupParameters params, out uint entityIndex) { - float logBase = g_fClustBase; - if (g_isLogBaseBufferEnabled) + bool found = false; + + entityIndex = UINT16_MAX; + + // DWORD fetch loop. + while ((params.inputDword == 0) && ((params.dwordIndex + 1) < params.dwordCount)) + { + params.dwordIndex++; + + const uint tileDword = TILE_BUFFER[params.tileBufferIndex + params.dwordIndex]; + uint zbinDword = 0; + if (params.depthSorted) + { + const uint indexOffset = params.dwordIndex * 32; + zbinDword = BitFieldFromBitRange(params.zBinEntityIndexRange.x - (int)indexOffset, + params.zBinEntityIndexRange.y - (int)indexOffset); + } + else + { + zbinDword = _zBinBuffer[params.zBinBufferIndex + params.dwordIndex]; + } + params.inputDword = tileDword & zbinDword; // Intersect the ranges + + #ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + params.inputDword = WaveActiveBitOr(params.inputDword); // Scalarize (make wave-uniform) + #endif + } + + // DWORD bit scan. + if (params.inputDword != 0) { - const uint logBaseIndex = GenerateLogBaseBufferIndex(tileIndex, _NumTileClusteredX, _NumTileClusteredY, unity_StereoEyeIndex); - logBase = g_logBaseBuffer[logBaseIndex]; + const uint b = firstbitlow(params.inputDword); + + params.inputDword ^= 1 << b; // Clear the bit to continue using firstbitlow() + + entityIndex = params.dwordIndex * 32 + b; + found = true; } - return SnapToClusterIdxFlex(linearDepth, logBase, g_isLogBaseBufferEnabled != 0); + return found; } -void GetCountAndStartCluster(uint2 tileIndex, uint clusterIndex, uint lightCategory, out uint start, out uint lightCount) +#else // !(defined(COARSE_BINNING) || defined(FINE_BINNING)) + +// Internal. Do not access directly. +struct EntityLookupParameters +{ + uint entityCount; +}; + +// Internal. Do not call directly. +EntityLookupParameters InitializeEntityLookup(uint tile, uint2 zBinRange, uint category) { - int nrClusters = (1 << g_iLog2NumClusters); + EntityLookupParameters params; - const int idx = GenerateLayeredOffsetBufferIndex(lightCategory, tileIndex, clusterIndex, _NumTileClusteredX, _NumTileClusteredY, nrClusters, unity_StereoEyeIndex); + switch (category) + { + case BOUNDEDENTITYCATEGORY_PUNCTUAL_LIGHT: + params.entityCount = _PunctualLightCount; + break; + case BOUNDEDENTITYCATEGORY_AREA_LIGHT: + params.entityCount = _AreaLightCount; + break; + case BOUNDEDENTITYCATEGORY_REFLECTION_PROBE: + params.entityCount = _ReflectionProbeCount; + break; + case BOUNDEDENTITYCATEGORY_DECAL: + params.entityCount = _DecalCount; + break; + case BOUNDEDENTITYCATEGORY_DENSITY_VOLUME: + params.entityCount = _DensityVolumeCount; + break; + default: + params.entityCount = 0; + break; + } - uint dataPair = g_vLayeredOffsetsBuffer[idx]; - start = dataPair & 0x7ffffff; - lightCount = (dataPair >> 27) & 31; + return params; } -void GetCountAndStartCluster(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount) +// Internal. Do not call directly. +uint TryFindEntityIndex(uint i, inout EntityLookupParameters params, out uint entityIndex) { - // Note: XR depends on unity_StereoEyeIndex already being defined, - // which means ShaderVariables.hlsl needs to be defined ahead of this! + bool found = false; - uint2 tileIndex = posInput.tileCoord; - uint clusterIndex = GetLightClusterIndex(tileIndex, posInput.linearDepth); + entityIndex = UINT16_MAX; - GetCountAndStartCluster(tileIndex, clusterIndex, lightCategory, start, lightCount); + if (i < params.entityCount) + { + entityIndex = i; + found = true; + } + + return found; } -void GetCountAndStart(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount) +#endif // !(defined(COARSE_BINNING) || defined(FINE_BINNING)) + +// Only call this once (outside the loop). +EntityLookupParameters InitializePunctualLightLookup(uint tile, uint zBin) { - GetCountAndStartCluster(posInput, lightCategory, start, lightCount); + return InitializeEntityLookup(tile, uint2(zBin, zBin), BOUNDEDENTITYCATEGORY_PUNCTUAL_LIGHT); } -uint FetchIndex(uint lightStart, uint lightOffset) +// Only call this once (outside the loop). +EntityLookupParameters InitializePunctualLightLookup(uint tile, uint2 zBinRange) { - return g_vLightListGlobal[lightStart + lightOffset]; + return InitializeEntityLookup(tile, zBinRange, BOUNDEDENTITYCATEGORY_PUNCTUAL_LIGHT); } -#elif defined(USE_BIG_TILE_LIGHTLIST) - -uint FetchIndex(uint lightStart, uint lightOffset) +bool TryLoadPunctualLightData(uint i, inout EntityLookupParameters params, out LightData data) { - return g_vBigTileLightList[lightStart + lightOffset]; + bool success = false; + // Need to zero-init to quiet the warning. + ZERO_INITIALIZE(LightData, data); + + uint entityIndex; + if (TryFindEntityIndex(i, params, entityIndex)) + { + data = _PunctualLightData[entityIndex]; + success = true; + } + + return success; } -#else -// Fallback case (mainly for raytracing right or for shader stages that don't define the keywords) -uint FetchIndex(uint lightStart, uint lightOffset) +// Only call this once (outside the loop). +EntityLookupParameters InitializeAreaLightLookup(uint tile, uint zBin) { - return 0; + return InitializeEntityLookup(tile, uint2(zBin, zBin), BOUNDEDENTITYCATEGORY_AREA_LIGHT); } -uint GetTileSize() +// Only call this once (outside the loop). +EntityLookupParameters InitializeAreaLightLookup(uint tile, uint2 zBinRange) { - return 1; + return InitializeEntityLookup(tile, zBinRange, BOUNDEDENTITYCATEGORY_AREA_LIGHT); } -void GetCountAndStart(PositionInputs posInput, uint lightCategory, out uint start, out uint lightCount) +bool TryLoadAreaLightData(uint i, inout EntityLookupParameters params, out LightData data) { - start = 0; - lightCount = 0; - return; -} + bool success = false; + // Need to zero-init to quiet the warning. + ZERO_INITIALIZE(LightData, data); -#endif // USE_FPTL_LIGHTLIST + uint entityIndex; + if (TryFindEntityIndex(i, params, entityIndex)) + { + data = _AreaLightData[entityIndex]; + success = true; + } -#else + return success; +} -uint GetTileSize() +// Only call this once (outside the loop). +EntityLookupParameters InitializeReflectionProbeLookup(uint tile, uint zBin) { - return 1; + return InitializeEntityLookup(tile, uint2(zBin, zBin), BOUNDEDENTITYCATEGORY_REFLECTION_PROBE); } -uint FetchIndex(uint lightStart, uint lightOffset) +// Only call this once (outside the loop). +EntityLookupParameters InitializeReflectionProbeLookup(uint tile, uint2 zBinRange) { - return lightStart + lightOffset; + return InitializeEntityLookup(tile, zBinRange, BOUNDEDENTITYCATEGORY_REFLECTION_PROBE); } -#endif // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - -uint FetchIndexWithBoundsCheck(uint start, uint count, uint i) +bool TryLoadReflectionProbeData(uint i, inout EntityLookupParameters params, out EnvLightData data) { - if (i < count) - { - return FetchIndex(start, i); - } - else + bool success = false; + // Need to zero-init to quiet the warning. + ZERO_INITIALIZE(EnvLightData, data); + + uint entityIndex; + if (TryFindEntityIndex(i, params, entityIndex)) { - return UINT_MAX; + data = _ReflectionProbeData[entityIndex]; + success = true; } + + return success; } -LightData FetchLight(uint start, uint i) +// Only call this once (outside the loop). +EntityLookupParameters InitializeDecalLookup(uint tile, uint zBin) { - uint j = FetchIndex(start, i); + return InitializeEntityLookup(tile, uint2(zBin, zBin), BOUNDEDENTITYCATEGORY_DECAL); +} - return _LightDatas[j]; +// Only call this once (outside the loop). +EntityLookupParameters InitializeDecalLookup(uint tile, uint2 zBinRange) +{ + return InitializeEntityLookup(tile, zBinRange, BOUNDEDENTITYCATEGORY_DECAL); } -LightData FetchLight(uint index) +bool TryLoadDecalData(uint i, inout EntityLookupParameters params, out DecalData data) { - return _LightDatas[index]; + bool success = false; + // Need to zero-init to quiet the warning. + ZERO_INITIALIZE(DecalData, data); + + uint entityIndex; + if (TryFindEntityIndex(i, params, entityIndex)) + { + data = _DecalData[entityIndex]; + success = true; + } + + return success; } -EnvLightData FetchEnvLight(uint start, uint i) +// Only call this once (outside the loop). +EntityLookupParameters InitializeDensityVolumeLookup(uint tile, uint zBin) { - int j = FetchIndex(start, i); + return InitializeEntityLookup(tile, uint2(zBin, zBin), BOUNDEDENTITYCATEGORY_DENSITY_VOLUME); +} - return _EnvLightDatas[j]; +// Only call this once (outside the loop). +EntityLookupParameters InitializeDensityVolumeLookup(uint tile, uint2 zBinRange) +{ + return InitializeEntityLookup(tile, zBinRange, BOUNDEDENTITYCATEGORY_DENSITY_VOLUME); } -EnvLightData FetchEnvLight(uint index) +bool TryLoadDensityVolumeData(uint i, inout EntityLookupParameters params, out DensityVolumeData data) { - return _EnvLightDatas[index]; + bool success = false; + // Need to zero-init to quiet the compiler warning. + ZERO_INITIALIZE(DensityVolumeData, data); + + uint entityIndex; + if (TryFindEntityIndex(i, params, entityIndex)) + { + data = _DensityVolumeData[entityIndex]; + success = true; + } + + return success; } // In the first 8 bits of the target we store the max fade of the contact shadows as a byte diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ShaderVariablesLightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ShaderVariablesLightLoop.hlsl index d7ed05ef52d..ea486540a36 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ShaderVariablesLightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ShaderVariablesLightLoop.hlsl @@ -1,19 +1,25 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightDefinition.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Core/Utilities/GeometryUtils.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl" // For 'DensityVolumeData' -// don't support Buffer yet in unity -StructuredBuffer g_vBigTileLightList; -StructuredBuffer g_vLightListGlobal; -StructuredBuffer g_vLayeredOffsetsBuffer; -StructuredBuffer g_logBaseBuffer; +// It appears that, due to our include structure, we have to always declare these. +StructuredBuffer _CoarseTileBuffer; +StructuredBuffer _FineTileBuffer; +StructuredBuffer _zBinBuffer; #ifdef USE_INDIRECT StructuredBuffer g_TileFeatureFlags; #endif -StructuredBuffer _DirectionalLightDatas; -StructuredBuffer _LightDatas; -StructuredBuffer _EnvLightDatas; +// Directional lights + 1x list per BoundedEntityCategory. +StructuredBuffer _DirectionalLightData; + +// NEVER ACCESS THESE DIRECTLY. +StructuredBuffer _PunctualLightData; +StructuredBuffer _AreaLightData; +StructuredBuffer _ReflectionProbeData; +// StructuredBuffer _DecalData; // Defined elsewhere +StructuredBuffer _DensityVolumeData; // Used by directional and spot lights TEXTURE2D(_CookieAtlas); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl new file mode 100644 index 00000000000..42bca593192 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl @@ -0,0 +1,249 @@ +#ifndef UNITY_TILINGANDBINNINGUTILITIES_INCLUDED +#define UNITY_TILINGANDBINNINGUTILITIES_INCLUDED + +// The HLSL preprocessor does not support the '%' operator. +// Order is importer -1 + (N) otherwise N - 1 give invalid expression in the preprocessor +#define IS_MULTIPLE(A, N) ((A) & (-1 + (N)) != 0) +#define CLEAR_SIGN_BIT(X) (asint(X) & INT_MAX) +#define DIV_ROUND_UP(N, D) (((N) + (D) - 1) / (D)) // No division by 0 checks + +// Returns the location of the N-th set bit starting from the lowest order bit and working upward. +// Slow implementation - do not use for large bit sets. +// Could be optimized - see https://graphics.stanford.edu/~seander/bithacks.html +uint NthBitLow(uint value, uint n) +{ + uint b = -1; // Consistent with the behavior of firstbitlow() + uint c = countbits(value); + + if (n < c) // Validate inputs + { + uint r = n + 1; // Compute the number of remaining bits + + do + { + uint f = firstbitlow(value >> (b + 1)); // Find the next set bit + b += f + r; // Make a guess (assume all [b+f+1,b+f+r] bits are set) + c = countbits(value << (32 - (b + 1))); // Count the number of bits actually set + r = (n + 1) - c; // Compute the number of remaining bits + } while (r > 0); + } + + return b; +} + +float4x4 Translation4x4(float3 d) +{ + float4x4 M = k_identity4x4; + + M._14_24_34 = d; // Last column + + return M; +} + +// Scale followed by rotation (scaled axes). +float3x3 ScaledRotation3x3(float3 xAxis, float3 yAxis, float3 zAxis) +{ + float3x3 R = float3x3(xAxis, yAxis, zAxis); + float3x3 C = transpose(R); // Row to column + + return C; +} + +float3x3 Invert3x3(float3x3 R) +{ + float3x3 C = transpose(R); // Row to column + float det = dot(C[0],cross(C[1], C[2])); + float3x3 adj = float3x3(cross(C[1], C[2]), + cross(C[2], C[0]), + cross(C[0], C[1])); + return rcp(det) * adj; // Adjugate / Determinant +} + +float4x4 Homogenize3x3(float3x3 R) +{ + float4x4 M = float4x4(float4(R[0], 0), + float4(R[1], 0), + float4(R[2], 0), + float4(0,0,0,1)); + return M; +} + +float4x4 OptimizeOrthographicMatrix(float4x4 M) +{ + // | x 0 0 x | + // | 0 x 0 x | + // | x x x x | + // | 0 0 0 1 | + + M._12_13 = 0; + M._21_23 = 0; + M._41_42_43 = 0; M._44 = 1; + + return M; +} + +float4x4 OptimizePerspectiveMatrix(float4x4 M) +{ + // | x 0 x 0 | + // | 0 x x 0 | + // | x x x x | + // | 0 0 x 0 | + + M._12_14 = 0; + M._21_24 = 0; + M._41_42_44 = 0; // Unity sometimes sets M._43 = -1 :( + + return M; +} + +// a: aspect ratio. +// p: distance to the projection plane. +// n: distance to the near plane. +// f: distance to the far plane. +float4x4 PerspectiveProjection4x4(float a, float p, float n, float f) +{ + float b = (f + n) * rcp(f - n); + float c = -2 * f * n * rcp(f - n); + + return float4x4(p/a, 0, 0, 0, + 0, p, 0, 0, // No Y-flip + 0, 0, b, c, // Z in [-1, 1], no Z-reversal + 0, 0, 1, 0); // No W-flip +} + +// The intervals must be defined s.t. +// the 'x' component holds the lower bound and +// the 'y' component holds the upper bound. +bool IntervalsOverlap(float2 i1, float2 i2) +{ + float l = max(i1.x, i2.x); // Lower bound of the intersection interval + float u = min(i1.y, i2.y); // Upper bound of the intersection interval + + return l <= u; // Is the intersection non-empty? +} + +// The intervals must be defined s.t. +// the 'x' component holds the lower bound and +// the 'y' component holds the upper bound. +bool IntervalsOverlap(uint2 i1, uint2 i2) +{ + uint l = max(i1.x, i2.x); // Lower bound of the intersection interval + uint u = min(i1.y, i2.y); // Upper bound of the intersection interval + + return l <= u; // Is the intersection non-empty? +} + +// The intervals must be defined s.t. +// the 'x' component holds the lower bound and +// the 'y' component holds the upper bound. +bool IntervalsOverlap(int2 i1, int2 i2) +{ + int l = max(i1.x, i2.x); // Lower bound of the intersection interval + int u = min(i1.y, i2.y); // Upper bound of the intersection interval + + return l <= u; // Is the intersection non-empty? +} + +uint ComputeEntityBoundsBufferIndex(uint globalEntityIndex, uint eye) +{ + return IndexFromCoordinate(uint2(globalEntityIndex, eye), _BoundedEntityCount); +} + +bool IsDepthSorted(uint category) +{ + return (category != BOUNDEDENTITYCATEGORY_REFLECTION_PROBE) && (category != BOUNDEDENTITYCATEGORY_DECAL); +} + +#ifndef NO_SHADERVARIABLESGLOBAL_HLSL + +uint ComputeEntityBoundsBufferIndex(uint entityIndex, uint category, uint eye) +{ + uint offset = _BoundedEntityOffsetPerCategory[category].x; + return IndexFromCoordinate(uint2(offset + entityIndex, eye), _BoundedEntityCount); +} + +// Cannot be used to index directly into the buffer. +// Use ComputeZBinBufferIndex for that purpose. +uint ComputeZBinIndex(float linearDepth) +{ + const float rcpFar = _ZBufferParams.w; + + float z = linearDepth * rcpFar; + z = saturate(z); // Clamp to the region between the near and the far planes + + return min((uint)(z * Z_BIN_COUNT), Z_BIN_COUNT - 1); +} + +#define COARSE_TILE_BUFFER_DIMS uint2(_CoarseTileBufferDimensions.xy) +#define FINE_TILE_BUFFER_DIMS uint2( _FineTileBufferDimensions.xy) + +#if defined(COARSE_BINNING) + #define TILE_BUFFER _CoarseTileBuffer + #define TILE_BUFFER_DIMS COARSE_TILE_BUFFER_DIMS + #define TILE_SIZE COARSE_TILE_SIZE +#elif defined(FINE_BINNING) + #define TILE_BUFFER _FineTileBuffer + #define TILE_BUFFER_DIMS FINE_TILE_BUFFER_DIMS + #define TILE_SIZE FINE_TILE_SIZE +#else // !(defined(COARSE_BINNING) || defined(FINE_BINNING)) + // These must be defined so the compiler does not complain. + #define TILE_BUFFER_DIMS uint2(0, 0) + #define TILE_SIZE 1 +#endif + +// Cannot be used to index directly into the buffer. +// Use ComputeTileBufferIndex for that purpose. +uint ComputeTileIndex(uint2 pixelCoord) +{ + uint2 tileCoord = pixelCoord / TILE_SIZE; + return IndexFromCoordinate(tileCoord, TILE_BUFFER_DIMS.x); +} + +// Internal. Do not call directly. +uint ComputeTileBufferIndex(uint tile, uint category, uint eye, uint2 tileBufferDims) +{ + // Avoid indexing out of bounds (and crashing). + // Defensive programming to protect us from incorrect caller code. + tile = min(tile, tileBufferDims.x * tileBufferDims.y - 1); + + // TODO: could be optimized/precomputed. + uint dwordOffset = _BoundedEntityDwordOffsetPerCategory[category].x; // Previous categories + uint dwordCount = _BoundedEntityDwordCountPerCategory[category].x; // Current category + uint dwordsPerTile = _BoundedEntityDwordOffsetPerCategory[BOUNDEDENTITYCATEGORY_COUNT - 1].x + + _BoundedEntityDwordCountPerCategory[BOUNDEDENTITYCATEGORY_COUNT - 1].x; // All categories + + uint eyeOffset = (tileBufferDims.x * tileBufferDims.y) * dwordsPerTile * eye; + uint catOffset = (tileBufferDims.x * tileBufferDims.y) * dwordOffset; + uint tileOffset = tile * dwordCount; + + return eyeOffset + catOffset + tileOffset; +} + +uint ComputeTileBufferIndex(uint tile, uint category, uint eye) +{ + return ComputeTileBufferIndex(tile, category, eye, TILE_BUFFER_DIMS); +} + +// Internal. Do not call directly. +uint ComputeZBinBufferIndex(uint zbin, uint category, uint eye) +{ + // Avoid indexing out of bounds (and crashing). + // Defensive programming to protect us from incorrect caller code. + zbin = min(zbin, Z_BIN_COUNT - 1); + + // TODO: could be optimized/precomputed. + uint dwordOffset = _BoundedEntityZBinDwordOffsetPerCategory[category].x; // Previous categories + uint dwordCount = _BoundedEntityZBinDwordCountPerCategory[category].x; // Current category + uint dwordsPerBin = _BoundedEntityZBinDwordOffsetPerCategory[BOUNDEDENTITYCATEGORY_COUNT - 1].x + + _BoundedEntityZBinDwordCountPerCategory[BOUNDEDENTITYCATEGORY_COUNT - 1].x; // All categories + + uint eyeOffset = Z_BIN_COUNT * dwordsPerBin * eye; + uint catOffset = Z_BIN_COUNT * dwordOffset; // category data is contiguous for all zbins, so to get to the start of current + // category we need to multiply its offset by total number of zbins. + uint zbinOffset = zbin * dwordCount; // zbin index * dwords for this category + return eyeOffset + catOffset + zbinOffset; +} + +#endif // NO_SHADERVARIABLESGLOBAL_HLSL + +#endif // UNITY_TILINGANDBINNINGUTILITIES_INCLUDED diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl.meta new file mode 100644 index 00000000000..222698b99d9 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: edd1049f42df45e4791840dd443e6a03 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/builddispatchindirect.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/builddispatchindirect.compute index 0afe7a4306c..0613bcd9a2e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/builddispatchindirect.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/builddispatchindirect.compute @@ -1,66 +1,82 @@ -#pragma kernel BuildIndirect +// #pragma enable_d3d11_debug_symbols +#pragma only_renderers d3d11 playstation xboxone vulkan metal switch #pragma multi_compile _ IS_DRAWPROCEDURALINDIRECT -#pragma only_renderers d3d11 playstation xboxone vulkan metal switch +#pragma kernel main + +#define FINE_BINNING // Keep in sync with 'deferred.compute' and 'classification.compute' #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl" -#ifdef PLATFORM_LANE_COUNT // We can infer the size of a wave. This is currently not possible on non-consoles, so we have to fallback to a sensible default in those cases. +/* ------------------------------ Inputs ------------------------------------ */ + +StructuredBuffer g_TileFeatureFlags; + +/* ------------------------------ Outputs ----------------------------------- */ + +RWBuffer g_DispatchIndirectBuffer; // Indirect arguments have to be in a _buffer_, not a structured buffer +RWStructuredBuffer g_TileList; + +/* ------------------------------ Utilities --------------------------------- */ + + +/* ------------------------------ Implementation ---------------------------- */ + +#ifdef PLATFORM_LANE_COUNT #define NR_THREADS PLATFORM_LANE_COUNT #else #define NR_THREADS 64 // default to 64 threads per group on other platforms.. #endif -RWBuffer g_DispatchIndirectBuffer : register( u0 ); // Indirect arguments have to be in a _buffer_, not a structured buffer -RWStructuredBuffer g_TileList; -StructuredBuffer g_TileFeatureFlags; - -uniform uint g_NumTiles; -uniform uint g_NumTilesX; - [numthreads(NR_THREADS, 1, 1)] -void BuildIndirect(uint3 dispatchThreadId : SV_DispatchThreadID) +void main(uint3 threadID : SV_DispatchThreadID, uint3 groupID : SV_GroupID) { - if (dispatchThreadId.x >= g_NumTiles) - return; + const uint tile = threadID.x; + const uint eye = groupID.z; - UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); + const uint clampedTile = min(tile, TILE_BUFFER_DIMS.x * TILE_BUFFER_DIMS.y - 1); - uint featureFlags = g_TileFeatureFlags[dispatchThreadId.x + unity_StereoEyeIndex * g_NumTiles]; + // Helper threads may perform the same computation on valid data, + // but do not store the results of the computation to memory. + const bool isHelperThread = tile != clampedTile; - uint tileY = (dispatchThreadId.x + 0.5f) / (float)g_NumTilesX; // Integer division is extremely expensive, so we better avoid it - uint tileX = dispatchThreadId.x - tileY * g_NumTilesX; + uint bufferIndex = clampedTile + IndexFromCoordinate(uint3(0, 0, eye), TILE_BUFFER_DIMS); + uint featureFlags = g_TileFeatureFlags[bufferIndex]; // Check if there is no material (means it is a sky/background pixel). - // Note that we can have no lights, yet we still need to render geometry with precomputed illumination. - if ((featureFlags & MATERIAL_FEATURE_MASK_FLAGS) != 0) + // Note that a tile may have no lights, and yet we still need to render geometry with precomputed illumination. + if (!isHelperThread && ((featureFlags & MATERIAL_FEATURE_MASK_FLAGS) != 0)) { uint variant = FeatureFlagsToTileVariant(featureFlags); - uint tileOffset; -#ifdef IS_DRAWPROCEDURALINDIRECT - // We are filling up an indirect argument buffer for DrawProceduralIndirect. - // The buffer contains {vertex count per instance, instance count, start vertex location, and start instance location} = {0, instance count, 0, 0, 0} + uint tileOffset; // Includes the eye index for XR + + // TODO: optimize this using TGSM or wave intrinsics! + // We really shouldn't spam the atomic counter located in the global memory... + #ifdef IS_DRAWPROCEDURALINDIRECT + // We are filling up an indirect argument (uint4) buffer for DrawProceduralIndirect. + // The buffer contains {vertex count per instance, instance count, start vertex location, and start instance location}. InterlockedAdd(g_DispatchIndirectBuffer[variant * 4 + 1], 1, tileOffset); -#else + #else uint prevGroupCnt; - // We are filling up an indirect argument buffer for DispatchIndirect. - // The buffer contains {groupCntX, groupCntY, groupCntZ} = {groupCnt, 0, 0}. + // We are filling up an indirect argument (uint3) buffer for DispatchIndirect. + // The buffer contains {groupCntX, groupCntY, groupCntZ} = {groupCnt, 1, 1}. InterlockedAdd(g_DispatchIndirectBuffer[variant * 3 + 0], 4, prevGroupCnt); - tileOffset = prevGroupCnt / 4; // 4x 8x8 groups per a 16x16 tile -#endif - // See LightDefinitions class in LightLoop.cs - uint tileIndex = (unity_StereoEyeIndex << TILE_INDEX_SHIFT_EYE) | (tileY << TILE_INDEX_SHIFT_Y) | (tileX << TILE_INDEX_SHIFT_X); - // For g_TileList each VR eye is interlaced instead of one eye and then the other. Thus why we use _XRViewCount here - g_TileList[variant * g_NumTiles * _XRViewCount + tileOffset] = tileIndex; + tileOffset = prevGroupCnt / 4; // 4x 8*8 groups per a 16*16 tile (also notice '4' on the line above) + #endif + + uint variantOffset = IndexFromCoordinate(uint4(0, 0, 0, variant), uint3(TILE_BUFFER_DIMS, _XRViewCount)); // g_TileListOffset + + g_TileList[variantOffset + tileOffset] = (eye << TILE_INDEX_SHIFT_EYE) | clampedTile; // Must retain the eye index } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute new file mode 100644 index 00000000000..02ee27fc964 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute @@ -0,0 +1,125 @@ +// #pragma enable_d3d11_debug_symbols +#pragma only_renderers d3d11 playstation xboxone vulkan metal switch + +#pragma multi_compile_local _ LIGHT_CLASSIFICATION +#pragma multi_compile_local _ MATERIAL_CLASSIFICATION + +#pragma kernel main + +#define FINE_BINNING // Keep in sync with 'deferred.compute' and 'builddispatchindirect.compute' + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceFillingCurves.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" + +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ShaderBase.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl" + +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStencilUsage.cs.hlsl" + +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl" + +/* ------------------------------ Inputs ------------------------------------ */ + +TEXTURE2D_X_UINT2(_StencilTexture); + +/* ------------------------------ Outputs ----------------------------------- */ + +RWStructuredBuffer g_TileFeatureFlags; + +/* ------------------------------ Utilities --------------------------------- */ + +/* ------------------------------ Implementation ---------------------------- */ + +groupshared uint gs_TileFeatureFlags; + +[numthreads(TILE_SIZE * TILE_SIZE, 1, 1)] +void main(uint3 threadID : SV_GroupThreadID, uint3 groupID : SV_GroupID) +{ + const uint t = threadID.x; + const uint2 tileCoord = groupID.xy; + const uint eye = groupID.z; + + UNITY_XR_ASSIGN_VIEW_INDEX(eye); // Sets 'unity_StereoEyeIndex' + + const uint tile = IndexFromCoordinate(tileCoord, TILE_BUFFER_DIMS.x); + const uint2 localPixelCoord = DecodeMorton2D(t & (TILE_SIZE * TILE_SIZE - 1)); // Use AND to inform the compiler + const uint2 globalPixelCoord = tileCoord * TILE_SIZE + localPixelCoord; + const uint2 clampedPixelCoord = min(globalPixelCoord, uint2(_ScreenSize.xy) - 1); + + if (t == 0) // Avoid bank conflicts + { + gs_TileFeatureFlags = 0; + } + + uint featureFlags = 0; + + // Unlit object, sky/background and forward opaque tag don't tag the StencilUsage.RequiresDeferredLighting bit + uint stencilVal = GetStencilValue(LOAD_TEXTURE2D_X(_StencilTexture, clampedPixelCoord)); + + // TODO: use coarse stencil here. + if ((stencilVal & STENCILUSAGE_REQUIRES_DEFERRED_LIGHTING) != 0) + { + featureFlags = g_BaseFeatureFlags; // Contain all lightFeatures or 0 (depends if we enable light classification or not) + + #ifdef LIGHT_CLASSIFICATION + // TODO: optimize using LinearEyeDepth(float2 positionNDC, float deviceDepth, float4 invProjParam). + float depth = LoadCameraDepth(clampedPixelCoord); + PositionInputs posInput = GetPositionInput(clampedPixelCoord, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + uint zBin = ComputeZBinIndex(posInput.linearDepth); + + EntityLookupParameters params; + + params = InitializePunctualLightLookup(tile, zBin); + + LightData lightData; + if (TryLoadPunctualLightData(0, params, lightData)) + { + featureFlags |= LIGHTFEATUREFLAGS_PUNCTUAL; + } + + params = InitializeAreaLightLookup(tile, zBin); + + if (TryLoadAreaLightData(0, params, lightData)) + { + featureFlags |= LIGHTFEATUREFLAGS_AREA; + } + + params = InitializeReflectionProbeLookup(tile, zBin); + + EnvLightData envLightData; + if (TryLoadReflectionProbeData(0, params, envLightData)) + { + featureFlags |= LIGHTFEATUREFLAGS_ENV; + } + #endif // LIGHT_CLASSIFICATION + + #ifdef MATERIAL_CLASSIFICATION + featureFlags |= MATERIAL_FEATURE_FLAGS_FROM_GBUFFER(clampedPixelCoord); + #endif // MATERIAL_CLASSIFICATION + } + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + // Reduce the pressure on the atomic counter. + featureFlags = WaveActiveBitOr(featureFlags); + + if (WaveIsFirstLane()) + { + InterlockedOr(gs_TileFeatureFlags, featureFlags); + } +#else + InterlockedOr(gs_TileFeatureFlags, featureFlags); +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + + GroupMemoryBarrierWithGroupSync(); // Wait for writes to gs_TileFeatureFlags + + featureFlags = gs_TileFeatureFlags; + + if (t == 0) // Avoid bank conflicts + { + uint bufferIndex = tile + IndexFromCoordinate(uint3(0, 0, eye), TILE_BUFFER_DIMS); + g_TileFeatureFlags[bufferIndex] = featureFlags; + } +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute.meta new file mode 100644 index 00000000000..467cc737ccc --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/classification.compute.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2f62649560ae64f4da8e8234a88ba2e2 +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 2097156 + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild-bigtile.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild-bigtile.compute index d71659b407d..9352c48dfd5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild-bigtile.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild-bigtile.compute @@ -20,7 +20,7 @@ StructuredBuffer g_vBoundsBuffer : register( t1 ); StructuredBuffer _LightVolumeData : register(t2); -StructuredBuffer g_data : register( t3 ); +StructuredBuffer g_data : register( t3 ); #ifdef PLATFORM_LANE_COUNT // We can infer the size of a wave. This is currently not possible on non-consoles, so we have to fallback to a sensible default in those cases. @@ -128,9 +128,9 @@ void BigTileLightListGen(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_Gro float2 vTileUR = float2(viTilUR.x/(float) iWidth, viTilUR.y/(float) iHeight); // build coarse list using AABB - for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS) + for(int l=(int) t; l<(int) _BoundedEntityCount; l += NR_THREADS) { - const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, g_iNrVisibLights, eyeIndex); + const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, _BoundedEntityCount, eyeIndex); const float2 vMi = g_vBoundsBuffer[boundsIndices.min].xy; const float2 vMa = g_vBoundsBuffer[boundsIndices.max].xy; @@ -165,7 +165,7 @@ void BigTileLightListGen(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_Gro if(t==0) lightOffs = 0; GroupMemoryBarrierWithGroupSync(); int i; - for(i=t; i g_vBoundsBuffer : register( t1 ); StructuredBuffer _LightVolumeData : register(t2); -StructuredBuffer g_data : register( t3 ); +StructuredBuffer g_data : register( t3 ); #ifdef USE_TWO_PASS_TILED_LIGHTING StructuredBuffer g_vBigTileLightList : register( t4 ); // don't support Buffer yet in unity @@ -316,10 +316,10 @@ void LIGHTLISTGEN(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID) { int l = g_vBigTileLightList[MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE*bigTileIdx+l0+1]; #else - for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS) + for(int l=(int) t; l<(int) _BoundedEntityCount; l += NR_THREADS) { #endif - const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, g_iNrVisibLights, eyeIndex); + const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, _BoundedEntityCount, eyeIndex); const float2 vMi = g_vBoundsBuffer[boundsIndices.min].xy; const float2 vMa = g_vBoundsBuffer[boundsIndices.max].xy; @@ -365,8 +365,8 @@ void LIGHTLISTGEN(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID) for(int l=(int) t; l<((iNrCoarseLights+1)>>1); l += NR_THREADS) { const int l0 = coarseList[2*l+0], l1 = coarseList[min(2*l+1,iNrCoarseLights-1)]; - const ScreenSpaceBoundsIndices l0Bounds = GenerateScreenSpaceBoundsIndices(l0, g_iNrVisibLights, eyeIndex); - const ScreenSpaceBoundsIndices l1Bounds = GenerateScreenSpaceBoundsIndices(l1, g_iNrVisibLights, eyeIndex); + const ScreenSpaceBoundsIndices l0Bounds = GenerateScreenSpaceBoundsIndices(l0, _BoundedEntityCount, eyeIndex); + const ScreenSpaceBoundsIndices l1Bounds = GenerateScreenSpaceBoundsIndices(l1, _BoundedEntityCount, eyeIndex); const unsigned int clustIdxMi0 = (const unsigned int)min(255, SnapToClusterIdx(g_vBoundsBuffer[l0Bounds.min].w, suggestedBase)); const unsigned int clustIdxMa0 = (const unsigned int)min(255, SnapToClusterIdx(g_vBoundsBuffer[l0Bounds.max].w, suggestedBase)); @@ -428,7 +428,7 @@ void LIGHTLISTGEN(uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID) { if(offs<(start+iSpaceAvail) && i PLATFORM_LANE_COUNT GroupMemoryBarrierWithGroupSync(); #endif - const int lightCullIndex = GenerateLightCullDataIndex(coarseList[l], g_iNrVisibLights, eyeIndex); + const int lightCullIndex = GenerateLightCullDataIndex(coarseList[l], _BoundedEntityCount, eyeIndex); UNITY_BRANCH if (_LightVolumeData[lightCullIndex].lightVolume != LIGHTVOLUMETYPE_SPHERE) // don't bother doing edge tests for sphere lights since these have camera aligned bboxes. { - SFiniteLightBound lgtDat = g_data[lightCullIndex]; + FiniteLightBound lgtDat = g_data[lightCullIndex]; const float3 boxX = lgtDat.boxAxisX.xyz; const float3 boxY = lgtDat.boxAxisY.xyz; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild.compute index 6c50e049dec..0b4f6b63c61 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/lightlistbuild.compute @@ -31,7 +31,7 @@ StructuredBuffer g_vBoundsBuffer : register( t1 ); StructuredBuffer _LightVolumeData : register(t2); -StructuredBuffer g_data : register( t3 ); +StructuredBuffer g_data : register( t3 ); #ifdef USE_TWO_PASS_TILED_LIGHTING StructuredBuffer g_vBigTileLightList : register( t4 ); // don't support Buffer yet in unity @@ -220,13 +220,13 @@ void TileLightListGen(uint3 dispatchThreadId : SV_DispatchThreadID, uint threadI { int l = g_vBigTileLightList[MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE*bigTileIdx+l0+1]; #else - for(int l=(int) t; l<(int) g_iNrVisibLights; l += NR_THREADS) + for(int l=(int) t; l<(int) _BoundedEntityCount; l += NR_THREADS) { #endif // Skip density volumes (lights are sorted by category). TODO: improve data locality if (_LightVolumeData[l].lightCategory == LIGHTCATEGORY_DENSITY_VOLUME) { break; } - const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, g_iNrVisibLights, unity_StereoEyeIndex); + const ScreenSpaceBoundsIndices boundsIndices = GenerateScreenSpaceBoundsIndices(l, _BoundedEntityCount, unity_StereoEyeIndex); const float3 vMi = g_vBoundsBuffer[boundsIndices.min].xyz; const float3 vMa = g_vBoundsBuffer[boundsIndices.max].xyz; @@ -279,7 +279,7 @@ void TileLightListGen(uint3 dispatchThreadId : SV_DispatchThreadID, uint threadI int nrLightsCombinedList = min(ldsNrLightsFinal,LIGHT_LIST_MAX_COARSE_ENTRIES); for(int i=t; i g_TileFeatureFlags; - -TEXTURE2D_X_UINT2(_StencilTexture); - -[numthreads(NR_THREADS, 1, 1)] -void MaterialFlagsGen(uint3 dispatchThreadId : SV_DispatchThreadID, uint threadID : SV_GroupIndex, uint3 u3GroupID : SV_GroupID) -{ - UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - - uint2 tileIDX = u3GroupID.xy; - - uint iWidth = g_viDimensions.x; - uint iHeight = g_viDimensions.y; - uint nrTilesX = (iWidth + (TILE_SIZE_FPTL - 1)) / TILE_SIZE_FPTL; - uint nrTilesY = (iHeight + (TILE_SIZE_FPTL - 1)) / TILE_SIZE_FPTL; - - // 16 * 4 = 64. We process data by group of 4 pixel - uint2 viTilLL = 16 * tileIDX; - - float2 invScreenSize = float2(1.0 / iWidth, 1.0 / iHeight); - - if (threadID == 0) - { - ldsFeatureFlags = 0; - } - GroupMemoryBarrierWithGroupSync(); - - uint materialFeatureFlags = g_BaseFeatureFlags; // Contain all lightFeatures or 0 (depends if we enable light classification or not) - UNITY_UNROLL - for (int i = 0; i < 4; i++) - { - int idx = i * NR_THREADS + threadID; - uint2 uCrd = min(uint2(viTilLL.x + (idx & 0xf), viTilLL.y + (idx >> 4)), uint2(iWidth - 1, iHeight - 1)); - - // Unlit object, sky/background and forward opaque tag don't tag the StencilUsage.RequiresDeferredLighting bit - uint stencilVal = GetStencilValue(LOAD_TEXTURE2D_X(_StencilTexture, uCrd)); - if ((stencilVal & STENCILUSAGE_REQUIRES_DEFERRED_LIGHTING) > 0) - { - PositionInputs posInput = GetPositionInput(uCrd, invScreenSize); - materialFeatureFlags |= MATERIAL_FEATURE_FLAGS_FROM_GBUFFER(posInput.positionSS); - } - } - - InterlockedOr(ldsFeatureFlags, materialFeatureFlags); //TODO: driver might optimize this or we might have to do a manual reduction - GroupMemoryBarrierWithGroupSync(); - - if (threadID == 0) - { - uint tileIndex = tileIDX.y * nrTilesX + tileIDX.x; - - // TODO: shouldn't this always enabled? -#if defined(UNITY_STEREO_INSTANCING_ENABLED) - tileIndex += unity_StereoEyeIndex * nrTilesX * nrTilesY; -#endif - -#ifdef USE_OR - g_TileFeatureFlags[tileIndex] |= ldsFeatureFlags; -#else // Use in case we have disabled light classification - g_TileFeatureFlags[tileIndex] = ldsFeatureFlags; -#endif - } -} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/materialflags.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/materialflags.compute.meta deleted file mode 100644 index 0a12debd800..00000000000 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/materialflags.compute.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: fb3eda953cd6e634e877fb777be2cd08 -timeCreated: 1496923318 -licenseType: Pro -ComputeShaderImporter: - currentAPIMask: 4 - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/scrbound.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/scrbound.compute index 521759b54b3..e9baca7facc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/scrbound.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/scrbound.compute @@ -6,429 +6,28 @@ #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.high-definition-config/Runtime/ShaderConfig.cs.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl" -#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightCullUtils.hlsl" +#define NO_SHADERVARIABLESGLOBAL_HLSL +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl" +#undef NO_SHADERVARIABLESGLOBAL_HLSL +#define NUM_CLIP_PLANES (6) // Full frustum clipping +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl" /* ------------------------------ Inputs ------------------------------------ */ -StructuredBuffer g_data : register(t0); +// 1x list for all entites (sorted by category, we concatenate lists of all views). +StructuredBuffer _EntityBoundsBuffer; /* ------------------------------ Outputs ----------------------------------- */ -RWStructuredBuffer g_vBoundsBuffer : register(u0); +// 1x list for all entites (sorted by category, we concatenate lists of all views). +RWStructuredBuffer _xyBoundsBuffer : register(u0); // {x_min, x_max, y_min, y_max} +RWStructuredBuffer _wBoundsBuffer : register(u1); // {w_min, w_max} /* ------------------------------ Utilities --------------------------------- */ -// Returns the location of the N-th set bit starting from the lowest order bit and working upward. -// Slow implementation - do not use for large bit sets. -// Could be optimized - see https://graphics.stanford.edu/~seander/bithacks.html -uint NthBitLow(uint value, uint n) -{ - uint b = -1; // Consistent with the behavior of firstbitlow() - uint c = countbits(value); - - if (n < c) // Validate inputs - { - uint r = n + 1; // Compute the number of remaining bits - - do - { - uint f = firstbitlow(value >> (b + 1)); // Find the next set bit - b += f + r; // Make a guess (assume all [b+f+1,b+f+r] bits are set) - c = countbits(value << (32 - (b + 1))); // Count the number of bits actually set - r = (n + 1) - c; // Compute the number of remaining bits - } while (r > 0); - } - - return b; -} - -float4x4 Translation4x4(float3 d) -{ - float4x4 M = k_identity4x4; - - M._14_24_34 = d; // Last column - - return M; -} - -// Scale followed by rotation (scaled axes). -float3x3 ScaledRotation3x3(float3 xAxis, float3 yAxis, float3 zAxis) -{ - float3x3 R = float3x3(xAxis, yAxis, zAxis); - float3x3 C = transpose(R); // Row to column - - return C; -} - -float3x3 Invert3x3(float3x3 R) -{ - float3x3 C = transpose(R); // Row to column - float det = dot(C[0], cross(C[1], C[2])); - float3x3 adj = float3x3(cross(C[1], C[2]), - cross(C[2], C[0]), - cross(C[0], C[1])); - return rcp(det) * adj; -} - -float4x4 Homogenize3x3(float3x3 R) -{ - float4x4 M = float4x4(float4(R[0], 0), - float4(R[1], 0), - float4(R[2], 0), - float4(0,0,0,1)); - return M; -} - -float4x4 PerspectiveProjection4x4(float a, float g, float n, float f) -{ - float b = (f + n) * rcp(f - n); - float c = -2 * f * n * rcp(f - n); - - return float4x4(g/a, 0, 0, 0, - 0, g, 0, 0, // No Y-flip - 0, 0, b, c, // Z in [-1, 1], no Z-reversal - 0, 0, 1, 0); // No W-flip -} - -/* ------------------------------ Implementation ---------------------------- */ - -// !!! IMPORTANT !!! -// The legacy code from Morten provides us special projection matrices (and their inverses). -// These matrices are different from the matrices the HDRP uses. -// There is no reversed-Z buffering (effectively, forced UNITY_REVERSED_Z = 0). -// Additionally, there is no clip-space flip (effectively, forced UNITY_UV_STARTS_AT_TOP = 0). -// Therefore, all coordinate systems are left-handed, Y-up, without W-flip. -// Near and far planes are swapped in the case of Z-reversal, but it does not change the algorithm. -// y z -// | / -// 0 -- x - -// Improve the quality of generated code at the expense of readability. -// Remove when the shader compiler is clever enough to perform this optimization for us. -#define OBTUSE_COMPILER - -#ifdef SHADER_API_XBOXONE -// The Xbox shader compiler expects the lane swizzle mask to be a compile-time constant. -// In our case, the mask is a compile-time constant, but it is defined inside a loop -// that is unrolled at the compile time, and the constants are generated during the -// constant propagation pass of the optimizer. This works fine on PlayStation, but does not work -// on Xbox. In order to avoid writing hideous code specifically for Xbox, we disable the support -// of wave intrinsics on Xbox until the Xbox compiler is fixed. -#undef PLATFORM_SUPPORTS_WAVE_INTRINSICS -#endif - -#define CLEAR_SIGN_BIT(X) (asint(X) & INT_MAX) -#define DIV_ROUND_UP(N, D) (((N) + (D) - 1) / (D)) // No division by 0 checks - -// Clipping a plane by a cube may produce a hexagon (6-gon). -// Clipping a hexagon by 4 planes may produce a decagon (10-gon). -#define MAX_CLIP_VERTS (10) -#define NUM_VERTS (8) -#define NUM_FACES (6) -#define NUM_PLANES (6) -#define THREADS_PER_GROUP (64) -#define THREADS_PER_LIGHT (4) // Set to 1 for debugging -#define LIGHTS_PER_GROUP (THREADS_PER_GROUP / THREADS_PER_LIGHT) -#define VERTS_PER_GROUP (NUM_VERTS * LIGHTS_PER_GROUP) -#define VERTS_PER_THREAD (NUM_VERTS / THREADS_PER_LIGHT) -#define FACES_PER_THREAD DIV_ROUND_UP(NUM_FACES, THREADS_PER_LIGHT) - -// All planes and faces are always in the standard order (see below). -// Near and far planes are swapped in the case of Z-reversal, but it does not change the algorithm. -#define FACE_LEFT (1 << 0) // -X -#define FACE_RIGHT (1 << 1) // +X -#define FACE_BOTTOM (1 << 2) // -Y -#define FACE_TOP (1 << 3) // +Y -#define FACE_FRONT (1 << 4) // -Z -#define FACE_BACK (1 << 5) // +Z -#define FACE_MASK ((1 << NUM_FACES) - 1) - -// A list of vertices for each face (CCW order w.r.t. its normal, starting from the LSB). -#define VERT_LIST_LEFT ((4) << 9 | (6) << 6 | (2) << 3 | (0) << 0) -#define VERT_LIST_RIGHT ((3) << 9 | (7) << 6 | (5) << 3 | (1) << 0) -#define VERT_LIST_BOTTOM ((1) << 9 | (5) << 6 | (4) << 3 | (0) << 0) -#define VERT_LIST_TOP ((6) << 9 | (7) << 6 | (3) << 3 | (2) << 0) -#define VERT_LIST_FRONT ((2) << 9 | (3) << 6 | (1) << 3 | (0) << 0) -#define VERT_LIST_BACK ((5) << 9 | (7) << 6 | (6) << 3 | (4) << 0) - -// All vertices are always in the standard order (see below). -uint GetFaceMaskOfVertex(uint v) -{ - // 0: (-1, -1, -1) -> { FACE_LEFT | FACE_BOTTOM | FACE_FRONT } - // 1: (+1, -1, -1) -> { FACE_RIGHT | FACE_BOTTOM | FACE_FRONT } - // 2: (-1, +1, -1) -> { FACE_LEFT | FACE_TOP | FACE_FRONT } - // 3: (+1, +1, -1) -> { FACE_RIGHT | FACE_TOP | FACE_FRONT } - // 4: (-1, -1, +1) -> { FACE_LEFT | FACE_BOTTOM | FACE_BACK } - // 5: (+1, -1, +1) -> { FACE_RIGHT | FACE_BOTTOM | FACE_BACK } - // 6: (-1, +1, +1) -> { FACE_LEFT | FACE_TOP | FACE_BACK } - // 7: (+1, +1, +1) -> { FACE_RIGHT | FACE_TOP | FACE_BACK } - // ((v & 1) == 0) ? 1 : 2) | ((v & 2) == 0) ? 4 : 8) | ((v & 4) == 0) ? 16 : 32) - uint f = (FACE_LEFT << BitFieldExtract(v, 0, 1)) - | (FACE_BOTTOM << BitFieldExtract(v, 1, 1)) - | (FACE_FRONT << BitFieldExtract(v, 2, 1)); - - return f; -}; - -float3 GenerateVertexOfStandardCube(uint v) -{ - float3 p; - - p.x = ((v & 1) == 0) ? -1 : 1; // FACE_LEFT : FACE_RIGHT - p.y = ((v & 2) == 0) ? -1 : 1; // FACE_BOTTOM : FACE_TOP - p.z = ((v & 4) == 0) ? -1 : 1; // FACE_FRONT : FACE_BACK - - return p; -} - -uint GetVertexListOfFace(uint f) -{ - // Warning: don't add 'static' here unless you want really bad code gen. - const uint3 allVertLists = uint3((VERT_LIST_RIGHT << 12) | VERT_LIST_LEFT, - (VERT_LIST_TOP << 12) | VERT_LIST_BOTTOM, - (VERT_LIST_BACK << 12) | VERT_LIST_FRONT); - - return BitFieldExtract(allVertLists[f >> 1], 12 * (f & 1), 12); -} - -// 5 arrays * 128 elements * 4 bytes each = 2560 bytes. -groupshared float gs_HapVertsX[VERTS_PER_GROUP]; -groupshared float gs_HapVertsY[VERTS_PER_GROUP]; -groupshared float gs_HapVertsZ[VERTS_PER_GROUP]; -groupshared float gs_HapVertsW[VERTS_PER_GROUP]; -groupshared uint gs_BehindMasksOfVerts[VERTS_PER_GROUP]; // 6 planes each (HLSL does not support small data types) - -#ifndef PLATFORM_SUPPORTS_WAVE_INTRINSICS -// 1 array * 16 elements * 4 bytes each = 64 bytes. -groupshared uint gs_CullClipFaceMasks[LIGHTS_PER_GROUP]; // 6 faces each (HLSL does not support small data types) - -// 8 arrays * 16 elements * 4 bytes each = 512 bytes. -// These are actually floats reinterpreted as uints. -// The reason is because floating-point atomic operations are not supported. -groupshared uint gs_NdcAaBbMinPtX[LIGHTS_PER_GROUP]; -groupshared uint gs_NdcAaBbMaxPtX[LIGHTS_PER_GROUP]; -groupshared uint gs_NdcAaBbMinPtY[LIGHTS_PER_GROUP]; -groupshared uint gs_NdcAaBbMaxPtY[LIGHTS_PER_GROUP]; -groupshared uint gs_NdcAaBbMinPtZ[LIGHTS_PER_GROUP]; // Note that min-max Z cannot be trivially reconstructed -groupshared uint gs_NdcAaBbMaxPtZ[LIGHTS_PER_GROUP]; // from min-max W if the projection is oblique. -groupshared uint gs_NdcAaBbMinPtW[LIGHTS_PER_GROUP]; // View-space Z coordinate -groupshared uint gs_NdcAaBbMaxPtW[LIGHTS_PER_GROUP]; // View-space Z coordinate -#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS - - -// ----------- Use LDS for the vertex ring buffer as otherwise on FXC we create register spilling - -groupshared float gs_VertexRingBufferX[MAX_CLIP_VERTS * THREADS_PER_GROUP]; -groupshared float gs_VertexRingBufferY[MAX_CLIP_VERTS * THREADS_PER_GROUP]; -groupshared float gs_VertexRingBufferZ[MAX_CLIP_VERTS * THREADS_PER_GROUP]; -groupshared float gs_VertexRingBufferW[MAX_CLIP_VERTS * THREADS_PER_GROUP]; - -float4 GetFromRingBuffer(uint threadIdx, uint entry) -{ - float4 outV; - outV.x = gs_VertexRingBufferX[threadIdx * MAX_CLIP_VERTS + entry]; - outV.y = gs_VertexRingBufferY[threadIdx * MAX_CLIP_VERTS + entry]; - outV.z = gs_VertexRingBufferZ[threadIdx * MAX_CLIP_VERTS + entry]; - outV.w = gs_VertexRingBufferW[threadIdx * MAX_CLIP_VERTS + entry]; - return outV; -} - -void WriteToRingBuffer(uint threadIdx, uint entry, float4 value) -{ - gs_VertexRingBufferX[threadIdx * MAX_CLIP_VERTS + entry] = value.x; - gs_VertexRingBufferY[threadIdx * MAX_CLIP_VERTS + entry] = value.y; - gs_VertexRingBufferZ[threadIdx * MAX_CLIP_VERTS + entry] = value.z; - gs_VertexRingBufferW[threadIdx * MAX_CLIP_VERTS + entry] = value.w; -} -///////////////////////////////////////////////////////// - - -// Returns 'true' if it manages to cull the face. -bool TryCullFace(uint f, uint baseOffsetVertex) -{ - uint cullMaskOfFace = FACE_MASK; // Initially behind - uint vertListOfFace = GetVertexListOfFace(f); - - for (uint j = 0; j < 4; j++) - { - uint v = BitFieldExtract(vertListOfFace, 3 * j, 3); - // Non-zero if ALL the vertices are behind any of the planes. - cullMaskOfFace &= gs_BehindMasksOfVerts[baseOffsetVertex + v]; - } - - return (cullMaskOfFace != 0); -} - -struct ClipVertex -{ - float4 pt; // Homogeneous coordinate after perspective - float bc; // Boundary coordinate with respect to the plane 'p' -}; - -ClipVertex CreateClipVertex(uint p, float4 v) -{ - bool evenPlane = (p & 1) == 0; - - float c = v[p >> 1]; - float w = v.w; - - ClipVertex cv; - - cv.pt = v; - cv.bc = evenPlane ? c : w - c; // dot(PlaneEquation, HapVertex); - - return cv; -} - -float4 IntersectEdgeAgainstPlane(ClipVertex v0, ClipVertex v1) -{ - float alpha = saturate(v0.bc * rcp(v0.bc - v1.bc)); // Guaranteed to lie between 0 and 1 - - return lerp(v0.pt, v1.pt, alpha); -} - -void ClipPolygonAgainstPlane(uint p, uint srcBegin, uint srcSize, - uint threadIdx, - out uint dstBegin, out uint dstSize) -{ - dstBegin = srcBegin + srcSize; // Start at the end; we don't use modular arithmetic here - dstSize = 0; - - ClipVertex tailVert = CreateClipVertex(p, GetFromRingBuffer(threadIdx, (srcBegin + srcSize - 1) % MAX_CLIP_VERTS)); - -#ifdef OBTUSE_COMPILER - uint modSrcIdx = srcBegin % MAX_CLIP_VERTS; - uint modDstIdx = dstBegin % MAX_CLIP_VERTS; -#endif - - for (uint j = srcBegin; j < (srcBegin + srcSize); j++) - { - #ifndef OBTUSE_COMPILER - uint modSrcIdx = j % MAX_CLIP_VERTS; - #endif - ClipVertex leadVert = CreateClipVertex(p, GetFromRingBuffer(threadIdx, modSrcIdx)); - - // Execute Blinn's line clipping algorithm. - // Classify the line segment. 4 cases: - // 0. v0 out, v1 out -> add nothing - // 1. v0 in, v1 out -> add intersection - // 2. v0 out, v1 in -> add intersection, add v1 - // 3. v0 in, v1 in -> add v1 - // (bc >= 0) <-> in, (bc < 0) <-> out. Beware of -0. - - if ((tailVert.bc >= 0) != (leadVert.bc >= 0)) - { - // The line segment is guaranteed to cross the plane. - float4 clipVert = IntersectEdgeAgainstPlane(tailVert, leadVert); - #ifndef OBTUSE_COMPILER - uint modDstIdx = (dstBegin + dstSize++) % MAX_CLIP_VERTS; - #endif - WriteToRingBuffer(threadIdx, modDstIdx, clipVert); - #ifdef OBTUSE_COMPILER - dstSize++; - modDstIdx++; - modDstIdx = (modDstIdx == MAX_CLIP_VERTS) ? 0 : modDstIdx; - #endif - } - - if (leadVert.bc >= 0) - { - #ifndef OBTUSE_COMPILER - uint modDstIdx = (dstBegin + dstSize++) % MAX_CLIP_VERTS; - #endif - WriteToRingBuffer(threadIdx, modDstIdx, leadVert.pt); - - //vertRingBuffer[modDstIdx] = leadVert.pt; - #ifdef OBTUSE_COMPILER - dstSize++; - modDstIdx++; - modDstIdx = (modDstIdx == MAX_CLIP_VERTS) ? 0 : modDstIdx; - #endif - } - - #ifdef OBTUSE_COMPILER - modSrcIdx++; - modSrcIdx = (modSrcIdx == MAX_CLIP_VERTS) ? 0 : modSrcIdx; - #endif - tailVert = leadVert; // Avoid recomputation and overwriting the vertex in the ring buffer - } -} - -void ClipFaceAgainstViewVolume(uint f, uint baseVertexOffset, - out uint srcBegin, out uint srcSize, - uint threadIdx) -{ - srcBegin = 0; - srcSize = 4; - - uint clipMaskOfFace = 0; // Initially in front - uint vertListOfFace = GetVertexListOfFace(f); - - for (uint j = 0; j < 4; j++) - { - uint v = BitFieldExtract(vertListOfFace, 3 * j, 3); - // Non-zero if ANY of the vertices are behind any of the planes. - clipMaskOfFace |= gs_BehindMasksOfVerts[baseVertexOffset + v]; - - // Not all edges may require clipping. However, filtering the vertex list - // is somewhat expensive, so we currently don't do it. - WriteToRingBuffer(threadIdx, j, float4(gs_HapVertsX[baseVertexOffset + v], gs_HapVertsY[baseVertexOffset + v], gs_HapVertsZ[baseVertexOffset + v], gs_HapVertsW[baseVertexOffset + v])); - //vertRingBuffer[j].x = gs_HapVertsX[baseVertexOffset + v]; - //vertRingBuffer[j].y = gs_HapVertsY[baseVertexOffset + v]; - //vertRingBuffer[j].z = gs_HapVertsZ[baseVertexOffset + v]; - //vertRingBuffer[j].w = gs_HapVertsW[baseVertexOffset + v]; - } - - // Sutherland-Hodgeman polygon clipping algorithm. - // It works by clipping the entire polygon against one clipping plane at a time. - while (clipMaskOfFace != 0) - { - uint p = firstbitlow(clipMaskOfFace); - - uint dstBegin, dstSize; - ClipPolygonAgainstPlane(p, srcBegin, srcSize, threadIdx, dstBegin, dstSize); - - srcBegin = dstBegin; - srcSize = dstSize; - - clipMaskOfFace ^= 1 << p; // Clear the bit to continue using firstbitlow() - } -} - -void UpdateAaBb(uint srcBegin, uint srcSize, uint threadIdx, - bool isOrthoProj, float4x4 invProjMat, - inout float4 ndcAaBbMinPt, inout float4 ndcAaBbMaxPt) -{ -#ifdef OBTUSE_COMPILER - uint modSrcIdx = srcBegin % MAX_CLIP_VERTS; -#endif - for (uint j = srcBegin; j < (srcBegin + srcSize); j++) - { - #ifndef OBTUSE_COMPILER - uint modSrcIdx = j % MAX_CLIP_VERTS; - #endif - float4 hapVert = GetFromRingBuffer(threadIdx, modSrcIdx); - // Clamp to the bounds in case of numerical errors (may still generate -0). - float3 rapVertNDC = saturate(hapVert.xyz * rcp(hapVert.w)); - float rbpVertVSz = hapVert.w; - - if (isOrthoProj) // Must replace (w = 1) - { - rbpVertVSz = dot(invProjMat[2], hapVert); - } - - ndcAaBbMinPt = min(ndcAaBbMinPt, float4(rapVertNDC, rbpVertVSz)); - ndcAaBbMaxPt = max(ndcAaBbMaxPt, float4(rapVertNDC, rbpVertVSz)); - #ifdef OBTUSE_COMPILER - modSrcIdx++; - modSrcIdx = (modSrcIdx == MAX_CLIP_VERTS) ? 0 : modSrcIdx; - #endif - } -} - // Given: 'C' is the center of the sphere in the view space, 'r' is its radius; // 'projScale' and 'projOffset' are used to perform projection of the X (or Y) component of a vector. -float2 ComputeBoundsOfSphereOnProjectivePlane(float3 C, float r, float projScale, float projOffset) +float2 ComputeBoundsOfProjectedSphere(float3 C, float r, float projScale, float projOffset) { float xMin, xMax; @@ -455,7 +54,7 @@ float2 ComputeBoundsOfSphereOnProjectivePlane(float3 C, float r, float projScale float lenSqOC = dot(C.xz, C.xz); float lenSqOB = lenSqOC - r * r; // If |OB'| = 0 or |OC'| = 0, the bounding planes tangent to the sphere do not exist. - if (lenSqOB > 0) + if (lenSqOB > 0) // The sphere does not contain the origin { float lenOB = sqrt(lenSqOB); // |OB' x OC'| = |OB'| * |OC'| * Sin[a']. @@ -487,7 +86,7 @@ float2 ComputeBoundsOfSphereOnProjectivePlane(float3 C, float r, float projScale D.x = C.x * lenOB + (C.z * r); D.z = C.z * lenOB - (C.x * r); // We can transform OB and OD as direction vectors. - // For the simplification below, see OptimizeProjectionMatrix. + // Manually optimize the perspective projection (see OptimizeProjectionMatrix). float rapBx = (B.x * rcp(B.z)) * projScale + projOffset; float rapDx = (D.x * rcp(D.z)) * projScale + projOffset; // One problem with the above is that this direction may, for certain spheres, @@ -509,50 +108,92 @@ float2 ComputeBoundsOfSphereOnProjectivePlane(float3 C, float r, float projScale return float2(xMin, xMax); } -//********************************************************************************************** -// The goal of this program is to compute the AABB of the light in the NDC space ([0, 1] range). -// The light is represented by a convex volume (a cuboid) with 6 faces (planar quads) and 8 vertices. +/* ------------------------------ Implementation ---------------------------- */ + +// !!! IMPORTANT !!! +// The legacy code from Morten provides us special projection matrices (and their inverses). +// These matrices are different from the matrices the HDRP uses. +// There is no clip-space flip (effectively, forced UNITY_UV_STARTS_AT_TOP = 0). +// All coordinate systems are left-handed, Y-up, Z-forward. +// y z +// | / +// 0 -- x + +#ifdef SHADER_API_XBOXONE +// (Sep 16, 2020) +// The Xbox shader compiler expects the lane swizzle mask to be a compile-time constant. +// In our case, the mask is a compile-time constant, but it is defined inside a loop +// that is unrolled at the compile time, and the constants are generated during the +// constant propagation pass of the optimizer. This works fine on PlayStation, but does not work +// on Xbox. In order to avoid writing hideous code specifically for Xbox, we disable the support +// of wave intrinsics on Xbox until the Xbox compiler is fixed. +#undef PLATFORM_SUPPORTS_WAVE_INTRINSICS +#endif + +#ifndef PLATFORM_SUPPORTS_WAVE_INTRINSICS +// 1 array * 16 elements * 4 bytes each = 64 bytes. +groupshared uint gs_CullClipFaceMasks[ENTITIES_PER_GROUP]; // 6 faces each (HLSL does not support small data types) +// 6 arrays * 16 elements * 4 bytes each = 384 bytes. +// These are actually floats reinterpreted as uints. +// The reason is because floating-point atomic operations are not supported. +groupshared uint gs_NdcAaBbMinPtX[ENTITIES_PER_GROUP]; +groupshared uint gs_NdcAaBbMaxPtX[ENTITIES_PER_GROUP]; +groupshared uint gs_NdcAaBbMinPtY[ENTITIES_PER_GROUP]; +groupshared uint gs_NdcAaBbMaxPtY[ENTITIES_PER_GROUP]; +// Skip Z, we do not need it. +groupshared uint gs_NdcAaBbMinPtW[ENTITIES_PER_GROUP]; // View-space Z coordinate +groupshared uint gs_NdcAaBbMaxPtW[ENTITIES_PER_GROUP]; // View-space Z coordinate +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + +// ************************************************************************************************* +// The goal of this program is to compute the AABB of a bounded entity in the NDC space ([0, 1] range). +// The entity is represented by a bounding sphere and a right bounding frustum with 6 faces and 8 vertices. +// The resulting bounding volume is defined by the the intersection of the sphere and the frustum. // -// Since a light volume may be partially off-screen, we must clip it before computing the AABB. -// Clipping the resulting AABB (rather than the light volume itself) may result in a loose AABB. +// Since an entity's bounding volume may be partially off-screen, we must clip it before computing the AABB. +// Clipping the resulting AABB (rather than the bounding volume itself) may result in a loose AABB. // // To avoid having to deal with the "Moebius twist" property of the perspective transform, // we perform clipping using the homogeneous (projective) post-perspective coordinates. // This clipping method in described in Blinn's paper titled "Line Clipping". // -// The algorithm processes a light on 4 threads. While all 6 faces may require clipping in the +// The algorithm processes an entity on 4 threads. While all 6 faces may require clipping in the // worst case, clipping more than 4 faces is very uncommon (typically, we clip 0, 3 or 4). // Some faces may require culling rather than clipping (the former is simpler). // // It's important to realize that face culling may end up culling 5 (or even all 6) faces. -// This means that the clipped light volume may be reduced to a single polygon, or nothing at all. -// (Imagine a view volume completely or partially inside a light volume). -// Therefore, we must perform view-volume-corner-inside-light-volume tests. -// +// This means that the clipped volume may be reduced to a single polygon, or nothing at all. +// (Imagine a view volume completely or partially inside a bounding volume). +// Therefore, we must perform view-volume-corner-inside-bounding-volume tests. // // Notation: // rbp - real (3D) coordinates before perspective // hbp - hom. (4D) coordinates before perspective // hap - hom. (4D) coordinates after perspective // rap - real (3D) coordinates after perspective (after division by w) -// ********************************************************************************************* +// ************************************************************************************************* -[numthreads(THREADS_PER_GROUP, 1, 1)] -void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) +[numthreads(THREADS_PER_ENTITY, ENTITIES_PER_GROUP, 1)] +void main(uint3 threadID : SV_GroupThreadID, uint3 groupID : SV_GroupID, uint threadIdx : SV_GroupIndex) { - const uint t = threadID; - const uint g = groupID.x; - const uint eyeIndex = groupID.y; // Currently, can only be 0 or 1 + const uint t = threadID.x; + const uint entity = threadID.y; + const uint g = groupID.x; + const uint eye = groupID.z; - const uint intraGroupLightIndex = t / THREADS_PER_LIGHT; - const uint globalLightIndex = g * LIGHTS_PER_GROUP + intraGroupLightIndex; - const uint baseVertexOffset = intraGroupLightIndex * NUM_VERTS; + const uint baseVertexOffset = entity * NUM_VERTS; + const uint globalEntityIndex = IndexFromCoordinate(uint2(entity, g), ENTITIES_PER_GROUP); + const uint clampedEntityIndex = min(globalEntityIndex, _BoundedEntityCount - 1); - const uint eyeAdjustedInputOffset = GenerateLightCullDataIndex(globalLightIndex, g_iNrVisibLights, eyeIndex); - const SFiniteLightBound cullData = g_data[eyeAdjustedInputOffset]; + // Helper threads may perform the same computation on valid data, + // but do not store the results of the computation to memory. + const bool isHelperThread = globalEntityIndex != clampedEntityIndex; - const float4x4 projMat = g_mProjectionArr[eyeIndex]; - const float4x4 invProjMat = g_mInvProjectionArr[eyeIndex]; + const uint bufferIndex = ComputeEntityBoundsBufferIndex(clampedEntityIndex, eye); + const FiniteLightBound cullData = _EntityBoundsBuffer[bufferIndex]; + + const float4x4 projMat = g_mProjectionArr[eye]; + const float4x4 invProjMat = g_mInvProjectionArr[eye]; // Bounding frustum. const float3 rbpC = cullData.center.xyz; // View-space @@ -563,19 +204,22 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) // Bounding sphere. const float radius = cullData.radius; + // This cube defines the view frustum. + const float3 cubeMinCS = float3(-1, -1, 0); + const float3 cubeMaxCS = float3( 1, 1, 1); + #ifndef PLATFORM_SUPPORTS_WAVE_INTRINSICS // (0) Initialize the TGSM. - if (t % THREADS_PER_LIGHT == 0) // Avoid bank conflicts + if (t == 0) // Avoid bank conflicts { - gs_CullClipFaceMasks[intraGroupLightIndex] = 0; // Initially inside - gs_NdcAaBbMinPtX[intraGroupLightIndex] = asuint(1.0f); - gs_NdcAaBbMaxPtX[intraGroupLightIndex] = asuint(0.0f); - gs_NdcAaBbMinPtY[intraGroupLightIndex] = asuint(1.0f); - gs_NdcAaBbMaxPtY[intraGroupLightIndex] = asuint(0.0f); - gs_NdcAaBbMinPtZ[intraGroupLightIndex] = asuint(1.0f); - gs_NdcAaBbMaxPtZ[intraGroupLightIndex] = asuint(0.0f); - gs_NdcAaBbMinPtW[intraGroupLightIndex] = asuint(FLT_INF); - gs_NdcAaBbMaxPtW[intraGroupLightIndex] = asuint(0.0f); + gs_CullClipFaceMasks[entity] = 0; // Initially all faces are assumed to be inside + gs_NdcAaBbMinPtX[entity] = asuint(1.0f); + gs_NdcAaBbMaxPtX[entity] = asuint(0.0f); + gs_NdcAaBbMinPtY[entity] = asuint(1.0f); + gs_NdcAaBbMaxPtY[entity] = asuint(0.0f); + // Skip Z, we do not need it. + gs_NdcAaBbMinPtW[entity] = asuint(FLT_INF); + gs_NdcAaBbMaxPtW[entity] = asuint(0.0f); } #endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS @@ -588,12 +232,12 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) // any single plane, we can trivially reject (cull) that face. uint cullClipFaceMask = 0; // Initially inside - uint i; // Avoid multiply-declared variable warning + uint i; // Avoid the multiply-declared variable warning - // (1) Compute the vertices of the light volume. + // (1) Compute the vertices of the bounding frustum. for (i = 0; i < VERTS_PER_THREAD; i++) { - uint v = i * THREADS_PER_LIGHT + t % THREADS_PER_LIGHT; + uint v = t + i * THREADS_PER_ENTITY; // rbpVerts[0] = rbpC - rbpX * scale - rbpY * scale - rbpZ; (-s, -s, -1) // rbpVerts[1] = rbpC + rbpX * scale - rbpY * scale - rbpZ; (+s, -s, -1) @@ -607,44 +251,35 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) float3 m = GenerateVertexOfStandardCube(v); m.xy *= ((v & 4) == 0) ? scale : 1; // X, Y in [-scale, scale] - float3 rbpVertVS = rbpC + m.x * rbpX + m.y * rbpY + m.z * rbpZ; + float3 rbpVertRVS = m.x * rbpX + m.y * rbpY + m.z * rbpZ; + float3 rbpVertVS = rbpC + rbpVertRVS; // Avoid generating (w = 0). rbpVertVS.z = (abs(rbpVertVS.z) > FLT_MIN) ? rbpVertVS.z : FLT_MIN; - float4 hapVert = mul(projMat, float4(rbpVertVS, 1)); - - // Warning: the W component may be negative. - // Flipping the -W pyramid by negating all coordinates is incorrect - // and will break both classification and clipping. - // For the orthographic projection, (w = 1). + // For the orthographic projection, the resulting (w = 1). + float4 hapVertCS = mul(projMat, float4(rbpVertVS, 1)); - // Transform the X and Y components: [-w, w] -> [0, w]. - hapVert.xy = 0.5 * hapVert.xy + (0.5 * hapVert.w); + const float3 hapAaBbMinPt = cubeMinCS * hapVertCS.w; + const float3 hapAaBbMaxPt = cubeMaxCS * hapVertCS.w; // For each vertex, we must determine whether it is within the bounds. // For culling and clipping, we must know, per culling plane, whether the vertex // is in the positive or the negative half-space. uint behindMask = 0; // Initially in front - // Consider the vertex to be inside the view volume if: - // 0 <= x <= w - // 0 <= y <= w <-- include boundary points to avoid clipping them later - // 0 <= z <= w - // w is always valid - // TODO: epsilon for numerical robustness? - - for (uint j = 0; j < (NUM_PLANES / 2); j++) + // TODO: add epsilon for numerical robustness? + for (uint j = 0; j < (NUM_CLIP_PLANES / 2); j++) { - float w = hapVert.w; - - behindMask |= (hapVert[j] < 0 ? 1 : 0) << (2 * j + 0); // Planes crossing '0' - behindMask |= (hapVert[j] > w ? 1 : 0) << (2 * j + 1); // Planes crossing 'w' + // Test: dot(frustumPlane, hapVertCS) < 0: + // (x < -w), (x > w), (y < -w), (y > w), (z < 0), (z > w). + behindMask |= ((hapVertCS[j] < hapAaBbMinPt[j]) ? 1 : 0) << (2 * j + 0); + behindMask |= ((hapVertCS[j] > hapAaBbMaxPt[j]) ? 1 : 0) << (2 * j + 1); } if (behindMask == 0) // Inside? { - // Clamp to the bounds in case of numerical errors (may still generate -0). - float3 rapVertNDC = saturate(hapVert.xyz * rcp(hapVert.w)); + float3 rapVertCS = hapVertCS.xyz * rcp(hapVertCS.w); + float3 rapVertNDC = float3(rapVertCS.xy * 0.5 + 0.5, rapVertCS.z); ndcAaBbMinPt = min(ndcAaBbMinPt, float4(rapVertNDC, rbpVertVS.z)); ndcAaBbMaxPt = max(ndcAaBbMaxPt, float4(rapVertNDC, rbpVertVS.z)); @@ -655,15 +290,15 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) cullClipFaceMask |= GetFaceMaskOfVertex(v); } - gs_HapVertsX[baseVertexOffset + v] = hapVert.x; - gs_HapVertsY[baseVertexOffset + v] = hapVert.y; - gs_HapVertsZ[baseVertexOffset + v] = hapVert.z; - gs_HapVertsW[baseVertexOffset + v] = hapVert.w; + gs_HapVertsX[baseVertexOffset + v] = hapVertCS.x; + gs_HapVertsY[baseVertexOffset + v] = hapVertCS.y; + gs_HapVertsZ[baseVertexOffset + v] = hapVertCS.z; + gs_HapVertsW[baseVertexOffset + v] = hapVertCS.w; gs_BehindMasksOfVerts[baseVertexOffset + v] = behindMask; } #ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS - for (i = 0; i < FastLog2(THREADS_PER_LIGHT); i++) + for (i = 0; i < FastLog2(THREADS_PER_ENTITY); i++) { uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes uint orMask = 0; // Plays no role @@ -671,63 +306,55 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) cullClipFaceMask |= LaneSwizzle(cullClipFaceMask, andMask, orMask, xorMask); } + + GroupMemoryBarrier(); // Wait for writes to gs_BehindMasksOfVerts, gs_HapVertsX #else - InterlockedOr(gs_CullClipFaceMasks[intraGroupLightIndex], cullClipFaceMask); + InterlockedOr(gs_CullClipFaceMasks[entity], cullClipFaceMask); - GroupMemoryBarrierWithGroupSync(); + GroupMemoryBarrier(); // Wait for writes to gs_CullClipFaceMasks, gs_BehindMasksOfVerts, gs_HapVertsX - cullClipFaceMask = gs_CullClipFaceMasks[intraGroupLightIndex]; -#endif + cullClipFaceMask = gs_CullClipFaceMasks[entity]; +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS // (2) Test the corners of the view volume. if (cullClipFaceMask != 0) { - // The light is partially outside the view volume. - // Therefore, some of the corners of the view volume may be inside the light volume. - // We perform aggressive culling, so we must make sure they are accounted for. - // The light volume is a special type of cuboid - a right frustum. - // We can exploit this fact by building a light-space projection matrix. + // The entity is partially outside the view volume. + // Therefore, some of the corners of the view volume may be inside the entity's bounding frustum. + // Since we cull faces that are outside the view volume, so we must make sure its corners are accounted for. + // We can exploit the properties of the frustum by building an entity-space projection matrix. // P_v = T * (R * S) * P_l // P_l = (R * S)^{-1} * T^{-1} * P_v - float4x4 invTranslateToLightSpace = Translation4x4(-rbpC); - float4x4 invRotateAndScaleInLightSpace = Homogenize3x3(Invert3x3(ScaledRotation3x3(rbpX, rbpY, rbpZ))); - // TODO: avoid full inversion by using unit vectors and passing magnitudes explicitly. + float4x4 invTranslateToEntitySpace = Translation4x4(-rbpC); + float4x4 invRotateAndScaleInEntitySpace = Homogenize3x3(Invert3x3(ScaledRotation3x3(rbpX, rbpY, rbpZ))); - // This (orthographic) projection matrix maps a view-space point to a light-space [-1, 1]^3 cube. - float4x4 lightSpaceMatrix = mul(invRotateAndScaleInLightSpace, invTranslateToLightSpace); + // This (orthographic) projection matrix maps a view-space point to a entity-space [-1, 1]^3 cube. + float4x4 entitySpaceMatrix = mul(invRotateAndScaleInEntitySpace, invTranslateToEntitySpace); - if (scale != 1) // Perspective light space? + if (scale != 1) // Perspective entity space? { // Compute the parameters of the perspective projection. float s = scale; - float e = -1 - 2 * (s * rcp(1 - s)); // Signed distance from the origin to the eye - float n = -e - 1; // Distance from the eye to the near plane - float f = -e + 1; // Distance from the eye to the far plane - float g = f; // Distance from the eye to the projection plane + float n = 2 * (s * rcp(1 - s)); // Distance from the eye to the near plane + float f = 2 + n; // Distance from the eye to the far plane + float g = f; // Distance from the eye to the projection plane + float e = -1 - n; // Signed distance from the origin to the eye float4x4 invTranslateEye = Translation4x4(float3(0, 0, -e)); float4x4 perspProjMatrix = PerspectiveProjection4x4(1, g, n, f); - lightSpaceMatrix = mul(mul(perspProjMatrix, invTranslateEye), lightSpaceMatrix); + entitySpaceMatrix = mul(mul(perspProjMatrix, invTranslateEye), entitySpaceMatrix); } for (i = 0; i < VERTS_PER_THREAD; i++) { - uint v = i * THREADS_PER_LIGHT + t % THREADS_PER_LIGHT; - - float3 rapVertCS = GenerateVertexOfStandardCube(v); - rapVertCS.z = rapVertCS.z * 0.5 + 0.5; // View's projection matrix MUST map Z to [0, 1] + uint v = t + i * THREADS_PER_ENTITY; + float3 rapVertCS = GenerateVertexOfCustomCube(v, cubeMinCS, cubeMaxCS); float4 hbpVertVS = mul(invProjMat, float4(rapVertCS, 1)); // Clip to view space - float4 hapVertLS = mul(lightSpaceMatrix, hbpVertVS); // View to light space - - // Consider the vertex to be inside the light volume if: - // -w < x < w - // -w < y < w <-- exclude boundary points, as we will not clip using these vertices - // -w < z < w <-- assume that Z-precision is not very important here - // 0 < w - // TODO: epsilon for numerical robustness? + float4 hapVertLS = mul(entitySpaceMatrix, hbpVertVS); // View to entity space + // TODO: add epsilon for numerical robustness? bool inside = Max3(abs(hapVertLS.x), abs(hapVertLS.y), abs(hapVertLS.z)) < hapVertLS.w; if (inside) @@ -741,18 +368,15 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) } } -#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS - GroupMemoryBarrierWithGroupSync(); -#endif - // (3) Cull the faces. + if (cullClipFaceMask != 0) { const uint cullFaceMask = cullClipFaceMask; const uint numFacesToCull = countbits(cullFaceMask); // [0, 6] for (i = 0; i < FACES_PER_THREAD; i++) { - uint n = i * THREADS_PER_LIGHT + t % THREADS_PER_LIGHT; + uint n = t + i * THREADS_PER_ENTITY; if (n < numFacesToCull) { @@ -760,14 +384,14 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) if (TryCullFace(f, baseVertexOffset)) { - cullClipFaceMask ^= 1 << f; // Clear the bit + cullClipFaceMask ^= 1 << f; } } } } #ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS - for (i = 0; i < FastLog2(THREADS_PER_LIGHT); i++) + for (i = 0; i < FastLog2(THREADS_PER_ENTITY); i++) { uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes uint orMask = 0; // Plays no role @@ -776,37 +400,39 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) cullClipFaceMask &= LaneSwizzle(cullClipFaceMask, andMask, orMask, xorMask); } #else - InterlockedAnd(gs_CullClipFaceMasks[intraGroupLightIndex], cullClipFaceMask); + InterlockedAnd(gs_CullClipFaceMasks[entity], cullClipFaceMask); - GroupMemoryBarrierWithGroupSync(); + GroupMemoryBarrier(); // Wait for writes to gs_CullClipFaceMasks - cullClipFaceMask = gs_CullClipFaceMasks[intraGroupLightIndex]; + cullClipFaceMask = gs_CullClipFaceMasks[entity]; #endif // (4) Clip the faces. + if (cullClipFaceMask != 0) { const uint clipFaceMask = cullClipFaceMask; const uint numFacesToClip = countbits(clipFaceMask); // [0, 6] for (i = 0; i < FACES_PER_THREAD; i++) { - uint n = i * THREADS_PER_LIGHT + t % THREADS_PER_LIGHT; + uint n = t + i * THREADS_PER_ENTITY; if (n < numFacesToClip) { uint f = NthBitLow(clipFaceMask, n); uint srcBegin, srcSize; - ClipFaceAgainstViewVolume(f, baseVertexOffset, - srcBegin, srcSize, t); - UpdateAaBb(srcBegin, srcSize, t, g_isOrthographic != 0, invProjMat, + float4 vertRingBuffer[MAX_CLIP_VERTS]; + ClipFaceAgainstCube(f, cubeMinCS, cubeMaxCS, baseVertexOffset, + srcBegin, srcSize, vertRingBuffer, threadIdx); + UpdateAaBb(srcBegin, srcSize, vertRingBuffer, threadIdx, g_isOrthographic != 0, invProjMat, ndcAaBbMinPt, ndcAaBbMaxPt); } } } #ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS - for (i = 0; i < FastLog2(THREADS_PER_LIGHT); i++) + for (i = 0; i < FastLog2(THREADS_PER_ENTITY); i++) { uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes uint orMask = 0; // Plays no role @@ -816,33 +442,30 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) ndcAaBbMaxPt.x = max(ndcAaBbMaxPt.x, LaneSwizzle(ndcAaBbMaxPt.x, andMask, orMask, xorMask)); ndcAaBbMinPt.y = min(ndcAaBbMinPt.y, LaneSwizzle(ndcAaBbMinPt.y, andMask, orMask, xorMask)); ndcAaBbMaxPt.y = max(ndcAaBbMaxPt.y, LaneSwizzle(ndcAaBbMaxPt.y, andMask, orMask, xorMask)); - ndcAaBbMinPt.z = min(ndcAaBbMinPt.z, LaneSwizzle(ndcAaBbMinPt.z, andMask, orMask, xorMask)); - ndcAaBbMaxPt.z = max(ndcAaBbMaxPt.z, LaneSwizzle(ndcAaBbMaxPt.z, andMask, orMask, xorMask)); + // Skip Z, we do not need it. ndcAaBbMinPt.w = min(ndcAaBbMinPt.w, LaneSwizzle(ndcAaBbMinPt.w, andMask, orMask, xorMask)); ndcAaBbMaxPt.w = max(ndcAaBbMaxPt.w, LaneSwizzle(ndcAaBbMaxPt.w, andMask, orMask, xorMask)); } #else // Integer comparison works for floating-point numbers as long as the sign bit is 0. // We must take care of -0 ourselves. saturate() does not help. - InterlockedMin(gs_NdcAaBbMinPtX[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.x))); - InterlockedMax(gs_NdcAaBbMaxPtX[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.x))); - InterlockedMin(gs_NdcAaBbMinPtY[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.y))); - InterlockedMax(gs_NdcAaBbMaxPtY[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.y))); - InterlockedMin(gs_NdcAaBbMinPtZ[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.z))); - InterlockedMax(gs_NdcAaBbMaxPtZ[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.z))); - InterlockedMin(gs_NdcAaBbMinPtW[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.w))); - InterlockedMax(gs_NdcAaBbMaxPtW[intraGroupLightIndex], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.w))); - - GroupMemoryBarrierWithGroupSync(); - - ndcAaBbMinPt.x = asfloat(gs_NdcAaBbMinPtX[intraGroupLightIndex]); - ndcAaBbMaxPt.x = asfloat(gs_NdcAaBbMaxPtX[intraGroupLightIndex]); - ndcAaBbMinPt.y = asfloat(gs_NdcAaBbMinPtY[intraGroupLightIndex]); - ndcAaBbMaxPt.y = asfloat(gs_NdcAaBbMaxPtY[intraGroupLightIndex]); - ndcAaBbMinPt.z = asfloat(gs_NdcAaBbMinPtZ[intraGroupLightIndex]); - ndcAaBbMaxPt.z = asfloat(gs_NdcAaBbMaxPtZ[intraGroupLightIndex]); - ndcAaBbMinPt.w = asfloat(gs_NdcAaBbMinPtW[intraGroupLightIndex]); - ndcAaBbMaxPt.w = asfloat(gs_NdcAaBbMaxPtW[intraGroupLightIndex]); + InterlockedMin(gs_NdcAaBbMinPtX[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.x))); + InterlockedMax(gs_NdcAaBbMaxPtX[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.x))); + InterlockedMin(gs_NdcAaBbMinPtY[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.y))); + InterlockedMax(gs_NdcAaBbMaxPtY[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.y))); + // Skip Z, we do not need it. + InterlockedMin(gs_NdcAaBbMinPtW[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMinPt.w))); + InterlockedMax(gs_NdcAaBbMaxPtW[entity], asuint(CLEAR_SIGN_BIT(ndcAaBbMaxPt.w))); + + GroupMemoryBarrier(); // Wait for writes to gs_NdcAaBbMinPtX + + ndcAaBbMinPt.x = asfloat(gs_NdcAaBbMinPtX[entity]); + ndcAaBbMaxPt.x = asfloat(gs_NdcAaBbMaxPtX[entity]); + ndcAaBbMinPt.y = asfloat(gs_NdcAaBbMinPtY[entity]); + ndcAaBbMaxPt.y = asfloat(gs_NdcAaBbMaxPtY[entity]); + // Skip Z, we do not need it. + ndcAaBbMinPt.w = asfloat(gs_NdcAaBbMinPtW[entity]); + ndcAaBbMaxPt.w = asfloat(gs_NdcAaBbMaxPtW[entity]); #endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS // (5) Compute the AABB of the bounding sphere. @@ -857,27 +480,24 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) // too hard/expensive. I will leave it as a TODO in case someone wants to tackle this problem. if ((rbpC.z + radius) > 0) // Is the sphere at least *partially* in front of the origin? { - ndcAaBbMinPt.w = max(ndcAaBbMinPt.w, rbpC.z - radius); - ndcAaBbMaxPt.w = min(ndcAaBbMaxPt.w, rbpC.z + radius); - // Computing the 'z' component for an arbitrary projection matrix is hard, so we don't do it. - // See sec. 8.2.2 of https://foundationsofgameenginedev.com/#fged2 for a solution. - float2 rectMin, rectMax; // For the 'x' and 'y' components, the solution is given below. if (g_isOrthographic) { + float4x4 orthoProj = OptimizeOrthographicMatrix(projMat); + // Compute the center and the extents (half-diagonal) of the bounding box. - float2 center = mul(projMat, float4(rbpC.xyz, 1)).xy; - float2 extents = mul(projMat, float4(radius.xx, 0, 0)).xy; + float2 center = mul(orthoProj, float4(rbpC.xyz, 1)).xy; + float2 extents = mul(orthoProj, float4(radius.xx, 0, 0)).xy; // Axis-aligned ellipse rectMin = center - extents; rectMax = center + extents; } else // Perspective { - float2 xBounds = ComputeBoundsOfSphereOnProjectivePlane(rbpC.xxz, radius, projMat._m00, projMat._m02); // X-Z plane - float2 yBounds = ComputeBoundsOfSphereOnProjectivePlane(rbpC.yyz, radius, projMat._m11, projMat._m12); // Y-Z plane + float2 xBounds = ComputeBoundsOfProjectedSphere(rbpC.xxz, radius, projMat._11, projMat._13); // X-Z plane + float2 yBounds = ComputeBoundsOfProjectedSphere(rbpC.yyz, radius, projMat._22, projMat._23); // Y-Z plane rectMin = float2(xBounds.r, yBounds.r); rectMax = float2(xBounds.g, yBounds.g); @@ -890,16 +510,16 @@ void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) // Note: separating the X- and Y-computations across 2 threads is not worth it. ndcAaBbMinPt.xy = max(ndcAaBbMinPt.xy, rectMin); ndcAaBbMaxPt.xy = min(ndcAaBbMaxPt.xy, rectMax); + // Skip Z, we do not need it. + ndcAaBbMinPt.w = max(ndcAaBbMinPt.w, rbpC.z - radius); + ndcAaBbMaxPt.w = min(ndcAaBbMaxPt.w, rbpC.z + radius); } } - if ((globalLightIndex < (uint)g_iNrVisibLights) && (t % THREADS_PER_LIGHT == 0)) // Avoid bank conflicts + if (!isHelperThread && (t == 0)) // Avoid bank conflicts { - // For stereo, we have two sets of lights. Therefore, each eye has a set of mins - // followed by a set of maxs, and each set is equal to g_iNrVisibLights. - const ScreenSpaceBoundsIndices eyeAdjustedOutputOffsets = GenerateScreenSpaceBoundsIndices(globalLightIndex, g_iNrVisibLights, eyeIndex); - - g_vBoundsBuffer[eyeAdjustedOutputOffsets.min] = ndcAaBbMinPt; - g_vBoundsBuffer[eyeAdjustedOutputOffsets.max] = ndcAaBbMaxPt; + // TODO: double-check to make sure that off-screen entities get assigned invalid AABBs. + _xyBoundsBuffer[bufferIndex] = float4(ndcAaBbMinPt.x, ndcAaBbMaxPt.x, ndcAaBbMinPt.y, ndcAaBbMaxPt.y); + _wBoundsBuffer[bufferIndex] = float2(ndcAaBbMinPt.w, ndcAaBbMaxPt.w); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute new file mode 100644 index 00000000000..3138ff21818 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute @@ -0,0 +1,796 @@ +// #pragma enable_d3d11_debug_symbols +#pragma only_renderers d3d11 playstation xboxone vulkan metal switch + +#define COARSE_BINNING + +#define FILL_COARSE_TILES 0 +#define PRUNE_COARSE_TILES 1 +#define FILL_FINE_TILES 2 + +// Generates large screen tiles in a fast, conservative manner. +#pragma kernel FillCoarseTiles PASS = FILL_COARSE_TILES +// Removes certain entities from the coarse buffer at a large cost. +#pragma kernel PruneCoarseTiles PASS = PRUNE_COARSE_TILES +// Generates small screen tiles in an accurate manner. +#pragma kernel FillFineTiles PASS = FILL_FINE_TILES + +#define USE_DEPTH_BUFFER 0 + +#if USE_DEPTH_BUFFER + #define NUM_CLIP_PLANES (4) // Do not clip against the near and far planes; let z-binning handle these (approximately) +#else + #define NUM_CLIP_PLANES (6) // Full frustum clipping +#endif + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceFillingCurves.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition-config/Runtime/ShaderConfig.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/TextureXR.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/ClippingUtilities.hlsl" + +/* ------------------------------ Inputs ------------------------------------ */ + +#if (PASS == FILL_COARSE_TILES) + // 1x list for all entites (sorted by category, we concatenate lists of all views). + StructuredBuffer _xyBoundsBuffer; // {x_min, x_max, y_min, y_max} +#endif + +#if (PASS == PRUNE_COARSE_TILES) + // 1x list for all entites (sorted by category, we concatenate lists of all views). + StructuredBuffer _EntityBoundsBuffer; + // 1x list for all entites (sorted by category, we concatenate lists of all views). + StructuredBuffer _SrcCoarseTileBuffer; +#if USE_DEPTH_BUFFER + TEXTURE2D_X(_DepthPyramidBuffer); // Farthest (min) depth filter for conservative testing +#endif // USE_DEPTH_BUFFER +#endif + +#if (PASS == FILL_FINE_TILES) + // 1x list for all entites (sorted by category, we concatenate lists of all views). + StructuredBuffer _EntityBoundsBuffer; + // 1x list for all entites (sorted by category, we concatenate lists of all views). + StructuredBuffer _CoarseTileBuffer; +#if USE_DEPTH_BUFFER + TEXTURE2D_X(_DepthPyramidBuffer); // Farthest (min) depth filter for conservative testing +#endif // USE_DEPTH_BUFFER +#endif + +/* ------------------------------ Outputs ----------------------------------- */ + +#if (PASS == FILL_COARSE_TILES) + // The tile buffer is a bit field with 1 bit per entity. + // The size of the buffer can be computed as follows: + // DIV_ROUND_UP(RES_X, COARSE_TILE_SIZE) * DIV_ROUND_UP(RES_Y, COARSE_TILE_SIZE) * EYE_COUNT * + // DIV_ROUND_UP(TILE_ENTRY_LIMIT, 32) * 4 bytes per DWORD. + // For example (1080p): 30 * 17 * 1 * (256 / 32) * 4 = 15.94 KiB. + // Note that the allocation size is independent of the number of entities per category. + RWStructuredBuffer _CoarseTileBuffer; +#endif + +#if (PASS == PRUNE_COARSE_TILES) + // 1x list for all entites (sorted by category, we concatenate lists of all views). + RWStructuredBuffer _DstCoarseTileBuffer; +#endif + +#if (PASS == FILL_FINE_TILES) + // The tile buffer is a bit field with 1 bit per entity. + // The size of the buffer can be computed as follows: + // DIV_ROUND_UP(RES_X, FINE_TILE_SIZE) * DIV_ROUND_UP(RES_Y, FINE_TILE_SIZE) * EYE_COUNT * + // DIV_ROUND_UP(TILE_ENTRY_LIMIT, 32) * 4 bytes per DWORD. + // For example (1080p): 240 * 135 * 1 * (256 / 32) * 4 = 0.99 MiB. + // Note that the allocation size is independent of the number of entities per category. + RWStructuredBuffer _FineTileBuffer; +#endif + +/* ------------------------------ Utilities --------------------------------- */ + +/* ------------------------------ Implementation ---------------------------- */ + +// !!! IMPORTANT !!! +// The legacy code from Morten provides us special projection matrices (and their inverses). +// These matrices are different from the matrices the HDRP uses. +// There is no clip-space flip (effectively, forced UNITY_UV_STARTS_AT_TOP = 0). +// All coordinate systems are left-handed, Y-up, Z-forward. +// y z +// | / +// 0 -- x + +#ifdef SHADER_API_XBOXONE +// (Sep 16, 2020) +// The Xbox shader compiler expects the lane swizzle mask to be a compile-time constant. +// In our case, the mask is a compile-time constant, but it is defined inside a loop +// that is unrolled at the compile time, and the constants are generated during the +// constant propagation pass of the optimizer. This works fine on PlayStation, but does not work +// on Xbox. In order to avoid writing hideous code specifically for Xbox, we disable the support +// of wave intrinsics on Xbox until the Xbox compiler is fixed. +#undef PLATFORM_SUPPORTS_WAVE_INTRINSICS +#endif + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS +// Booleans are stored in 2x consecutive SGPRs on GCN. +// So using LaneSwizzle is probably inefficient in this case... +// TODO: reimplement this using 'ballot' to save VGPRs and VALUs. +bool LaneSwizzle(bool x, uint andMask, uint orMask, uint xorMask) +{ + return (bool)(LaneSwizzle((uint)x, andMask, orMask, xorMask)); +} +#endif + +#if IS_MULTIPLE(TILE_ENTRY_LIMIT, 2) + #error "TILE_ENTRY_LIMIT must be an integer multiple of 2." +#endif + +#if (PASS == FILL_COARSE_TILES) + +// 1x thread per tile. +[numthreads(THREADS_PER_GROUP, 1, 1)] +void FillCoarseTiles(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) +{ + // We could tile the threads in 8x8 blocks. The problem is, + // the dimensions of the buffer are already quite small. The extra padding + // (helper threads) required outweighs the benefits (improved locality, reduced divergence). + const uint t = threadID; + const uint g = groupID.x; + const uint cat = groupID.y; + const uint eye = groupID.z; + + UNITY_XR_ASSIGN_VIEW_INDEX(eye); + + const uint entityIndex = _BoundedEntityOffsetPerCategory[cat].x; + const uint entityCount = _BoundedEntityCountPerCategory[cat].x; + const uint dwordCount = _BoundedEntityDwordCountPerCategory[cat].x; + + if (dwordCount == 0) return; + + const uint globalTileIndex = IndexFromCoordinate(uint2(t, g), THREADS_PER_GROUP); + const uint clampedTileIndex = min(globalTileIndex, TILE_BUFFER_DIMS.x * TILE_BUFFER_DIMS.y - 1); + const uint2 clampedTileCoord = CoordinateFromIndex(clampedTileIndex, TILE_BUFFER_DIMS.x); // TODO: avoid integer division + + // Helper threads may perform the same computation on valid data, + // but do not store the results of the computation to memory. + const bool isHelperThread = globalTileIndex != clampedTileIndex; + + if (isHelperThread) return; // Avoid adding too many checks or branches below + + const uint entityBufferIndex = ComputeEntityBoundsBufferIndex(entityIndex, eye); + const uint tileBufferIndex = ComputeTileBufferIndex(clampedTileIndex, cat, eye); + + // Compute 2-D the AABB of the tile. + const uint2 tileAaBbMinPtSS = clampedTileCoord * TILE_SIZE; + const uint2 tileAaBbMaxPtSS = tileAaBbMinPtSS + TILE_SIZE; // (clampedTileCoord + 1) * TILE_SIZE + const float2 tileAaBbMinPtNDC = tileAaBbMinPtSS * _ScreenSize.zw; // Divide + const float2 tileAaBbMaxPtNDC = saturate(tileAaBbMaxPtSS * _ScreenSize.zw); // Divide and clamp to the edge + const float2 tileBoundsX = float2(tileAaBbMinPtNDC.x, tileAaBbMaxPtNDC.x); // TODO: add epsilon for numerical robustness? + const float2 tileBoundsY = float2(tileAaBbMinPtNDC.y, tileAaBbMaxPtNDC.y); // TODO: add epsilon for numerical robustness? + + // The algorithm is O(n * m) where 'n' is the entity count and 'm' is tile count. + // Therefore, it will be slow if 'n' is large. + // We should consider a sorting-based algorithm, which could be closer to O((n + m) * log(n)). + for (uint d = 0; d < dwordCount; d++) + { + uint outputDword = 0; // Initially empty + + for (uint i = d * 32; i < min(d * 32 + 32, entityCount); i++) + { + float2 entityBoundsX = _xyBoundsBuffer[entityBufferIndex + i].xy; + float2 entityBoundsY = _xyBoundsBuffer[entityBufferIndex + i].zw; + + if (IntervalsOverlap(entityBoundsX, tileBoundsX) && + IntervalsOverlap(entityBoundsY, tileBoundsY)) + { + uint b = i % 32; + + outputDword |= 1 << b; + } + } + + _CoarseTileBuffer[tileBufferIndex + d] = outputDword; + } +} + +#else // (PASS != FILL_COARSE_TILES) + +// Improve naming by using the definitions below. +#define THREADS_PER_TILE (THREADS_PER_ENTITY) +#define TILES_PER_GROUP (ENTITIES_PER_GROUP) + +#ifndef PLATFORM_SUPPORTS_WAVE_INTRINSICS +// 1 array * 16 elements * 4 bytes each = 64 bytes. +groupshared uint gs_CullClipFaceMasks[TILES_PER_GROUP]; // 6 faces each (HLSL does not support small data types) +// 1 array * 16 elements * 4 bytes each = 64 bytes. +groupshared uint gs_CulledFaceMasks[TILES_PER_GROUP]; // 6 faces each (HLSL does not support small data types) +// 1 array * 16 elements * 4 bytes each = 64 bytes. +groupshared uint gs_CullMasksOfAllFaces[TILES_PER_GROUP]; // 6 planes each (HLSL does not support small data types) +// 1 array * 16 elements * 4 bytes each = 64 bytes. +groupshared uint gs_TrivialAcceptFlags[TILES_PER_GROUP]; // Just a boolean +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + +// We do not clip the sphere against the near and the far plane (same as in 'scrbound.compute'). +void TryCullBoundingSphere(float3 C, float r, + float3 aaBbMinPtCS, float3 aaBbMaxPtCS, float4x4 projMat, float4x4 invProjMat, + out bool trivialAccept, out bool trivialReject) +{ + trivialAccept = trivialReject = false; + + if ((C.z + r) > 0) // Is the sphere at least *partially* in front of the origin? + { + if (g_isOrthographic) + { + float4x4 orthoProj = OptimizeOrthographicMatrix(projMat); + + // Project the center of the bounding sphere (ellipse). + float3 projC = mul(orthoProj, float4(C.xyz, 1)).xyz; + // Test whether the light's center is inside the view volume. + trivialAccept = all(aaBbMinPtCS <= projC && projC <= aaBbMaxPtCS); + + if (!trivialAccept) + { + float2 projExtents = mul(orthoProj, float4(r.xx, 0, 0)).xy; // Axis-aligned ellipse + + // Make them relative to the ellipse. + aaBbMinPtCS.xy -= projC.xy; + aaBbMaxPtCS.xy -= projC.xy; + + // Transform the ellipse into a unit circle. + aaBbMinPtCS.xy *= rcp(projExtents); + aaBbMaxPtCS.xy *= rcp(projExtents); + + // Compute the distance from the center of the sphere (at the origin) to the AABB. + float sqDist = SqDistToClosestPointAaBb(0, aaBbMinPtCS.xy, aaBbMaxPtCS.xy); + + trivialReject = sqDist > 1; + } + } + else if (C.z > 0) // Perspective; the sphere is in front of the origin + { + float4x4 perspProj = OptimizePerspectiveMatrix(projMat); + + // Project the center of the bounding sphere (ellipse). + float3 projC = mul(perspProj, float4(C.xyz, 1)).xyz * rcp(C.z); // Assume M[3] = (0,0,1,0) + // Test whether the light's center is inside the view volume. + trivialAccept = all(aaBbMinPtCS <= projC && projC <= aaBbMaxPtCS); + + if (!trivialAccept && (dot(C, C) - r * r) > 0) + { + // Find the closest point inside the AABB. + float2 projQ = ClosestPointAaBb(projC.xy, aaBbMinPtCS.xy, aaBbMaxPtCS.xy); + + // Unproject the closest point (Q') into the view space (Q). + // Inverse of an arbitrary perspective projection matrix looks like this: + // | x 0 0 x | + // | 0 x 0 x | + // | 0 0 0 1 | + // | x x x x | + // Q.x = (InvProj._11 * Q'.x + InvProj._14) / Q.w + // Q.y = (InvProj._22 * Q'.y + InvProj._24) / Q.w + // Q.z = 1 / Q.w + // We don't need to normalize. + + float3 Q; + Q.x = (invProjMat._11 * projQ.x + invProjMat._14); + Q.y = (invProjMat._22 * projQ.y + invProjMat._24); + Q.z = 1; // Near plane with reversed Z-buffering + + #if 0 + // Compute the angle of the bounding cone. + float sinAlpha = r * rsqrt(dot(C, C)); + float cosAlpha = sqrt(1 - sinAlpha * sinAlpha); + // Compute the angle between OC and OQ. + float cosBeta = dot(C, Q) * rsqrt(dot(C, C) * dot(Q, Q)); + + trivialReject = cosBeta < cosAlpha; + #else + // Same, but faster. + trivialReject = dot(C, Q) < sqrt(dot(Q, Q) * (dot(C, C) - r * r)); + #endif + } + } + } + else // if ((C.z + r) <= 0) + { + trivialReject = true; + } +} + +void TryCullBoundingFrustum(float3 rbpC, float3 rbpX, float3 rbpY, float3 rbpZ, float scale, float radius, uint tile, + uint t /* thread */, uint threadIdx, + float3 cubeMinCS, float3 cubeMaxCS, float4x4 projMat, float4x4 invProjMat, + out bool trivialAccept, out bool trivialReject) +{ + trivialAccept = trivialReject = false; + + const uint baseVertexOffset = tile * NUM_VERTS; + +#ifndef PLATFORM_SUPPORTS_WAVE_INTRINSICS + // (0) Initialize the TGSM. + if (t == 0) // Avoid bank conflicts + { + gs_CullClipFaceMasks[tile] = 0; // Initially all faces are assumed to be inside + gs_CulledFaceMasks[tile] = 0; // Initially none + gs_TrivialAcceptFlags[tile] = (uint)false; // Initially false + } +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + + // We must determine whether we have to clip or cull any of the faces. + // If all vertices of a face are inside with respect to all the culling planes, + // we can trivially accept that face. If all vertices of a face are behind + // any single plane, we can trivially reject (cull) that face. + uint cullClipFaceMask = 0; // Initially inside + + uint i; // Avoid the multiply-declared variable warning + + // (1) Compute the vertices of the bounding frustum. + for (i = 0; i < VERTS_PER_THREAD; i++) + { + uint v = t + i * THREADS_PER_TILE; + + // rbpVerts[0] = rbpC - rbpX * scale - rbpY * scale - rbpZ; (-s, -s, -1) + // rbpVerts[1] = rbpC + rbpX * scale - rbpY * scale - rbpZ; (+s, -s, -1) + // rbpVerts[2] = rbpC - rbpX * scale + rbpY * scale - rbpZ; (-s, +s, -1) + // rbpVerts[3] = rbpC + rbpX * scale + rbpY * scale - rbpZ; (+s, +s, -1) + // rbpVerts[4] = rbpC - rbpX - rbpY + rbpZ; (-1, -1, +1) + // rbpVerts[5] = rbpC + rbpX - rbpY + rbpZ; (+1, -1, +1) + // rbpVerts[6] = rbpC - rbpX + rbpY + rbpZ; (-1, +1, +1) + // rbpVerts[7] = rbpC + rbpX + rbpY + rbpZ; (+1, +1, +1) + + float3 m = GenerateVertexOfStandardCube(v); + m.xy *= ((v & 4) == 0) ? scale : 1; // X, Y in [-scale, scale] + + float3 rbpVertRVS = m.x * rbpX + m.y * rbpY + m.z * rbpZ; + float3 rbpVertVS = rbpC + rbpVertRVS; + // Avoid generating (w = 0). + rbpVertVS.z = (abs(rbpVertVS.z) > FLT_MIN) ? rbpVertVS.z : FLT_MIN; + + // For the orthographic projection, the resulting (w = 1). + float4 hapVertCS = mul(projMat, float4(rbpVertVS, 1)); + + const float3 hapAaBbMinPt = cubeMinCS * hapVertCS.w; + const float3 hapAaBbMaxPt = cubeMaxCS * hapVertCS.w; + + // For each vertex, we must determine whether it is within the bounds. + // For culling and clipping, we must know, per culling plane, whether the vertex + // is in the positive or the negative half-space. + uint behindMask = 0; // Initially in front + + // TODO: add epsilon for numerical robustness? + for (uint j = 0; j < (NUM_CLIP_PLANES / 2); j++) + { + // Test: dot(frustumPlane, hapVertCS) < 0: + // (x < -w), (x > w), (y < -w), (y > w), (z < 0), (z > w). + behindMask |= ((hapVertCS[j] < hapAaBbMinPt[j]) ? 1 : 0) << (2 * j + 0); + behindMask |= ((hapVertCS[j] > hapAaBbMaxPt[j]) ? 1 : 0) << (2 * j + 1); + } + + if (behindMask == 0) // Inside? + { + // The vertex of the bounding frustum is inside the viewing frustum. + // But is it also inside the bounding sphere? + trivialAccept = trivialAccept || (dot(rbpVertRVS, rbpVertRVS) <= (radius * radius)); + } + else // Outside + { + // Mark all the faces of the bounding frustum associated with this vertex. + cullClipFaceMask |= GetFaceMaskOfVertex(v); + } + + gs_HapVertsX[baseVertexOffset + v] = hapVertCS.x; + gs_HapVertsY[baseVertexOffset + v] = hapVertCS.y; + gs_HapVertsZ[baseVertexOffset + v] = hapVertCS.z; + gs_HapVertsW[baseVertexOffset + v] = hapVertCS.w; + gs_BehindMasksOfVerts[baseVertexOffset + v] = behindMask; + } + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + for (i = 0; i < FastLog2(THREADS_PER_TILE); i++) + { + uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes + uint orMask = 0; // Plays no role + uint xorMask = 1 << i; // Flip bits one by one starting from the LSB + + cullClipFaceMask |= LaneSwizzle(cullClipFaceMask, andMask, orMask, xorMask); + trivialAccept = trivialAccept || LaneSwizzle(trivialAccept, andMask, orMask, xorMask); + } + + GroupMemoryBarrier(); // Wait for writes to gs_BehindMasksOfVerts, gs_HapVerts +#else + InterlockedOr(gs_CullClipFaceMasks[tile], cullClipFaceMask); + InterlockedOr(gs_TrivialAcceptFlags[tile], (uint)trivialAccept); + + GroupMemoryBarrier(); // Wait for writes to gs_TrivialAcceptFlags, gs_CullClipFaceMasks, gs_BehindMasksOfVerts, gs_HapVerts + + cullClipFaceMask = gs_CullClipFaceMasks[tile]; + trivialAccept = (bool)gs_TrivialAcceptFlags[tile]; +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + + if (trivialAccept || trivialReject) return; + + // (2) Test the corners of the view volume. + if (cullClipFaceMask != 0) + { + // The entity is partially outside the view volume. + // Therefore, some of the corners of the view volume may be inside the entity's bounding frustum. + // Since we cull faces that are outside the view volume, so we must make sure its corners are accounted for. + // We can exploit the properties of the frustum by building an entity-space projection matrix. + // P_v = T * (R * S) * P_l + // P_l = (R * S)^{-1} * T^{-1} * P_v + float4x4 invTranslateToEntitySpace = Translation4x4(-rbpC); + float4x4 invRotateAndScaleInEntitySpace = Homogenize3x3(Invert3x3(ScaledRotation3x3(rbpX, rbpY, rbpZ))); + + // This (orthographic) projection matrix maps a view-space point to a entity-space [-1, 1]^3 cube. + float4x4 entitySpaceMatrix = mul(invRotateAndScaleInEntitySpace, invTranslateToEntitySpace); + + if (scale != 1) // Perspective entity space? + { + // Compute the parameters of the perspective projection. + float s = scale; + float n = 2 * (s * rcp(1 - s)); // Distance from the eye to the near plane + float f = 2 + n; // Distance from the eye to the far plane + float g = f; // Distance from the eye to the projection plane + float e = -1 - n; // Signed distance from the origin to the eye + + float4x4 invTranslateEye = Translation4x4(float3(0, 0, -e)); + float4x4 perspProjMatrix = PerspectiveProjection4x4(1, g, n, f); + + entitySpaceMatrix = mul(mul(perspProjMatrix, invTranslateEye), entitySpaceMatrix); + } + + for (i = 0; i < VERTS_PER_THREAD; i++) + { + uint v = t + i * THREADS_PER_TILE; + + float3 rapVertCS = GenerateVertexOfCustomCube(v, cubeMinCS, cubeMaxCS); + float4 hbpVertVS = mul(invProjMat, float4(rapVertCS, 1)); // Clip to view space + float4 hapVertLS = mul(entitySpaceMatrix, hbpVertVS); // View to entity space + + // TODO: add epsilon for numerical robustness? + bool inside = Max3(abs(hapVertLS.x), abs(hapVertLS.y), abs(hapVertLS.z)) < hapVertLS.w; + + if (inside) + { + float3 rbpVertRVS = hbpVertVS.xyz * rcp(hbpVertVS.w) - rbpC; + // The vertex of the viewing frustum is inside the bounding frustum. + // But is it also inside the bounding sphere? + trivialAccept = trivialAccept || (dot(rbpVertRVS, rbpVertRVS) <= (radius * radius)); + } + } + } + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + for (i = 0; i < FastLog2(THREADS_PER_TILE); i++) + { + uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes + uint orMask = 0; // Plays no role + uint xorMask = 1 << i; // Flip bits one by one starting from the LSB + + trivialAccept = trivialAccept || LaneSwizzle(trivialAccept, andMask, orMask, xorMask); + } +#else + InterlockedOr(gs_TrivialAcceptFlags[tile], (uint)trivialAccept); + + GroupMemoryBarrier(); // Wait for writes to gs_TrivialAcceptFlags + + trivialAccept = (bool)gs_TrivialAcceptFlags[tile]; +#endif // PLATFORM_SUPPORTS_WAVE_INTRINSICS + + if (trivialAccept || trivialReject) return; + + // (3) Cull the faces. + uint culledFaceMask = 0; // Initially none + + if (cullClipFaceMask != 0) + { + const uint cullFaceMask = cullClipFaceMask; + const uint numFacesToCull = countbits(cullFaceMask); // [0, 6] + + for (i = 0; i < FACES_PER_THREAD; i++) + { + uint n = t + i * THREADS_PER_TILE; + + if (n < numFacesToCull) + { + uint f = NthBitLow(cullFaceMask, n); + + if (TryCullFace(f, baseVertexOffset)) + { + culledFaceMask |= 1 << f; + } + } + } + } + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + for (i = 0; i < FastLog2(THREADS_PER_TILE); i++) + { + uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes + uint orMask = 0; // Plays no role + uint xorMask = 1 << i; // Flip bits one by one starting from the LSB + + culledFaceMask |= LaneSwizzle(culledFaceMask, andMask, orMask, xorMask); + } +#else + InterlockedOr(gs_CulledFaceMasks[tile], culledFaceMask); + + GroupMemoryBarrier(); // Wait for writes to gs_CulledFaceMasks + + culledFaceMask = gs_CulledFaceMasks[tile]; +#endif + + if (culledFaceMask == FACE_MASK) + { + // If we culled all the faces, there are 2 possibilities: + // 1. The bounding frustum is entirely outside the view frustum. + // -> We can safely reject this entity. + // 2. The bounding frustum is entirely inside the view frustum. + // 3. The view frustum is entirely inside the bounding frustum. + // -> We can safely accept this entity. + // Case 2 has been handled inside TryCullBoundingSphere. + // Case 3 has been handled in this function, above. + // So the only remaining possibility is Case 1. + trivialReject = true; + } + + if (trivialAccept || trivialReject) return; + + cullClipFaceMask &= ~culledFaceMask; + + // (4) Clip the faces. + if (cullClipFaceMask != 0) + { + const uint clipFaceMask = cullClipFaceMask; + const uint numFacesToClip = countbits(clipFaceMask); // [0, 6] + + for (i = 0; i < FACES_PER_THREAD; i++) + { + uint n = t + i * THREADS_PER_TILE; + + if (n < numFacesToClip) + { + uint f = NthBitLow(clipFaceMask, n); + + uint srcBegin, srcSize; + float4 vertRingBuffer[MAX_CLIP_VERTS]; + if (ClipFaceAgainstCube(f, cubeMinCS, cubeMaxCS, baseVertexOffset, + srcBegin, srcSize, vertRingBuffer, threadIdx)) + { + culledFaceMask |= 1 << f; + } + else + { + // May not trivially accept here unless it also lies within the bounding sphere. + } + } + } + } + +#ifdef PLATFORM_SUPPORTS_WAVE_INTRINSICS + for (i = 0; i < FastLog2(THREADS_PER_TILE); i++) + { + uint andMask = PLATFORM_LANE_COUNT - 1; // All lanes + uint orMask = 0; // Plays no role + uint xorMask = 1 << i; // Flip bits one by one starting from the LSB + + culledFaceMask |= LaneSwizzle(culledFaceMask, andMask, orMask, xorMask); + } +#else + InterlockedOr(gs_CulledFaceMasks[tile], culledFaceMask); + + GroupMemoryBarrier(); // Wait for writes to gs_TrivialAcceptFlags, gs_CulledFaceMasks + + culledFaceMask = gs_CulledFaceMasks[tile]; +#endif + + if (culledFaceMask == FACE_MASK) + { + // If we culled all the faces, there are 2 possibilities: + // 1. The bounding frustum is entirely outside the view frustum. + // -> We can safely reject this entity. + // 2. The bounding frustum is entirely inside the view frustum. + // 3. The view frustum is entirely inside the bounding frustum. + // -> We can safely accept this entity. + // Case 2 has been handled inside TryCullBoundingSphere. + // Case 3 has been handled in this function, above. + // So the only remaining possibility is Case 1. + trivialReject = true; + } +} + +bool TryCullEntity(uint entityIndex, uint category, uint eye, float3 tileAaBbMinPtCS, float3 tileAaBbMaxPtCS, uint tile, uint t /* thread */, uint threadIdx) +{ + const float4x4 projMat = g_mProjectionArr[eye]; // For the entire view frustum + const float4x4 invProjMat = g_mInvProjectionArr[eye]; // For the entire view frustum + + const uint bufferIndex = ComputeEntityBoundsBufferIndex(entityIndex, category, eye); + const FiniteLightBound cullData = _EntityBoundsBuffer[bufferIndex]; + + // Bounding frustum. + const float3 rbpC = cullData.center.xyz; // View-space + const float3 rbpX = cullData.boxAxisX.xyz; // Pre-scaled + const float3 rbpY = cullData.boxAxisY.xyz; // Pre-scaled + const float3 rbpZ = cullData.boxAxisZ.xyz; // Pre-scaled + const float scale = cullData.scaleXY; // scale.x = scale.y + // Bounding sphere. + const float radius = cullData.radius; + + bool trivialAccept = false, trivialReject = false; + + if (radius > 0) + { + TryCullBoundingSphere(rbpC, radius, tileAaBbMinPtCS, tileAaBbMaxPtCS, projMat, invProjMat, + trivialAccept, trivialReject); + } + + if (!(trivialAccept || trivialReject)) + { + TryCullBoundingFrustum(rbpC, rbpX, rbpY, rbpZ, scale, radius, tile, t, threadIdx, + tileAaBbMinPtCS, tileAaBbMaxPtCS, projMat, invProjMat, + trivialAccept, trivialReject); + } + + return trivialReject; +} + +#if (PASS == PRUNE_COARSE_TILES) + +// ************************************************************************************************* +// At this point, each tile has a list of conservatively selected entities. +// The idea it to spend a few more clock cycles to remove entities that do not belong to the tile. +// We use roughly the same idea as in 'scrbound.compute': +// we test the bounding volume of the entity against the mini-frustum of the tile. +// The difference is that this time we do not need to compute the AABB. +// Thus, there is a "slow" path and a "fast" path. The fast path includes "trivial" accept and reject. +// If we cannot find a way to accept or reject a tile with certainty, we must conservatively keep it. +// ************************************************************************************************* + +[numthreads(THREADS_PER_TILE, TILES_PER_GROUP, 1)] +void PruneCoarseTiles(uint3 threadID : SV_GroupThreadID, uint3 groupID : SV_GroupID, uint threadIdx : SV_GroupIndex) +{ + // TODO: swizzle blocks of tiles to improve locality & reduce divergence at the cost of padding? + const uint t = threadID.x; + const uint tile = threadID.y; + const uint g = groupID.x; + const uint cat = groupID.y; + const uint eye = groupID.z; + + UNITY_XR_ASSIGN_VIEW_INDEX(eye); + + const uint dwordCount = _BoundedEntityDwordCountPerCategory[cat].x; + + if (dwordCount == 0) return; + + const uint globalTileIndex = IndexFromCoordinate(uint2(tile, g), TILES_PER_GROUP); + const uint clampedTileIndex = min(globalTileIndex, TILE_BUFFER_DIMS.x * TILE_BUFFER_DIMS.y - 1); + const uint2 clampedTileCoord = CoordinateFromIndex(clampedTileIndex, TILE_BUFFER_DIMS.x); // TODO: avoid integer division + + // Helper threads may perform the same computation on valid data, + // but do not store the results of the computation to memory. + const bool isHelperThread = globalTileIndex != clampedTileIndex; + + if (isHelperThread) return; // Avoid adding too many checks or branches below + + const uint tileBufferIndex = ComputeTileBufferIndex(clampedTileIndex, cat, eye); + +#if USE_DEPTH_BUFFER + const float farthestDepth = LOAD_TEXTURE2D_X(_DepthPyramidBuffer, _DepthPyramidMipLevelOffsetCoarse + clampedTileCoord).r; +#else + const float farthestDepth = 0; +#endif + + const uint2 tileAaBbMinPtSS = clampedTileCoord * TILE_SIZE; + const uint2 tileAaBbMaxPtSS = tileAaBbMinPtSS + TILE_SIZE; // (tileCoord + 1) * TILE_SIZE + const float2 tileAaBbMinPtNDC = tileAaBbMinPtSS * _ScreenSize.zw; // Divide + const float2 tileAaBbMaxPtNDC = saturate(tileAaBbMaxPtSS * _ScreenSize.zw); // Divide and clamp to the edge + const float3 tileAaBbMinPtCS = float3(tileAaBbMinPtNDC * 2 - 1, farthestDepth); + const float3 tileAaBbMaxPtCS = float3(tileAaBbMaxPtNDC * 2 - 1, 1); + + for (uint d = 0; d < dwordCount; d++) + { + uint inputDword = _SrcCoarseTileBuffer[tileBufferIndex + d]; + uint outputDword = 0; // Initially empty + + while (inputDword != 0) + { + uint b = firstbitlow(inputDword); + uint i = d * 32 + b; + + if (!TryCullEntity(i, cat, eye, tileAaBbMinPtCS, tileAaBbMaxPtCS, tile, t, threadIdx)) + { + outputDword |= 1 << b; + } + + inputDword ^= 1 << b; // Clear the bit to continue using firstbitlow() + } + + _DstCoarseTileBuffer[tileBufferIndex + d] = outputDword; + } +} + +#endif // (PASS == PRUNE_COARSE_TILES) + +#if (PASS == FILL_FINE_TILES) + +#if IS_MULTIPLE(COARSE_TILE_SIZE, FINE_TILE_SIZE) + #error "COARSE_TILE_SIZE must be an integer multiple of FINE_TILE_SIZE." +#endif + +// Caution: generic tile macros (such as TILES_PER_GROUP) used below correspond to COARSE_BINNING. +// Still, by TILES_PER_GROUP, we mean fine tiles (hence 'FillFineTiles'). +[numthreads(THREADS_PER_TILE, TILES_PER_GROUP, 1)] +void FillFineTiles(uint3 threadID : SV_GroupThreadID, uint3 groupID : SV_GroupID, uint threadIdx : SV_GroupIndex) +{ + const uint t = threadID.x; + const uint tile = threadID.y; + const uint g = groupID.x; + const uint cat = groupID.y; + const uint eye = groupID.z; + + UNITY_XR_ASSIGN_VIEW_INDEX(eye); + + const uint dwordCount = _BoundedEntityDwordCountPerCategory[cat].x; + + if (dwordCount == 0) return; + + const uint coarseToFineSizeRatio = COARSE_TILE_SIZE / FINE_TILE_SIZE; + const uint fineTilesPerCoarseTile = Sq(coarseToFineSizeRatio); + const uint globalCoarseTileIndex = (g * TILES_PER_GROUP) / fineTilesPerCoarseTile; // = g; (wave-uniform) + const uint clampedCoarseTileIndex = min(globalCoarseTileIndex, COARSE_TILE_BUFFER_DIMS.x * COARSE_TILE_BUFFER_DIMS.y - 1); + const uint2 clampedCoarseTileCoord = CoordinateFromIndex(clampedCoarseTileIndex, COARSE_TILE_BUFFER_DIMS.x); // TODO: avoid integer division + + // Within the coarse tile, we process fine tiles in the scan line order. + // Of course, both coarse and fine tiles are arranged linearly in memory. + const uint localFineTileIndex = (g * TILES_PER_GROUP) % fineTilesPerCoarseTile + tile; // = tile; + const uint2 localFineTileCoord = CoordinateFromIndex(localFineTileIndex, coarseToFineSizeRatio); + const uint2 globalFineTileCoord = clampedCoarseTileCoord * coarseToFineSizeRatio + localFineTileCoord; + const uint2 clampedFineTileCoord = min(globalFineTileCoord, FINE_TILE_BUFFER_DIMS - 1); + const uint clampedFineTileIndex = IndexFromCoordinate(clampedFineTileCoord, FINE_TILE_BUFFER_DIMS.x); + + // Helper threads may perform the same computation on valid data, + // but do not store the results of the computation to memory. + const bool isHelperThread = (globalCoarseTileIndex != clampedCoarseTileIndex) || any(globalFineTileCoord != clampedFineTileCoord); + + if (isHelperThread) return; // Avoid adding too many checks or branches below + +#if USE_DEPTH_BUFFER + const float farthestDepth = LOAD_TEXTURE2D_X(_DepthPyramidBuffer, _DepthPyramidMipLevelOffsetFine + clampedFineTileCoord).r; +#else + const float farthestDepth = 0; +#endif + + const uint2 fineTileAaBbMinPtSS = clampedFineTileCoord * FINE_TILE_SIZE; + const uint2 fineTileAaBbMaxPtSS = fineTileAaBbMinPtSS + FINE_TILE_SIZE; // (tileCoord + 1) * TILE_SIZE + const float2 fineTileAaBbMinPtNDC = fineTileAaBbMinPtSS * _ScreenSize.zw; // Divide + const float2 fineTileAaBbMaxPtNDC = saturate(fineTileAaBbMaxPtSS * _ScreenSize.zw); // Divide and clamp to the edge + const float3 fineTileAaBbMinPtCS = float3(fineTileAaBbMinPtNDC * 2 - 1, farthestDepth); + const float3 fineTileAaBbMaxPtCS = float3(fineTileAaBbMaxPtNDC * 2 - 1, 1); + + // We must specify the size explicitly. + const uint coarseTileBufferIndex = ComputeTileBufferIndex(clampedCoarseTileIndex, cat, eye, COARSE_TILE_BUFFER_DIMS); + const uint fineTileBufferIndex = ComputeTileBufferIndex( clampedFineTileIndex, cat, eye, FINE_TILE_BUFFER_DIMS); + + for (uint d = 0; d < dwordCount; d++) + { + uint inputDword = _CoarseTileBuffer[coarseTileBufferIndex + d]; + uint outputDword = 0; // Initially empty + + while (inputDword != 0) + { + uint b = firstbitlow(inputDword); + uint i = d * 32 + b; + + if (!TryCullEntity(i, cat, eye, fineTileAaBbMinPtCS, fineTileAaBbMaxPtCS, tile, t, threadIdx)) + { + outputDword |= 1 << b; + } + + inputDword ^= 1 << b; // Clear the bit to continue using firstbitlow() + } + + _FineTileBuffer[fineTileBufferIndex + d] = outputDword; + } +} + +#endif // (PASS == FILL_FINE_TILES) + +#endif // (PASS != FILL_COARSE_TILES) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute.meta new file mode 100644 index 00000000000..b411db6ecd4 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/tile.compute.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3a8709910066b4d4186b56721cdc36aa +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 2097156 + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute new file mode 100644 index 00000000000..cd5681e8588 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute @@ -0,0 +1,145 @@ +// #pragma enable_d3d11_debug_symbols +#pragma only_renderers d3d11 playstation xboxone vulkan metal switch + +#pragma kernel main + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition-config/Runtime/ShaderConfig.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl" +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/TilingAndBinningUtilities.hlsl" + +/* ------------------------------ Inputs ------------------------------------ */ + +// 1x list for all entites (sorted by category, we concatenate lists of all views). +StructuredBuffer _wBoundsBuffer; // {w_min, w_max} + +/* ------------------------------ Outputs ----------------------------------- */ + +// 1x list for all entites (sorted by category, we concatenate lists of all views). +// The size of the buffer can be computed as follows: +// Z_BIN_COUNT * s_TileEntryLimit / 32 * EYE_COUNT * sizeof(UINT). +// For example (1080p): 8192 * 256 / 32 * 1 * 4 = 256KiB +// For categories that can be depth sorted there is a single DWORD per zbin +// where last and first entity indices packed as follows {last << 16 | first} +RWStructuredBuffer _zBinBuffer; + +/* ------------------------------ Utilities --------------------------------- */ + +/* ------------------------------ Implementation ---------------------------- */ + +float2 ComputeZBinLinearDepthBounds(uint bin, float farPlane) +{ + float2 bBounds = float2(bin, bin + 1); + float2 zBounds = saturate(bBounds * rcp(Z_BIN_COUNT)); + float2 wBounds = zBounds * farPlane; + + return wBounds; // TODO: add epsilon for numerical robustness? +} + +#define THREADS_PER_GROUP (64) + +#if IS_MULTIPLE(Z_BIN_COUNT, THREADS_PER_GROUP) + #error "Z_BIN_COUNT must be an integer multiple of THREADS_PER_GROUP." +#endif + +[numthreads(THREADS_PER_GROUP, 1, 1)] +void main(uint threadID : SV_GroupIndex, uint3 groupID : SV_GroupID) +{ + const uint t = threadID; + const uint g = groupID.x; + const uint cat = groupID.y; + const uint eye = groupID.z; + + const uint bin = IndexFromCoordinate(uint2(t, g), THREADS_PER_GROUP); + + // Entities are sorted by category. + const uint entityIndex = _BoundedEntityOffsetPerCategory[cat].x; + const uint entityCount = _BoundedEntityCountPerCategory[cat].x; + + if (entityCount > 0) // Avoid wasted work + { + const float2 binBounds = ComputeZBinLinearDepthBounds(bin, rcp(_ZBufferParams.w)); + const uint inputStart = ComputeEntityBoundsBufferIndex(entityIndex, eye); + + if (!IsDepthSorted(cat)) // not sorted by depth + { + const uint ZBinBufferOffset = ComputeZBinBufferIndex(bin, cat, eye); + uint entityOffset = 0; + uint entityMask = 0; + for (uint i = 0; i < entityCount; i++) + { + uint newEntityOffset = i / 32; + if (newEntityOffset > entityOffset) + { + _zBinBuffer[ZBinBufferOffset + entityOffset] = entityMask; + entityMask = 0; + entityOffset = newEntityOffset; + } + float2 entityBounds = _wBoundsBuffer[inputStart + i]; + // !((entityBounds.y < binBounds.x) || (binBounds.y < entityBounds.x)) + if ((entityBounds.y >= binBounds.x) && (binBounds.y >= entityBounds.x)) // overlap + { + entityMask |= (1 << i); + } + } + // make sure we store the last dword + _zBinBuffer[ZBinBufferOffset + entityOffset] = entityMask; + } + else //sorted by depth + { + // Imagine that we have n entities in this category. + // In this case, entity indices would be in the range [0, n - 1]. + // Entities are (approximately) sorted by the z-coordinate. + // "Classically" (as per Drobot's presentation), if entities with indices + // in the closed interval [a, b] overlap the bin, we store {a, b}. + // If no entities overlap the bin, we store {65535, 0}. + // For queries over z-ranges, this method has a disadvantage, since if the bin is empty, + // we have no information about the entities that surround the bin. + // What we would like to store instead is (signed) indices {left, right} = {a - 1, b + 1}. + // This means we include the largest index (on the left) before we add anything to the bin + // and the smallest index (on the right) after we are done adding everything to the bin + // (or we just went past the bin without adding anything). + // In practice, we iterate over [a, b], but the important part is how we compute these numbers. + int left = -1, right = (int)entityCount; + bool isEmpty = true; + + // The algorithm is O(n * m) where 'n' is the entity count and 'm' is bin count. + // Therefore, it will be slow if 'n' is large. + // TODO: we should consider a sorting-based algorithm, which could be closer to O((n + m) * log(n)). + // TODO: unroll. + for (uint i = 0; i < entityCount; i++) + { + float2 entityBounds = _wBoundsBuffer[inputStart + i]; + + if (entityBounds.y < binBounds.x) + { + // No overlap (entity on the left of the bin). + left = isEmpty ? (int)i : left; + } + else if (binBounds.y < entityBounds.x) + { + // No overlap (entity on the right of the bin). + right = min((int)i, right); + } + else + { + // Overlap. + isEmpty = false; + right = (int)i + 1; + } + } + uint outputIndex = ComputeZBinBufferIndex(bin, cat, eye); + + // Before (open interval): + // left >= -1, right >= 0. + uint first = (uint)(left + 1); + uint last = (uint)(right - 1); // -1 becomes 0xFFFF + // After (closed interval): + // first >= 0, last >= -1. + uint outputRange = (last << 16) | first; + + _zBinBuffer[outputIndex] = outputRange; + } + } +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute.meta b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute.meta new file mode 100644 index 00000000000..d005afb5710 --- /dev/null +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/zbin.compute.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 313c8dc48c577184997e1c10638c6499 +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 2097156 + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/GTAOTemporalDenoise.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/GTAOTemporalDenoise.compute index e2e18913a50..2adf4155364 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/GTAOTemporalDenoise.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/GTAOTemporalDenoise.compute @@ -62,7 +62,7 @@ void TemporalDenoise(uint3 dispatchThreadId : SV_DispatchThreadID) float currDepth, currAO; UnpackData(currFrameData, currAO, currDepth); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(8, 8)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); #if HALF_RES float2 closest = posInputs.positionSS * 2; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceGlobalIllumination.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceGlobalIllumination.compute index 8f032a8a5fb..79b901d429d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceGlobalIllumination.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceGlobalIllumination.compute @@ -237,7 +237,7 @@ void TRACE_GLOBAL_ILLUMINATION(uint3 dispatchThreadId : SV_DispatchThreadID, uin // If this is a background pixel, we flag the ray as a dead ray (we are also trying to keep the usage of the depth buffer the latest possible) bool killRay = deviceDepth == UNITY_RAW_FAR_CLIP_VALUE; // Convert this to a world space position (camera relative) - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, deviceDepth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, deviceDepth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view direction (world space) float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceReflections.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceReflections.compute index 4ba7e6606d5..c3787f5e699 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceReflections.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/ScreenSpaceLighting/ScreenSpaceReflections.compute @@ -572,7 +572,7 @@ void ScreenSpaceReflectionsReprojection(uint3 dispatchThreadId : SV_DispatchThre float depthOrigin = LOAD_TEXTURE2D_X(_CameraDepthTexture, positionSS0.xy).r; #endif - PositionInputs posInputOrigin = GetPositionInput(positionSS0.xy, _ScreenSize.zw, depthOrigin, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, uint2(8, 8)); + PositionInputs posInputOrigin = GetPositionInput(positionSS0.xy, _ScreenSize.zw, depthOrigin, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); float3 originWS = posInputOrigin.positionWS + _WorldSpaceCameraPos; // TODO: this texture is sparse (mostly black). Can we avoid reading every texel? How about using Hi-S? diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.compute index b9190c95c2e..b9dbf5cc3f5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.compute @@ -6,11 +6,11 @@ # pragma argument( scheduler=minpressure ) // instruct the shader compiler to prefer minimizing vgpr usage #endif +#define FINE_BINNING // Required as we go over light list to determine contact shadow + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" - -#define USE_FPTL_LIGHTLIST // Use light tiles for contact shadows #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.hlsl" @@ -169,8 +169,6 @@ void DeferredContactShadow(uint2 groupThreadId : SV_GroupThreadID, uint2 groupId UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); uint2 pixelCoord = groupId * DEFERRED_SHADOW_TILE_SIZE + groupThreadId; - // There might be a mismatch between the size of a tile and the group size of this shader. - uint2 tileCoord = groupId * (DEFERRED_SHADOW_TILE_SIZE / TILE_SIZE_FPTL); #ifdef ENABLE_MSAA float depth = LOAD_TEXTURE2D_X(_CameraDepthValues, pixelCoord.xy).z; @@ -178,7 +176,7 @@ void DeferredContactShadow(uint2 groupThreadId : SV_GroupThreadID, uint2 groupId float depth = LoadCameraDepth(pixelCoord.xy); #endif - PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V, tileCoord); + PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); // discard the shadow if we're on the sky or outside of the contact shadow range if (depth == UNITY_RAW_FAR_CLIP_VALUE || posInput.linearDepth - _ContactShadowFadeEnd > 1 || posInput.linearDepth < _ContactShadowMinDistance) @@ -202,7 +200,7 @@ void DeferredContactShadow(uint2 groupThreadId : SV_GroupThreadID, uint2 groupId { if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; if (light.contactShadowMask != 0 && light.isRayTracedContactShadow == 0.0) { @@ -217,57 +215,30 @@ void DeferredContactShadow(uint2 groupThreadId : SV_GroupThreadID, uint2 groupId } } - // iterate over all point/spot lights - if (featureFlags & LIGHTFEATUREFLAGS_PUNCTUAL) - { - uint lightCount, lightStart; + uint zBin = ComputeZBinIndex(posInput.linearDepth); + uint tile = ComputeTileIndex(posInput.positionSS); -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_PUNCTUAL, lightStart, lightCount); -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - lightCount = _PunctualLightCount; - lightStart = 0; -#endif - uint startFirstLane = 0; - bool fastPath; + EntityLookupParameters params = InitializePunctualLightLookup(tile, zBin); - fastPath = IsFastPath(lightStart, startFirstLane); - if (fastPath) - { - lightStart = startFirstLane; - } + uint i = 0; - uint v_lightIdx = lightStart; - uint v_lightListOffset = 0; - while (v_lightListOffset < lightCount) + LightData lightData; + while (TryLoadPunctualLightData(i, params, lightData)) + { + if (lightData.contactShadowMask != 0 && lightData.isRayTracedContactShadow == 0.0) { - v_lightIdx = FetchIndex(lightStart, v_lightListOffset); - uint s_lightIdx = ScalarizeElementIndex(v_lightIdx, fastPath); - if (s_lightIdx == -1) - break; + // Compute light ray direction: + float3 direction = normalize(lightData.positionRWS.xyz - posInput.positionWS); - LightData s_lightData = FetchLight(s_lightIdx); + bool occluded = ComputeContactShadow(posInput, direction, globalFade); - // If current scalar and vector light index match, we process the light. The v_lightListOffset for current thread is increased. - // Note that the following should really be ==, however, since helper lanes are not considered by WaveActiveMin, such helper lanes could - // end up with a unique v_lightIdx value that is smaller than s_lightIdx hence being stuck in a loop. All the active lanes will not have this problem. - if (s_lightIdx >= v_lightIdx) - { - v_lightListOffset++; - if (s_lightData.contactShadowMask != 0 && s_lightData.isRayTracedContactShadow == 0.0) - { - // Compute light ray direction: - float3 direction = normalize(s_lightData.positionRWS.xyz - posInput.positionWS); - - bool occluded = ComputeContactShadow(posInput, direction, globalFade); - - // light.contactShadowMask contains one bit at the position of the contact shadow index that will - // be tested in the lightloop, so it insert 1 at the index of the contact shadow if there is a contact shadow - // we take full bits at one multiplied by contact shadow and filter the bit at the contact shadow index. - contactShadowMask |= s_lightData.contactShadowMask * occluded; - } - } + // light.contactShadowMask contains one bit at the position of the contact shadow index that will + // be tested in the lightloop, so it insert 1 at the index of the contact shadow if there is a contact shadow + // we take full bits at one multiplied by contact shadow and filter the bit at the contact shadow index. + contactShadowMask |= lightData.contactShadowMask * occluded; } + + i++; } _ContactShadowTextureUAV[COORD_TEXTURE2D_X(pixelCoord)] = PackContactShadowData(globalFade, contactShadowMask); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.RenderGraph.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.RenderGraph.cs index 74be442863e..6b81e8e5d9a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.RenderGraph.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.RenderGraph.cs @@ -85,6 +85,8 @@ bool RenderLightScreenSpaceShadows(RenderGraph renderGraph, HDCamera hdCamera, PrepassOutput prepassOutput, TextureHandle depthBuffer, TextureHandle normalBuffer, TextureHandle motionVectorsBuffer, TextureHandle historyValidityBuffer, TextureHandle rayCountTexture, TextureHandle screenSpaceShadowArray) { + m_ScreenSpaceShadowsLightData.SetData(m_CurrentScreenSpaceShadowLightData); + // Loop through all the potential screen space light shadows for (int lightIdx = 0; lightIdx < m_ScreenSpaceShadowIndex; ++lightIdx) { @@ -92,7 +94,7 @@ bool RenderLightScreenSpaceShadows(RenderGraph renderGraph, HDCamera hdCamera, if (!m_CurrentScreenSpaceShadowData[lightIdx].valid) continue; // Fetch the light data and additional light data - LightData currentLight = m_lightList.lights[m_CurrentScreenSpaceShadowData[lightIdx].lightDataIndex]; + ref LightData currentLight = ref m_CurrentScreenSpaceShadowLightData[lightIdx]; HDAdditionalLightData currentAdditionalLightData = m_CurrentScreenSpaceShadowData[lightIdx].additionalLightData; // Trigger the right algorithm based on the light type @@ -100,14 +102,14 @@ bool RenderLightScreenSpaceShadows(RenderGraph renderGraph, HDCamera hdCamera, { case GPULightType.Rectangle: { - RenderAreaScreenSpaceShadow(renderGraph, hdCamera, currentLight, currentAdditionalLightData, m_CurrentScreenSpaceShadowData[lightIdx].lightDataIndex, + RenderAreaScreenSpaceShadow(renderGraph, hdCamera, currentLight, currentAdditionalLightData, lightIdx, prepassOutput, depthBuffer, normalBuffer, motionVectorsBuffer, rayCountTexture, screenSpaceShadowArray); } break; case GPULightType.Point: case GPULightType.Spot: { - RenderPunctualScreenSpaceShadow(renderGraph, hdCamera, currentLight, currentAdditionalLightData, m_CurrentScreenSpaceShadowData[lightIdx].lightDataIndex, + RenderPunctualScreenSpaceShadow(renderGraph, hdCamera, currentLight, currentAdditionalLightData, lightIdx, prepassOutput, depthBuffer, normalBuffer, motionVectorsBuffer, historyValidityBuffer, rayCountTexture, screenSpaceShadowArray); } break; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.cs index 2ed7a277e2c..fa22c323d34 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManager.cs @@ -54,6 +54,18 @@ public partial class HDRenderPipeline // Screen space shadow material static Material s_ScreenSpaceShadowsMat; + struct ScreenSpaceShadowData + { + public HDAdditionalLightData additionalLightData; + public bool valid; + } + + int m_ScreenSpaceShadowIndex = 0; + int m_ScreenSpaceShadowChannelSlot = 0; + ScreenSpaceShadowData[] m_CurrentScreenSpaceShadowData; + LightData[] m_CurrentScreenSpaceShadowLightData; + ComputeBuffer m_ScreenSpaceShadowsLightData; + // This buffer holds the unfiltered, accumulated, shadow values, it is accessed with the same index as the one used at runtime (aka screen space shadow slot) static RTHandle ShadowHistoryBufferAllocatorFunction(string viewName, int frameIndex, RTHandleSystem rtHandleSystem) { @@ -220,6 +232,11 @@ void InitializeScreenSpaceShadows() m_WriteShadowTextureDebugKernel = m_ScreenSpaceShadowsFilterCS.FindKernel("WriteShadowTextureDebug"); } + int numMaxShadows = Math.Max(m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.maxScreenSpaceShadowSlots, 1); + m_CurrentScreenSpaceShadowData = new ScreenSpaceShadowData[numMaxShadows]; + m_CurrentScreenSpaceShadowLightData = new LightData[numMaxShadows]; + m_ScreenSpaceShadowsLightData = new ComputeBuffer(numMaxShadows, System.Runtime.InteropServices.Marshal.SizeOf(typeof(LightData))); + // Directional shadow material s_ScreenSpaceShadowsMat = CoreUtils.CreateEngineMaterial(screenSpaceShadowsShader); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerArea.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerArea.cs index cb25296b28a..ff18ca3e327 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerArea.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerArea.cs @@ -15,7 +15,6 @@ struct RTSAreaRayTraceParameters // Evaluation parameters public int numSamples; - public int lightIndex; public Matrix4x4 worldToLocalMatrix; public float historyValidity; public bool filterTracedShadow; @@ -41,9 +40,12 @@ struct RTSAreaRayTraceParameters public RayTracingShader screenSpaceShadowsRT; public Texture2D scramblingTex; public BlueNoise.DitheredTextureSet ditheredTextureSet; + + public int screenspaceShadowIndex; + public LightData lightData; } - RTSAreaRayTraceParameters PrepareRTSAreaRayTraceParameters(HDCamera hdCamera, HDAdditionalLightData additionalLightData, LightData lightData, int lightIndex) + RTSAreaRayTraceParameters PrepareRTSAreaRayTraceParameters(HDCamera hdCamera, HDAdditionalLightData additionalLightData, in LightData lightData, int screenspaceShadowIndex) { RTSAreaRayTraceParameters rtsartParams = new RTSAreaRayTraceParameters(); @@ -54,7 +56,6 @@ RTSAreaRayTraceParameters PrepareRTSAreaRayTraceParameters(HDCamera hdCamera, HD // Evaluation parameters rtsartParams.numSamples = additionalLightData.numRayTracingSamples; - rtsartParams.lightIndex = lightIndex; // We need to build the world to area light matrix rtsartParams.worldToLocalMatrix.SetColumn(0, lightData.right); rtsartParams.worldToLocalMatrix.SetColumn(1, lightData.up); @@ -70,7 +71,7 @@ RTSAreaRayTraceParameters PrepareRTSAreaRayTraceParameters(HDCamera hdCamera, HD rtsartParams.worldToLocalMatrix = m_WorldToLocalArea.inverse; rtsartParams.historyValidity = EvaluateHistoryValidity(hdCamera); rtsartParams.filterTracedShadow = additionalLightData.filterTracedShadow; - rtsartParams.areaShadowSlot = m_lightList.lights[lightIndex].screenSpaceShadowIndex; + rtsartParams.areaShadowSlot = lightData.screenSpaceShadowIndex; rtsartParams.filterSize = additionalLightData.filterSizeTraced; // Kernels @@ -95,6 +96,9 @@ RTSAreaRayTraceParameters PrepareRTSAreaRayTraceParameters(HDCamera hdCamera, HD BlueNoise blueNoise = GetBlueNoiseManager(); rtsartParams.ditheredTextureSet = blueNoise.DitheredTextureSet8SPP(); + rtsartParams.screenspaceShadowIndex = screenspaceShadowIndex; + rtsartParams.lightData = lightData; + return rtsartParams; } @@ -111,6 +115,8 @@ struct RTSAreaRayTraceResources public RTHandle shadowHistoryArray; public RTHandle analyticHistoryArray; + public ComputeBuffer lightData; + // Intermediate buffers public RTHandle directionBuffer; public RTHandle rayLengthBuffer; @@ -139,7 +145,8 @@ static void ExecuteSSSAreaRayTrace(CommandBuffer cmd, RTSAreaRayTraceParameters // Bind the light data cmd.SetComputeMatrixParam(parameters.screenSpaceShadowsCS, HDShaderIDs._RaytracingAreaWorldToLocal, parameters.worldToLocalMatrix); - cmd.SetComputeIntParam(parameters.screenSpaceShadowsCS, HDShaderIDs._RaytracingTargetAreaLight, parameters.lightIndex); + cmd.SetComputeIntParam(parameters.screenSpaceShadowsCS, HDShaderIDs._ScreenSpaceShadowIndex, parameters.screenspaceShadowIndex); + cmd.SetComputeBufferParam(parameters.screenSpaceShadowsCS, parameters.areaRaytracingShadowPrepassKernel, HDShaderIDs._ScreenSpaceShadowLightData, sssartResources.lightData); parameters.shaderVariablesRayTracingCB._RaytracingNumSamples = parameters.numSamples; ConstantBuffer.PushGlobal(cmd, parameters.shaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing); @@ -177,7 +184,8 @@ static void ExecuteSSSAreaRayTrace(CommandBuffer cmd, RTSAreaRayTraceParameters cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracedAreaShadowSample, sssartResources.intermediateBufferRGBA1); cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracingDirectionBuffer, sssartResources.directionBuffer); cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RayTracingLengthBuffer, sssartResources.rayLengthBuffer); - cmd.SetRayTracingIntParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracingTargetAreaLight, parameters.lightIndex); + cmd.SetRayTracingIntParam(parameters.screenSpaceShadowsRT, HDShaderIDs._ScreenSpaceShadowIndex, parameters.screenspaceShadowIndex); + cmd.SetRayTracingBufferParam(parameters.screenSpaceShadowsRT, HDShaderIDs._ScreenSpaceShadowLightData, sssartResources.lightData); // Output data cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracedAreaShadowIntegration, sssartResources.outputShadowTexture); @@ -194,8 +202,9 @@ static void ExecuteSSSAreaRayTrace(CommandBuffer cmd, RTSAreaRayTraceParameters ConstantBuffer.PushGlobal(cmd, parameters.shaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing); // Bind the light data - cmd.SetComputeIntParam(parameters.screenSpaceShadowsCS, HDShaderIDs._RaytracingTargetAreaLight, parameters.lightIndex); cmd.SetComputeMatrixParam(parameters.screenSpaceShadowsCS, HDShaderIDs._RaytracingAreaWorldToLocal, parameters.worldToLocalMatrix); + cmd.SetComputeIntParam(parameters.screenSpaceShadowsCS, HDShaderIDs._ScreenSpaceShadowIndex, parameters.screenspaceShadowIndex); + cmd.SetComputeBufferParam(parameters.screenSpaceShadowsCS, parameters.areaRaytracingShadowNewSampleKernel, HDShaderIDs._ScreenSpaceShadowLightData, sssartResources.lightData); // Input Buffers cmd.SetComputeTextureParam(parameters.screenSpaceShadowsCS, parameters.areaRaytracingShadowNewSampleKernel, HDShaderIDs._DepthTexture, sssartResources.depthStencilBuffer); @@ -220,7 +229,6 @@ static void ExecuteSSSAreaRayTrace(CommandBuffer cmd, RTSAreaRayTraceParameters cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracingDirectionBuffer, sssartResources.directionBuffer); cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RayTracingLengthBuffer, sssartResources.rayLengthBuffer); cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._AnalyticProbBuffer, sssartResources.intermediateBufferRG0); - cmd.SetRayTracingIntParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracingTargetAreaLight, parameters.lightIndex); // Output buffers cmd.SetRayTracingTextureParam(parameters.screenSpaceShadowsRT, HDShaderIDs._RaytracedAreaShadowIntegration, sssartResources.outputShadowTexture); @@ -315,6 +323,8 @@ class RTShadowAreaPassData public TextureHandle shadowHistoryArray; public TextureHandle analyticHistoryArray; + public ComputeBufferHandle lightData; + // Intermediate buffers public TextureHandle directionBuffer; public TextureHandle rayLengthBuffer; @@ -329,7 +339,7 @@ class RTShadowAreaPassData } void RenderAreaScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera - , in LightData lightData, HDAdditionalLightData additionalLightData, int lightIndex, + , in LightData lightData, HDAdditionalLightData additionalLightData, int screenspaceShadowIndex, PrepassOutput prepassOutput, TextureHandle depthBuffer, TextureHandle normalBuffer, TextureHandle motionVectorsBuffer, TextureHandle rayCountTexture, TextureHandle screenSpaceShadowArray) { // Grab the history buffers for shadows @@ -339,7 +349,7 @@ void RenderAreaScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera TextureHandle areaShadow; using (var builder = renderGraph.AddRenderPass("Screen Space Shadows Debug", out var passData, ProfilingSampler.Get(HDProfileId.RaytracingAreaLightShadow))) { - passData.parameters = PrepareRTSAreaRayTraceParameters(hdCamera, additionalLightData, lightData, lightIndex); + passData.parameters = PrepareRTSAreaRayTraceParameters(hdCamera, additionalLightData, lightData, screenspaceShadowIndex); // Input Buffers passData.depthStencilBuffer = builder.UseDepthBuffer(depthBuffer, DepthAccess.Read); passData.normalBuffer = builder.ReadTexture(normalBuffer); @@ -363,6 +373,8 @@ void RenderAreaScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera passData.shadowHistoryArray = builder.ReadWriteTexture(renderGraph.ImportTexture(shadowHistoryArray)); passData.analyticHistoryArray = builder.ReadWriteTexture(renderGraph.ImportTexture(analyticHistoryArray)); + passData.lightData = builder.ReadComputeBuffer(renderGraph.ImportComputeBuffer(m_ScreenSpaceShadowsLightData)); + // Intermediate buffers passData.directionBuffer = builder.CreateTransientTexture(new TextureDesc(Vector2.one, true, true) { colorFormat = GraphicsFormat.R16G16B16A16_SFloat, enableRandomWrite = true, name = "Direction Buffer" }); passData.rayLengthBuffer = builder.CreateTransientTexture(new TextureDesc(Vector2.one, true, true) { colorFormat = GraphicsFormat.R32_SFloat, enableRandomWrite = true, name = "Ray Length Buffer" }); @@ -389,6 +401,8 @@ void RenderAreaScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera resources.shadowHistoryArray = data.shadowHistoryArray; resources.analyticHistoryArray = data.analyticHistoryArray; + resources.lightData = data.lightData; + // Intermediate buffers resources.directionBuffer = data.directionBuffer; resources.rayLengthBuffer = data.rayLengthBuffer; @@ -405,7 +419,7 @@ void RenderAreaScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera areaShadow = passData.outputShadowTexture; } - int areaShadowSlot = m_lightList.lights[lightIndex].screenSpaceShadowIndex; + int areaShadowSlot = lightData.screenSpaceShadowIndex; WriteScreenSpaceShadow(renderGraph, hdCamera, areaShadow, screenSpaceShadowArray, areaShadowSlot, ScreenSpaceShadowType.Area); if (additionalLightData.filterTracedShadow) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerDirectional.RenderGraph.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerDirectional.RenderGraph.cs index 09829db400c..b2a782791c4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerDirectional.RenderGraph.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerDirectional.RenderGraph.cs @@ -11,7 +11,7 @@ TextureHandle DenoiseDirectionalScreenSpaceShadow(RenderGraph renderGraph, HDCam TextureHandle noisyBuffer, TextureHandle velocityBuffer, TextureHandle distanceBuffer) { // Is the history still valid? - int dirShadowIndex = m_CurrentSunLightDirectionalLightData.screenSpaceShadowIndex & (int)LightDefinitions.s_ScreenSpaceShadowIndexMask; + int dirShadowIndex = m_CurrentSunLightDirectionalLightData.screenSpaceShadowIndex & (int)TiledLightingConstants.s_ScreenSpaceShadowIndexMask; float historyValidity = EvaluateHistoryValidityDirectionalShadow(hdCamera, dirShadowIndex, m_CurrentSunLightAdditionalLightData); // Grab the history buffers for shadows @@ -113,7 +113,7 @@ void RenderRayTracedDirectionalScreenSpaceShadow(RenderGraph renderGraph, HDCame directionalShadow, velocityBuffer, distanceBuffer); } - int dirShadowIndex = m_CurrentSunLightDirectionalLightData.screenSpaceShadowIndex & (int)LightDefinitions.s_ScreenSpaceShadowIndexMask; + int dirShadowIndex = m_CurrentSunLightDirectionalLightData.screenSpaceShadowIndex & (int)TiledLightingConstants.s_ScreenSpaceShadowIndexMask; ScreenSpaceShadowType shadowType = m_CurrentSunLightAdditionalLightData.colorShadow ? ScreenSpaceShadowType.Color : ScreenSpaceShadowType.GrayScale; // Write the result texture to the screen space shadow buffer diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.RenderGraph.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.RenderGraph.cs index 07c31caa6c7..173c439981c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.RenderGraph.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.RenderGraph.cs @@ -80,6 +80,8 @@ class RTSPunctualTracePassData public TextureHandle directionBuffer; public TextureHandle rayLengthBuffer; + public ComputeBufferHandle lightData; + // Debug textures public TextureHandle rayCountTexture; @@ -90,13 +92,13 @@ class RTSPunctualTracePassData } void RenderPunctualScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera - , in LightData lightData, HDAdditionalLightData additionalLightData, int lightIndex, + , in LightData lightData, HDAdditionalLightData additionalLightData, int screenspaceShadowIndex, PrepassOutput prepassOutput, TextureHandle depthBuffer, TextureHandle normalBuffer, TextureHandle motionVectorsBuffer, TextureHandle historyValidityBuffer, TextureHandle rayCountTexture, TextureHandle screenSpaceShadowArray) { TextureHandle pointShadowBuffer; TextureHandle velocityBuffer; TextureHandle distanceBuffer; - SSSPunctualRayTraceParameters rtsptParams = PrepareSSSPunctualRayTraceParameters(hdCamera, additionalLightData, lightData, lightIndex); + SSSPunctualRayTraceParameters rtsptParams = PrepareSSSPunctualRayTraceParameters(hdCamera, additionalLightData, lightData, screenspaceShadowIndex); using (var builder = renderGraph.AddRenderPass("Punctual RT Shadow", out var passData, ProfilingSampler.Get(HDProfileId.RaytracingLightShadow))) { passData.parameters = rtsptParams; @@ -107,6 +109,8 @@ void RenderPunctualScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera passData.directionBuffer = builder.CreateTransientTexture(new TextureDesc(Vector2.one, true, true) { colorFormat = GraphicsFormat.R16G16B16A16_SFloat, enableRandomWrite = true, name = "Direction Buffer" }); passData.rayLengthBuffer = builder.CreateTransientTexture(new TextureDesc(Vector2.one, true, true) { colorFormat = GraphicsFormat.R32_SFloat, enableRandomWrite = true, name = "Ray Length Buffer" }); + passData.lightData = builder.ReadComputeBuffer(renderGraph.ImportComputeBuffer(m_ScreenSpaceShadowsLightData)); + // Debug buffers passData.rayCountTexture = builder.ReadWriteTexture(rayCountTexture); @@ -130,6 +134,7 @@ void RenderPunctualScreenSpaceShadow(RenderGraph renderGraph, HDCamera hdCamera resources.velocityBuffer = data.velocityBuffer; resources.distanceBuffer = data.distanceBuffer; resources.outputShadowBuffer = data.outputShadowBuffer; + resources.lightData = data.lightData; ExecuteSSSPunctualRayTrace(context.cmd, data.parameters, resources); }); pointShadowBuffer = passData.outputShadowBuffer; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.cs index ff118c61868..c82733d1cdc 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadowManagerPunctual.cs @@ -21,7 +21,6 @@ struct SSSPunctualRayTraceParameters public GPULightType lightType; public float spotAngle; public float shapeRadius; - public int lightIndex; // Kernels public int clearShadowKernel; @@ -33,9 +32,12 @@ struct SSSPunctualRayTraceParameters public RayTracingAccelerationStructure accelerationStructure; public ShaderVariablesRaytracing shaderVariablesRayTracingCB; public BlueNoise.DitheredTextureSet ditheredTextureSet; + + public int screenspaceShadowIndex; + public LightData lightData; } - SSSPunctualRayTraceParameters PrepareSSSPunctualRayTraceParameters(HDCamera hdCamera, HDAdditionalLightData additionalLightData, LightData lightData, int lightIndex) + SSSPunctualRayTraceParameters PrepareSSSPunctualRayTraceParameters(HDCamera hdCamera, HDAdditionalLightData additionalLightData, in LightData lightData, int screenspaceShadowIndex) { SSSPunctualRayTraceParameters ssprtParams = new SSSPunctualRayTraceParameters(); @@ -53,7 +55,6 @@ SSSPunctualRayTraceParameters PrepareSSSPunctualRayTraceParameters(HDCamera hdCa ssprtParams.lightType = lightData.lightType; ssprtParams.spotAngle = additionalLightData.legacyLight.spotAngle; ssprtParams.shapeRadius = additionalLightData.shapeRadius; - ssprtParams.lightIndex = lightIndex; // Kernels ssprtParams.clearShadowKernel = m_ClearShadowTexture; @@ -67,6 +68,9 @@ SSSPunctualRayTraceParameters PrepareSSSPunctualRayTraceParameters(HDCamera hdCa BlueNoise blueNoise = GetBlueNoiseManager(); ssprtParams.ditheredTextureSet = blueNoise.DitheredTextureSet8SPP(); + ssprtParams.lightData = lightData; + ssprtParams.screenspaceShadowIndex = screenspaceShadowIndex; + return ssprtParams; } @@ -80,6 +84,8 @@ struct SSSPunctualRayTraceResources public RTHandle directionBuffer; public RTHandle rayLengthBuffer; + public ComputeBuffer lightData; + // Debug textures public RTHandle rayCountTexture; @@ -127,7 +133,6 @@ static void ExecuteSSSPunctualRayTrace(CommandBuffer cmd, SSSPunctualRayTracePar ConstantBuffer.PushGlobal(cmd, ssprtParams.shaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing); // Bind the light & sampling data - cmd.SetComputeIntParam(ssprtParams.screenSpaceShadowCS, HDShaderIDs._RaytracingTargetAreaLight, ssprtParams.lightIndex); cmd.SetComputeFloatParam(ssprtParams.screenSpaceShadowCS, HDShaderIDs._RaytracingLightRadius, ssprtParams.shapeRadius); // If this is a spot light, inject the spot angle in radians @@ -141,6 +146,9 @@ static void ExecuteSSSPunctualRayTrace(CommandBuffer cmd, SSSPunctualRayTracePar cmd.SetComputeTextureParam(ssprtParams.screenSpaceShadowCS, ssprtParams.shadowKernel, HDShaderIDs._DepthTexture, ssprtResources.depthStencilBuffer); cmd.SetComputeTextureParam(ssprtParams.screenSpaceShadowCS, ssprtParams.shadowKernel, HDShaderIDs._NormalBufferTexture, ssprtResources.normalBuffer); + cmd.SetComputeIntParam(ssprtParams.screenSpaceShadowCS, HDShaderIDs._ScreenSpaceShadowIndex, ssprtParams.screenspaceShadowIndex); + cmd.SetComputeBufferParam(ssprtParams.screenSpaceShadowCS, ssprtParams.shadowKernel, HDShaderIDs._ScreenSpaceShadowLightData, ssprtResources.lightData); + // Output buffers cmd.SetComputeTextureParam(ssprtParams.screenSpaceShadowCS, ssprtParams.shadowKernel, HDShaderIDs._RaytracingDirectionBuffer, ssprtResources.directionBuffer); cmd.SetComputeTextureParam(ssprtParams.screenSpaceShadowCS, ssprtParams.shadowKernel, HDShaderIDs._RayTracingLengthBuffer, ssprtResources.rayLengthBuffer); @@ -159,6 +167,8 @@ static void ExecuteSSSPunctualRayTrace(CommandBuffer cmd, SSSPunctualRayTracePar cmd.SetRayTracingTextureParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._NormalBufferTexture, ssprtResources.normalBuffer); cmd.SetRayTracingTextureParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._RaytracingDirectionBuffer, ssprtResources.directionBuffer); cmd.SetRayTracingTextureParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._RayTracingLengthBuffer, ssprtResources.rayLengthBuffer); + cmd.SetRayTracingIntParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._ScreenSpaceShadowIndex, ssprtParams.screenspaceShadowIndex); + cmd.SetRayTracingBufferParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._ScreenSpaceShadowLightData, ssprtResources.lightData); // Output buffer cmd.SetRayTracingTextureParam(ssprtParams.screenSpaceShadowRT, HDShaderIDs._RaytracedShadowIntegration, ssprtResources.outputShadowBuffer); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadows.shader b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadows.shader index 227822f07b6..b8f479f028a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadows.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ScreenSpaceShadows.shader @@ -53,7 +53,7 @@ Shader "Hidden/HDRP/ScreenSpaceShadows" context.shadowContext = InitShadowContext(); // Get directional light data. By definition we only have one directional light casting shadow - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; float3 L = -light.forward; // We also need the normal diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/DensityVolume.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/DensityVolume.cs index 95a6bc3d808..42077d86b3f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/DensityVolume.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/DensityVolume.cs @@ -118,9 +118,16 @@ internal void Constrain() distanceFadeEnd = Mathf.Max(distanceFadeStart, distanceFadeEnd); } - internal DensityVolumeEngineData ConvertToEngineData() + internal DensityVolumeData ConvertToEngineData(OrientedBBox bounds) { - DensityVolumeEngineData data = new DensityVolumeEngineData(); + DensityVolumeData data = new DensityVolumeData(); + + data.right = bounds.right; + data.extentX = bounds.extentX; + data.up = bounds.up; + data.extentY = bounds.extentY; + data.center = bounds.center; + data.extentZ = bounds.extentZ; data.extinction = VolumeRenderingUtils.ExtinctionFromMeanFreePath(meanFreePath); data.scattering = VolumeRenderingUtils.ScatteringFromExtinctionAndAlbedo(data.extinction, (Vector4)albedo); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumeVoxelization.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumeVoxelization.compute index ccaaac66af6..4254c7cdf68 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumeVoxelization.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumeVoxelization.compute @@ -5,14 +5,10 @@ // #pragma enable_d3d11_debug_symbols #pragma only_renderers d3d11 playstation xboxone vulkan metal switch -#pragma kernel VolumeVoxelizationBruteforceOptimal VolumeVoxelization=VolumeVoxelizationBruteforceOptimal LIGHTLOOP_DISABLE_TILE_AND_CLUSTER VL_PRESET_OPTIMAL -#pragma kernel VolumeVoxelizationTiledOptimal VolumeVoxelization=VolumeVoxelizationTiledOptimal VL_PRESET_OPTIMAL -#pragma kernel VolumeVoxelizationBruteforce VolumeVoxelization=VolumeVoxelizationBruteforce LIGHTLOOP_DISABLE_TILE_AND_CLUSTER -#pragma kernel VolumeVoxelizationTiled VolumeVoxelization=VolumeVoxelizationTiled - -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - #define USE_BIG_TILE_LIGHTLIST -#endif +#pragma kernel VolumeVoxelizationBruteforceOptimal VolumeVoxelization=VolumeVoxelizationBruteforceOptimal VL_PRESET_OPTIMAL +#pragma kernel VolumeVoxelizationTiledOptimal VolumeVoxelization=VolumeVoxelizationTiledOptimal COARSE_BINNING VL_PRESET_OPTIMAL +#pragma kernel VolumeVoxelizationBruteforce VolumeVoxelization=VolumeVoxelizationBruteforce +#pragma kernel VolumeVoxelizationTiled VolumeVoxelization=VolumeVoxelizationTiled COARSE_BINNING #ifdef VL_PRESET_OPTIMAL // E.g. for 1080p: (1920/8)x(1080/8)x(64) = 2,073,600 voxels @@ -40,9 +36,6 @@ // Inputs & outputs //-------------------------------------------------------------------------------------------------- -StructuredBuffer _VolumeBounds; -StructuredBuffer _VolumeData; - TEXTURE3D(_VolumeMaskAtlas); RW_TEXTURE3D(float4, _VBufferDensity); // RGB = sqrt(scattering), A = sqrt(extinction) @@ -82,7 +75,7 @@ float ComputeFadeFactor(float3 coordNDC, float dist, return fade; } -float4 SampleVolumeMask(DensityVolumeEngineData volumeData, float3 voxelCenterNDC, float3 duvw_dx, float3 duvw_dy, float3 duvw_dz) +float4 SampleVolumeMask(DensityVolumeData volumeData, float3 voxelCenterNDC, float3 duvw_dx, float3 duvw_dy, float3 duvw_dz) { float maxLod = log2(volumeData.maskSize.w); // TODO: expose the LoD bias parameter. @@ -113,52 +106,14 @@ float4 SampleVolumeMask(DensityVolumeEngineData volumeData, float3 voxelCenterND return SAMPLE_TEXTURE3D_LOD(_VolumeMaskAtlas, s_trilinear_repeat_sampler, voxelCenterUVW, lod); } -void FillVolumetricDensityBuffer(PositionInputs posInput, uint tileIndex, JitteredRay ray) +void FillVolumetricDensityBuffer(PositionInputs posInput, uint tile, JitteredRay ray, float cosRay) { - uint volumeCount, volumeStart; - -#ifdef USE_BIG_TILE_LIGHTLIST - // Offset for stereo rendering - tileIndex += unity_StereoEyeIndex * _NumTileBigTileX * _NumTileBigTileY; - - // The "big tile" list contains the number of objects contained within the tile followed by the - // list of object indices. Note that while objects are already sorted by type, we don't know the - // number of each type of objects (e.g. lights), so we should remember to break out of the loop. - volumeCount = g_vBigTileLightList[MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE * tileIndex]; - // On Metal for unknow reasons it seems we have bad value sometimes causing freeze / crash. This min here prevent it. - volumeCount = min(volumeCount, MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE); - volumeStart = MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE * tileIndex + 1; - - // For now, iterate through all the objects to determine the correct range. - // TODO: precompute this, of course. - { - uint offset = 0; - - for (; offset < volumeCount; offset++) - { - uint objectIndex = FetchIndex(volumeStart, offset); - - if (objectIndex >= _DensityVolumeIndexShift) - { - // We have found the first density volume. - break; - } - } - - volumeStart += offset; - volumeCount -= offset; - } - -#else // USE_BIG_TILE_LIGHTLIST - - volumeCount = _NumVisibleDensityVolumes; - volumeStart = 0; - -#endif // USE_BIG_TILE_LIGHTLIST - float t0 = DecodeLogarithmicDepthGeneralized(0, _VBufferDistanceDecodingParams); float de = _VBufferRcpSliceCount; // Log-encoded distance between slices + float z0 = t0 * cosRay; // Distance to linear depth + uint zBin0 = ComputeZBinIndex(z0); + for (uint slice = 0; slice < _VBufferSliceCount; slice++) { uint3 voxelCoord = uint3(posInput.positionSS, slice + _VBufferSliceCount * unity_StereoEyeIndex); @@ -168,6 +123,14 @@ void FillVolumetricDensityBuffer(PositionInputs posInput, uint tileIndex, Jitter float dt = t1 - t0; float t = t0 + 0.5 * dt; + const float nearPlaneDepth = _VBufferDistanceDecodingParams.w; + + float z1 = t1 * cosRay; // Distance to linear depth + uint zBin1 = ComputeZBinIndex(max(z1, nearPlaneDepth)); // Entities are culled by the near plane, so avoid lookups behind it + // To be perfectly frank, it is still possible to have some artifacts associated with this, + // since certain entities may not be assigned to certain tiles due to clipping/culling at the near plane, + // but that is much harder to address. I suppose we could disable near plane culling entirely. + float3 voxelCenterWS = ray.originWS + t * ray.centerDirWS; // TODO: the fog value at the center is likely different from the average value across the voxel. @@ -177,23 +140,20 @@ void FillVolumetricDensityBuffer(PositionInputs posInput, uint tileIndex, Jitter // Start by sampling the height fog. float3 voxelScattering = _HeightFogBaseScattering.xyz * heightMultiplier; - float voxelExtinction = _HeightFogBaseExtinction * heightMultiplier; + float voxelExtinction = _HeightFogBaseExtinction * heightMultiplier; - for (uint volumeOffset = 0; volumeOffset < volumeCount; volumeOffset++) - { - #ifdef USE_BIG_TILE_LIGHTLIST - uint volumeIndex = FetchIndex(volumeStart, volumeOffset) - _DensityVolumeIndexShift; - #else - uint volumeIndex = FetchIndex(volumeStart, volumeOffset); - #endif + EntityLookupParameters params = InitializeDensityVolumeLookup(tile, uint2(zBin0, zBin1)); - const OrientedBBox obb = _VolumeBounds[volumeIndex]; + uint i = 0; - const float3x3 obbFrame = float3x3(obb.right, obb.up, cross(obb.up, obb.right)); - const float3 obbExtents = float3(obb.extentX, obb.extentY, obb.extentZ); + DensityVolumeData volumeData; + while (TryLoadDensityVolumeData(i, params, volumeData)) + { + const float3x3 obbFrame = float3x3(volumeData.right, volumeData.up, cross(volumeData.up, volumeData.right)); + const float3 obbExtents = float3(volumeData.extentX, volumeData.extentY, volumeData.extentZ); // Express the voxel center in the local coordinate system of the box. - const float3 voxelCenterBS = mul(voxelCenterWS - obb.center, transpose(obbFrame)); + const float3 voxelCenterBS = mul(voxelCenterWS - volumeData.center, transpose(obbFrame)); const float3 voxelCenterCS = (voxelCenterBS * rcp(obbExtents)); const float3 voxelAxisRightBS = mul(ray.xDirDerivWS, transpose(obbFrame)); @@ -276,35 +236,38 @@ void FillVolumetricDensityBuffer(PositionInputs posInput, uint tileIndex, Jitter float dist = t; overlapFraction *= ComputeFadeFactor(voxelCenterNDC, dist, - _VolumeData[volumeIndex].rcpPosFaceFade, - _VolumeData[volumeIndex].rcpNegFaceFade, - _VolumeData[volumeIndex].invertFade, - _VolumeData[volumeIndex].rcpDistFadeLen, - _VolumeData[volumeIndex].endTimesRcpDistFadeLen, - _VolumeData[volumeIndex].falloffMode); + volumeData.rcpPosFaceFade, + volumeData.rcpNegFaceFade, + volumeData.invertFade, + volumeData.rcpDistFadeLen, + volumeData.endTimesRcpDistFadeLen, + volumeData.falloffMode); float3 scatteringMultiplier = 1; // Sample the volume Mask + Scattering color. - if (_VolumeData[volumeIndex].useVolumeMask > 0) + if (volumeData.useVolumeMask > 0) { float3 xDerivUVW = (0.5 * t) * voxelAxisRightBS * rcp(obbExtents); float3 yDerivUVW = (0.5 * t) * voxelAxisUpBS * rcp(obbExtents); float3 zDerivUVW = (0.5 * dt) * voxelAxisForwardBS * rcp(obbExtents); - float4 volumeMask = SampleVolumeMask(_VolumeData[volumeIndex], voxelCenterNDC, xDerivUVW, yDerivUVW, zDerivUVW); + float4 volumeMask = SampleVolumeMask(volumeData, voxelCenterNDC, xDerivUVW, yDerivUVW, zDerivUVW); overlapFraction *= volumeMask.a; scatteringMultiplier *= volumeMask.rgb; } // There is an overlap. Sample the 3D texture, or load the constant value. - voxelScattering += overlapFraction * _VolumeData[volumeIndex].scattering * scatteringMultiplier; - voxelExtinction += overlapFraction * _VolumeData[volumeIndex].extinction; + voxelScattering += overlapFraction * volumeData.scattering * scatteringMultiplier; + voxelExtinction += overlapFraction * volumeData.extinction; } + + i++; } _VBufferDensity[voxelCoord] = float4(voxelScattering, voxelExtinction); - t0 = t1; + t0 = t1; + zBin0 = zBin1; } } @@ -317,19 +280,20 @@ void VolumeVoxelization(uint3 dispatchThreadId : SV_DispatchThreadID, uint2 groupOffset = groupId * GROUP_SIZE_1D; uint2 voxelCoord = groupOffset + groupThreadId; + // We would like to determine the screen pixel (at the full resolution) which + // the jittered ray corresponds to. The exact solution can be obtained by intersecting + // the ray with the screen plane, e.i. (ViewSpace(jitterDirWS).z = 1). That's a little expensive. + // So, as an approximation, we ignore the curvature of the frustum. + uint2 pixelCoord = (uint2)((voxelCoord + 0.5) * _VBufferVoxelSize); + #ifdef VL_PRESET_OPTIMAL // The entire thread group is within the same light tile. - uint2 tileCoord = groupOffset * VBUFFER_VOXEL_SIZE / TILE_SIZE_BIG_TILE; + uint2 tileCoord = groupOffset * VBUFFER_VOXEL_SIZE / TILE_SIZE; + uint tile = IndexFromCoordinate(tileCoord, TILE_BUFFER_DIMS.x); #else // No compile-time optimizations, no scalarization. - // If _VBufferVoxelSize is not a power of 2 or > TILE_SIZE_BIG_TILE, a voxel may straddle - // a tile boundary. This means different voxel subsamples may belong to different tiles. - // We accept this error, and simply use the coordinates of the center of the voxel. - uint2 tileCoord = (uint2)((voxelCoord + 0.5) * _VBufferVoxelSize) / TILE_SIZE_BIG_TILE; + uint tile = ComputeTileIndex(pixelCoord); #endif - uint tileIndex = tileCoord.x + _NumTileBigTileX * tileCoord.y; - // This clamp is important as _VBufferVoxelSize can have float value which can cause en overflow (Crash on Vulkan and Metal) - tileIndex = min(tileIndex, _NumTileBigTileX * _NumTileBigTileY); // Reminder: our voxels are sphere-capped right frustums (truncated right pyramids). // The curvature of the front and back faces is quite gentle, so we can use @@ -361,9 +325,12 @@ void VolumeVoxelization(uint3 dispatchThreadId : SV_DispatchThreadID, ray.yDirDerivWS = cross(ray.xDirDerivWS, ray.centerDirWS); // Will have the length of 'unitDistFaceSize' by construction ray.jitterDirWS = ray.centerDirWS; // TODO - PositionInputs posInput = GetPositionInput(voxelCoord, _VBufferViewportSize.zw, tileCoord); + // We will use the value of the cosine to convert distances from the camera to linear depth values. + float cosRay = dot(F, ray.jitterDirWS); + + PositionInputs posInput = GetPositionInput(voxelCoord, _VBufferViewportSize.zw); ApplyCameraRelativeXR(ray.originWS); - FillVolumetricDensityBuffer(posInput, tileIndex, ray); + FillVolumetricDensityBuffer(posInput, tile, ray, cosRay); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.compute b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.compute index b81109b4e21..9e8da247a30 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.compute @@ -7,7 +7,7 @@ #pragma kernel VolumetricLighting -#pragma multi_compile _ LIGHTLOOP_DISABLE_TILE_AND_CLUSTER +#pragma multi_compile _ COARSE_BINNING #pragma multi_compile _ ENABLE_REPROJECTION #pragma multi_compile _ ENABLE_ANISOTROPY #pragma multi_compile _ VL_PRESET_OPTIMAL @@ -18,10 +18,6 @@ #define LIGHT_EVALUATION_NO_CONTACT_SHADOWS // To define before LightEvaluation.hlsl // #define LIGHT_EVALUATION_NO_HEIGHT_FOG -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - #define USE_BIG_TILE_LIGHTLIST -#endif - #ifdef VL_PRESET_OPTIMAL // E.g. for 1080p: (1920/8)x(1080/8)x(64) = 2,073,600 voxels #define VBUFFER_VOXEL_SIZE 8 @@ -161,7 +157,7 @@ VoxelLighting EvaluateVoxelLightingDirectional(LightLoopContext context, uint fe // Evaluate sun shadows. if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; // Prep the light so that it works with non-volumetrics-aware code. light.contactShadowMask = 0; @@ -192,7 +188,7 @@ VoxelLighting EvaluateVoxelLightingDirectional(LightLoopContext context, uint fe for (uint i = 0; i < _DirectionalLightCount; ++i) { - DirectionalLightData light = _DirectionalLightDatas[i]; + DirectionalLightData light = _DirectionalLightData[i]; // Prep the light so that it works with non-volumetrics-aware code. light.contactShadowMask = 0; @@ -247,8 +243,8 @@ VoxelLighting EvaluateVoxelLightingDirectional(LightLoopContext context, uint fe // Computes the light integral (in-scattered radiance) within the voxel. // Multiplication by the scattering coefficient and the phase function is performed outside. -VoxelLighting EvaluateVoxelLightingLocal(LightLoopContext context, uint groupIdx, uint featureFlags, PositionInputs posInput, - uint lightCount, uint lightStart, float3 centerWS, +VoxelLighting EvaluateVoxelLightingLocal(LightLoopContext context, uint featureFlags, PositionInputs posInput, + uint tile, uint2 zBinRange, float3 centerWS, JitteredRay ray, float t0, float t1, float dt, float rndVal, float extinction, float anisotropy) { VoxelLighting lighting; @@ -261,162 +257,106 @@ VoxelLighting EvaluateVoxelLightingLocal(LightLoopContext context, uint groupIdx if (featureFlags & LIGHTFEATUREFLAGS_PUNCTUAL) { - uint lightOffset = 0; // This is used by two subsequent loops - - // This loop does not process box lights. - for (; lightOffset < lightCount; lightOffset++) - { -#if PRE_FILTER_LIGHT_LIST - uint lightIndex = gs_localLightList[groupIdx][lightOffset]; -#else - uint lightIndex = FetchIndex(lightStart, lightOffset); -#endif - LightData light = _LightDatas[lightIndex]; + EntityLookupParameters params = InitializePunctualLightLookup(tile, zBinRange); + uint i = 0; - if (light.lightType >= GPULIGHTTYPE_PROJECTOR_BOX) { break; } - + LightData light; + while (TryLoadPunctualLightData(i, params, light)) + { // Prep the light so that it works with non-volumetrics-aware code. light.contactShadowMask = 0; light.shadowDimmer = light.volumetricShadowDimmer; - bool sampleLight = (light.volumetricLightDimmer > 0); + float weight = 0; // Monte Carlo weight - float tEntr = t0; - float tExit = t1; - - // Perform ray-cone intersection for pyramid and spot lights. - if (light.lightType != GPULIGHTTYPE_POINT) + if (light.lightType == GPULIGHTTYPE_PROJECTOR_BOX) { - float lenMul = 1; - - if (light.lightType == GPULIGHTTYPE_PROJECTOR_PYRAMID) - { - // 'light.right' and 'light.up' vectors are pre-scaled on the CPU - // s.t. if you were to place them at the distance of 1 directly in front - // of the light, they would give you the "footprint" of the light. - // For spot lights, the cone fit is exact. - // For pyramid lights, however, this is the "inscribed" cone - // (contained within the pyramid), and we want to intersect - // the "escribed" cone (which contains the pyramid). - // Therefore, we have to scale the radii by the sqrt(2). - lenMul = rsqrt(2); - } - - float3 coneAxisX = lenMul * light.right; - float3 coneAxisY = lenMul * light.up; + bool sampleLight = (light.volumetricLightDimmer > 0); - sampleLight = sampleLight && IntersectRayCone(ray.originWS, ray.jitterDirWS, - light.positionRWS, light.forward, - coneAxisX, coneAxisY, - t0, t1, tEntr, tExit); - } - - // Is it worth evaluating the light? - if (sampleLight) - { - float lightSqRadius = light.size.x; - - float t, distSq, rcpPdf; - ImportanceSamplePunctualLight(rndVal, light.positionRWS, lightSqRadius, - ray.originWS, ray.jitterDirWS, - tEntr, tExit, - t, distSq, rcpPdf); - - posInput.positionWS = ray.originWS + t * ray.jitterDirWS; - - float3 L; - float4 distances; // {d, d^2, 1/d, d_proj} - GetPunctualLightVectors(posInput.positionWS, light, L, distances); - - float4 lightColor = EvaluateLight_Punctual(context, posInput, light, L, distances); - // The volumetric light dimmer, unlike the regular light dimmer, is not pre-multiplied. - lightColor.a *= light.volumetricLightDimmer; - lightColor.rgb *= lightColor.a; // Composite + // Convert the box light from OBB to AABB. + // 'light.right' and 'light.up' vectors are pre-scaled on the CPU by (2/w) and (2/h). + float3x3 rotMat = float3x3(light.right, light.up, light.forward); - #if SHADOW_VIEW_BIAS - // Our shadows only support normal bias. Volumetrics has no access to the surface normal. - // We fake view bias by invoking the normal bias code with the view direction. - float3 shadowN = -ray.jitterDirWS; - #else - float3 shadowN = 0; // No bias - #endif // SHADOW_VIEW_BIAS + float3 o = mul(rotMat, ray.originWS - light.positionRWS); + float3 d = mul(rotMat, ray.jitterDirWS); - SHADOW_TYPE shadow = EvaluateShadow_Punctual(context, posInput, light, unused, shadowN, L, distances); - lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); + float3 boxPt0 = float3(-1, -1, 0); + float3 boxPt1 = float3( 1, 1, light.range); + float tEntr, tExit; + sampleLight = sampleLight && IntersectRayAABB(o, d, boxPt0, boxPt1, t0, t1, tEntr, tExit); - // Important: - // Ideally, all scattering calculations should use the jittered versions - // of the sample position and the ray direction. However, correct reprojection - // of asymmetrically scattered lighting (affected by an anisotropic phase - // function) is not possible. We work around this issue by reprojecting - // lighting not affected by the phase function. This basically removes - // the phase function from the temporal integration process. It is a hack. - // The downside is that anisotropy no longer benefits from temporal averaging, - // and any temporal instability of anisotropy causes causes visible jitter. - // In order to stabilize the image, we use the voxel center for all - // anisotropy-related calculations. - float3 centerL = light.positionRWS - centerWS; - float cosTheta = dot(centerL, ray.centerDirWS) * rsqrt(dot(centerL, centerL)); - float phase = CornetteShanksPhasePartVarying(anisotropy, cosTheta); + // Is it worth evaluating the light? + if (sampleLight) + { + float tOffset; + ImportanceSampleHomogeneousMedium(rndVal, extinction, tExit - tEntr, tOffset, weight); - // Compute transmittance from 't0' to 't'. - float weight = TransmittanceHomogeneousMedium(extinction, t - t0) * rcpPdf; + // Compute transmittance from 't0' to 'tEntr'. + weight *= TransmittanceHomogeneousMedium(extinction, tEntr - t0); - // Compute the amount of in-scattered radiance. - lighting.radianceNoPhase += (weight * lightColor.rgb); - lighting.radianceComplete += (weight * lightColor.rgb) * phase; + float t = tEntr + tOffset; + posInput.positionWS = ray.originWS + t * ray.jitterDirWS; + } } - } - - // This loop only processes box lights. - for (; lightOffset < lightCount; lightOffset++) - { -#if PRE_FILTER_LIGHT_LIST - uint lightIndex = gs_localLightList[groupIdx][lightOffset]; -#else - uint lightIndex = FetchIndex(lightStart, lightOffset); -#endif - LightData light = _LightDatas[lightIndex]; + else // (light.lightType != GPULIGHTTYPE_PROJECTOR_BOX) + { + bool sampleLight = (light.volumetricLightDimmer > 0); - if (light.lightType != GPULIGHTTYPE_PROJECTOR_BOX) { break; } + float tEntr = t0; + float tExit = t1; - // Prep the light so that it works with non-volumetrics-aware code. - light.contactShadowMask = 0; - light.shadowDimmer = light.volumetricShadowDimmer; - - bool sampleLight = (light.volumetricLightDimmer > 0); + // Perform ray-cone intersection for pyramid and spot lights. + if (light.lightType != GPULIGHTTYPE_POINT) + { + float lenMul = 1; + + if (light.lightType == GPULIGHTTYPE_PROJECTOR_PYRAMID) + { + // 'light.right' and 'light.up' vectors are pre-scaled on the CPU + // s.t. if you were to place them at the distance of 1 directly in front + // of the light, they would give you the "footprint" of the light. + // For spot lights, the cone fit is exact. + // For pyramid lights, however, this is the "inscribed" cone + // (contained within the pyramid), and we want to intersect + // the "escribed" cone (which contains the pyramid). + // Therefore, we have to scale the radii by the sqrt(2). + lenMul = rsqrt(2); + } + + float3 coneAxisX = lenMul * light.right; + float3 coneAxisY = lenMul * light.up; + + sampleLight = sampleLight && IntersectRayCone(ray.originWS, ray.jitterDirWS, + light.positionRWS, light.forward, + coneAxisX, coneAxisY, + t0, t1, tEntr, tExit); + } - // Convert the box light from OBB to AABB. - // 'light.right' and 'light.up' vectors are pre-scaled on the CPU by (2/w) and (2/h). - float3x3 rotMat = float3x3(light.right, light.up, light.forward); + // Is it worth evaluating the light? + if (sampleLight) + { + float lightSqRadius = light.size.x; - float3 o = mul(rotMat, ray.originWS - light.positionRWS); - float3 d = mul(rotMat, ray.jitterDirWS); + float t, distSq, rcpPdf; + ImportanceSamplePunctualLight(rndVal, light.positionRWS, lightSqRadius, + ray.originWS, ray.jitterDirWS, + tEntr, tExit, + t, distSq, rcpPdf); - float3 boxPt0 = float3(-1, -1, 0); - float3 boxPt1 = float3( 1, 1, light.range); + // Compute transmittance from 't0' to 't'. + weight = TransmittanceHomogeneousMedium(extinction, t - t0) * rcpPdf; - float tEntr, tExit; - sampleLight = sampleLight && IntersectRayAABB(o, d, boxPt0, boxPt1, t0, t1, tEntr, tExit); + posInput.positionWS = ray.originWS + t * ray.jitterDirWS; + } + } - // Is it worth evaluating the light? - if (sampleLight) + if (weight > 0) { - float tOffset, weight; - ImportanceSampleHomogeneousMedium(rndVal, extinction, tExit - tEntr, tOffset, weight); - - // Compute transmittance from 't0' to 'tEntr'. - weight *= TransmittanceHomogeneousMedium(extinction, tEntr - t0); - - float t = tEntr + tOffset; - posInput.positionWS = ray.originWS + t * ray.jitterDirWS; - - float3 L = -light.forward; - float3 lightToSample = posInput.positionWS - light.positionRWS; - float distProj = dot(lightToSample, light.forward); - float4 distances = float4(1, 1, 1, distProj); + float3 L; + float4 distances; // {d, d^2, 1/d, d_proj} + GetPunctualLightVectors(posInput.positionWS, light, L, distances); float4 lightColor = EvaluateLight_Punctual(context, posInput, light, L, distances); // The volumetric light dimmer, unlike the regular light dimmer, is not pre-multiplied. @@ -434,7 +374,6 @@ VoxelLighting EvaluateVoxelLightingLocal(LightLoopContext context, uint groupIdx SHADOW_TYPE shadow = EvaluateShadow_Punctual(context, posInput, light, unused, shadowN, L, distances); lightColor.rgb *= ComputeShadowColor(shadow, light.shadowTint, light.penumbraTint); - // Important: // Ideally, all scattering calculations should use the jittered versions // of the sample position and the ray direction. However, correct reprojection @@ -455,6 +394,8 @@ VoxelLighting EvaluateVoxelLightingLocal(LightLoopContext context, uint groupIdx lighting.radianceNoPhase += (weight * lightColor.rgb); lighting.radianceComplete += (weight * lightColor.rgb) * phase; } + + i++; } } @@ -491,61 +432,14 @@ float3 EvaluateVoxelDiffuseGI(PositionInputs posInput, JitteredRay ray, float t0 // Computes the in-scattered radiance along the ray. void FillVolumetricLightingBuffer(LightLoopContext context, uint featureFlags, - PositionInputs posInput, uint tileIndex, int groupIdx, JitteredRay ray) + PositionInputs posInput, uint tile, JitteredRay ray, float cosRay) { - uint lightCount, lightStart; - -#ifdef USE_BIG_TILE_LIGHTLIST - // Offset for stereo rendering - tileIndex += unity_StereoEyeIndex * _NumTileBigTileX * _NumTileBigTileY; - - // The "big tile" list contains the number of objects contained within the tile followed by the - // list of object indices. Note that while objects are already sorted by type, we don't know the - // number of each type of objects (e.g. lights), so we should remember to break out of the loop. - lightCount = g_vBigTileLightList[MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE * tileIndex]; - // On Metal for unknow reasons it seems we have bad value sometimes causing freeze / crash. This min here prevent it. - lightCount = min(lightCount, MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE); - lightStart = MAX_NR_BIG_TILE_LIGHTS_PLUS_ONE * tileIndex + 1; - - // For now, iterate through all the objects to determine the correct range. - // TODO: precompute this, of course. - { - uint offset = 0; - - int validLightCount = 0; - - for (; offset < lightCount; offset++) - { - uint objectIndex = FetchIndex(lightStart, offset); -#if PRE_FILTER_LIGHT_LIST - LightData light = _LightDatas[objectIndex]; - if (light.volumetricLightDimmer > 0 && validLightCount < MAX_SUPPORTED_LIGHTS && objectIndex < _EnvLightIndexShift) - { - gs_localLightList[groupIdx][validLightCount++] = objectIndex; - } -#else - validLightCount++; -#endif - if (objectIndex >= _EnvLightIndexShift) - { - // We have found the last local analytical light. - break; - } - } - - lightCount = validLightCount; - } - -#else // USE_BIG_TILE_LIGHTLIST - - lightCount = _PunctualLightCount; - lightStart = 0; - -#endif // USE_BIG_TILE_LIGHTLIST - float t0 = DecodeLogarithmicDepthGeneralized(0, _VBufferDistanceDecodingParams); float de = _VBufferRcpSliceCount; // Log-encoded distance between slices + float z0 = t0 * cosRay; // Distance to linear depth + uint zBin0 = ComputeZBinIndex(z0); + // The contribution of the ambient probe does not depend on the position, // only on the direction and the length of the interval. // SampleSH9() evaluates the 3-band SH in a given direction. @@ -556,7 +450,7 @@ void FillVolumetricLightingBuffer(LightLoopContext context, uint featureFlags, float3 totalRadiance = 0; float opticalDepth = 0; uint slice = 0; - for (; slice < _VBufferSliceCount; slice++) + for (; (slice < _VBufferSliceCount) && (t0 <= ray.maxDist); slice++) { uint3 voxelCoord = uint3(posInput.positionSS, slice + _VBufferSliceCount * unity_StereoEyeIndex); @@ -577,6 +471,14 @@ void FillVolumetricLightingBuffer(LightLoopContext context, uint featureFlags, } #endif + const float nearPlaneDepth = _VBufferDistanceDecodingParams.w; + + float z1 = t1 * cosRay; // Distance to linear depth + uint zBin1 = ComputeZBinIndex(max(z1, nearPlaneDepth)); // Entities are culled by the near plane, so avoid lookups behind it + // To be perfectly frank, it is still possible to have some artifacts associated with this, + // since certain entities may not be assigned to certain tiles due to clipping/culling at the near plane, + // but that is much harder to address. I suppose we could disable near plane culling entirely. + float dt = t1 - t0; // Is geometry-aware // Accurately compute the center of the voxel in the log space. It's important to perform @@ -624,8 +526,8 @@ void FillVolumetricLightingBuffer(LightLoopContext context, uint featureFlags, #ifdef SUPPORT_LOCAL_LIGHTS { - VoxelLighting lighting = EvaluateVoxelLightingLocal(context, groupIdx, featureFlags, posInput, - lightCount, lightStart, + VoxelLighting lighting = EvaluateVoxelLightingLocal(context, featureFlags, posInput, + tile, uint2(zBin0, zBin1), centerWS, ray, t0, t1, dt, rndVal, extinction, anisotropy); @@ -743,18 +645,14 @@ void FillVolumetricLightingBuffer(LightLoopContext context, uint featureFlags, // Compute the optical depth up to the end of the interval. opticalDepth += 0.5 * blendValue.a; - if (t0 * 0.99 > ray.maxDist) - { - break; - } - - t0 = tNext; + t0 = tNext; + zBin0 = zBin1; } for (; slice < _VBufferSliceCount; slice++) { uint3 voxelCoord = uint3(posInput.positionSS, slice + _VBufferSliceCount * unity_StereoEyeIndex); - _VBufferLighting[voxelCoord] = 0; + _VBufferLighting[voxelCoord] = LinearizeRGBD(float4(/*FastTonemap*/(totalRadiance), opticalDepth)) * float4(GetCurrentExposureMultiplier().xxx, 1); #ifdef ENABLE_REPROJECTION _VBufferFeedback[voxelCoord] = 0; #endif @@ -812,6 +710,9 @@ void VolumetricLighting(uint3 dispatchThreadId : SV_DispatchThreadID, ray.jitterDirWS = normalize(ray.centerDirWS + sampleOffset.x * ray.xDirDerivWS + sampleOffset.y * ray.yDirDerivWS); + // We will use the value of the cosine to convert distances from the camera to linear depth values. + float cosRay = dot(F, ray.jitterDirWS); + // We would like to determine the screen pixel (at the full resolution) which // the jittered ray corresponds to. The exact solution can be obtained by intersecting // the ray with the screen plane, e.i. (ViewSpace(jitterDirWS).z = 1). That's a little expensive. @@ -820,17 +721,15 @@ void VolumetricLighting(uint3 dispatchThreadId : SV_DispatchThreadID, #ifdef VL_PRESET_OPTIMAL // The entire thread group is within the same light tile. - uint2 tileCoord = groupOffset * VBUFFER_VOXEL_SIZE / TILE_SIZE_BIG_TILE; + uint2 tileCoord = groupOffset * VBUFFER_VOXEL_SIZE / TILE_SIZE; + uint tile = IndexFromCoordinate(tileCoord, TILE_BUFFER_DIMS.x); #else // No compile-time optimizations, no scalarization. - uint2 tileCoord = pixelCoord / TILE_SIZE_BIG_TILE; + uint tile = ComputeTileIndex(pixelCoord); #endif - uint tileIndex = tileCoord.x + _NumTileBigTileX * tileCoord.y; - // This clamp is important as _VBufferVoxelSize can have float value which can cause en overflow (Crash on Vulkan and Metal) - tileIndex = min(tileIndex, _NumTileBigTileX * _NumTileBigTileY); // Do not jitter 'voxelCoord' else. It's expected to correspond to the center of the voxel. - PositionInputs posInput = GetPositionInput(voxelCoord, _VBufferViewportSize.zw, tileCoord); + PositionInputs posInput = GetPositionInput(voxelCoord, _VBufferViewportSize.zw); ray.geomDist = FLT_INF; ray.maxDist = FLT_INF; @@ -841,14 +740,14 @@ void VolumetricLighting(uint3 dispatchThreadId : SV_DispatchThreadID, { // Convert it to distance along the ray. Doesn't work with tilt shift, etc. float linearDepth = LinearEyeDepth(deviceDepth, _ZBufferParams); - ray.geomDist = linearDepth * rcp(dot(ray.jitterDirWS, F)); + ray.geomDist = linearDepth * rcp(cosRay); float2 UV = posInput.positionNDC * _RTHandleScale.xy; // This should really be using a max sampler here. This is a bit overdilating given that it is already dilated. // Better to be safer though. - float4 d = GATHER_RED_TEXTURE2D_X(_MaxZMaskTexture, s_point_clamp_sampler, UV) * rcp(dot(ray.jitterDirWS, F)); - ray.maxDist = max(Max3(d.x, d.y, d.z), d.w); + float4 d = GATHER_RED_TEXTURE2D_X(_MaxZMaskTexture, s_point_clamp_sampler, UV); + ray.maxDist = max(Max3(d.x, d.y, d.z), d.w) * rcp(cosRay); } #endif @@ -859,5 +758,5 @@ void VolumetricLighting(uint3 dispatchThreadId : SV_DispatchThreadID, ApplyCameraRelativeXR(ray.originWS); - FillVolumetricLightingBuffer(context, featureFlags, posInput, tileIndex, groupIndex, ray); + FillVolumetricLightingBuffer(context, featureFlags, posInput, tile, ray, cosRay); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs index 021f3397ab9..9989a84ac38 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs @@ -8,8 +8,15 @@ namespace UnityEngine.Rendering.HighDefinition // Optimized version of 'DensityVolumeArtistParameters'. // TODO: pack better. This data structure contains a bunch of UNORMs. [GenerateHLSL] - struct DensityVolumeEngineData + struct DensityVolumeData { + public Vector3 right; + public float extentX; + public Vector3 up; + public float extentY; + public Vector3 center; + public float extentZ; + public Vector3 scattering; // [0, 1] public float extinction; // [0, 1] public Vector3 textureTiling; @@ -23,27 +30,6 @@ struct DensityVolumeEngineData public Vector3 atlasOffset; // coordinates in the atlas in pixels public DensityVolumeFalloffMode falloffMode; public Vector4 maskSize; // xyz: atlas size / mask size, w: mask size in pixels - - public static DensityVolumeEngineData GetNeutralValues() - { - DensityVolumeEngineData data; - - data.scattering = Vector3.zero; - data.extinction = 0; - data.atlasOffset = Vector3.zero; - data.textureTiling = Vector3.one; - data.textureScroll = Vector3.zero; - data.rcpPosFaceFade = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue); - data.rcpNegFaceFade = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue); - data.invertFade = 0; - data.rcpDistFadeLen = 0; - data.endTimesRcpDistFadeLen = 1; - data.useVolumeMask = 0; - data.maskSize = Vector4.zero; - data.falloffMode = DensityVolumeFalloffMode.Linear; - - return data; - } } // struct VolumeProperties [GenerateHLSL(needAccessors = false, generateCBuffer = true)] @@ -53,7 +39,7 @@ unsafe struct ShaderVariablesVolumetric public fixed float _VBufferCoordToViewDirWS[ShaderConfig.k_XRMaxViewsForCBuffer * 16]; public float _VBufferUnitDepthTexelSpacing; - public uint _NumVisibleDensityVolumes; + public uint _Pad2_SVV; public float _CornetteShanksConstant; public uint _VBufferHistoryIsValid; @@ -120,8 +106,7 @@ public static Vector3 AlbedoFromMeanFreePathAndScattering(float meanFreePath, Ve struct DensityVolumeList { - public List bounds; - public List density; + public List data; } struct VBufferParameters @@ -137,17 +122,10 @@ public VBufferParameters(Vector3Int viewportSize, float depthExtent, float camNe this.viewportSize = viewportSize; this.voxelSize = voxelSize; - // The V-Buffer is sphere-capped, while the camera frustum is not. - // We always start from the near plane of the camera. - - float aspectRatio = viewportSize.x / (float)viewportSize.y; - float farPlaneHeight = 2.0f * Mathf.Tan(0.5f * camVFoV) * camFar; - float farPlaneWidth = farPlaneHeight * aspectRatio; - float farPlaneMaxDim = Mathf.Max(farPlaneWidth, farPlaneHeight); - float farPlaneDist = Mathf.Sqrt(camFar * camFar + 0.25f * farPlaneMaxDim * farPlaneMaxDim); - + // Entities are culled by the near plane, but we have clamped the lookups in the shaders. float nearDist = camNear; - float farDist = Math.Min(nearDist + depthExtent, farPlaneDist); + // Must not extend beyond the far plane, as entities are also culled by the far plane. + float farDist = Math.Min(nearDist + depthExtent, camFar); float c = 2 - 2 * sliceDistributionUniformity; // remap [0, 1] -> [2, 0] c = Mathf.Max(c, 0.001f); // Avoid NaNs @@ -206,7 +184,7 @@ static Vector4 ComputeLogarithmicDepthDecodingParams(float nearPlane, float farP depthParams.x = 1.0f / c; depthParams.y = Mathf.Log(c * (f - n) + 1, 2); depthParams.z = n - 1.0f / c; // Same - depthParams.w = 0.0f; + depthParams.w = n; return depthParams; } @@ -214,17 +192,12 @@ static Vector4 ComputeLogarithmicDepthDecodingParams(float nearPlane, float farP public partial class HDRenderPipeline { - ComputeShader m_VolumeVoxelizationCS = null; - ComputeShader m_VolumetricLightingCS = null; - ComputeShader m_VolumetricLightingFilteringCS = null; - - List m_VisibleVolumeBounds = null; - List m_VisibleVolumeData = null; - internal const int k_MaxVisibleDensityVolumeCount = 512; + ComputeShader m_VolumeVoxelizationCS = null; + ComputeShader m_VolumetricLightingCS = null; + ComputeShader m_VolumetricLightingFilteringCS = null; - // Static keyword is required here else we get a "DestroyBuffer can only be called from the main thread" - ComputeBuffer m_VisibleVolumeBoundsBuffer = null; - ComputeBuffer m_VisibleVolumeDataBuffer = null; + List m_VisibleVolumeData = null; + internal const int k_MaxVisibleDensityVolumeCount = 512; // These two buffers do not depend on the frameID and are therefore shared by all views. RTHandle m_DensityBuffer; @@ -235,7 +208,7 @@ public partial class HDRenderPipeline Vector3Int m_CurrentVolumetricBufferSize; - ShaderVariablesVolumetric m_ShaderVariablesVolumetricCB = new ShaderVariablesVolumetric(); + ShaderVariablesVolumetric m_ShaderVariablesVolumetricCB = new ShaderVariablesVolumetric(); // Is the feature globally disabled? bool m_SupportVolumetrics = false; @@ -594,10 +567,7 @@ internal void CreateVolumetricLightingBuffers() Debug.Assert(m_DensityBuffer == null); Debug.Assert(m_LightingBuffer == null); - m_VisibleVolumeBounds = new List(); - m_VisibleVolumeData = new List(); - m_VisibleVolumeBoundsBuffer = new ComputeBuffer(k_MaxVisibleDensityVolumeCount, Marshal.SizeOf(typeof(OrientedBBox))); - m_VisibleVolumeDataBuffer = new ComputeBuffer(k_MaxVisibleDensityVolumeCount, Marshal.SizeOf(typeof(DensityVolumeEngineData))); + m_VisibleVolumeData = new List(); // Allocate the smallest possible 3D texture. // We will perform rescaling manually, in a custom manner, based on volume parameters. @@ -628,11 +598,7 @@ internal void DestroyVolumetricLightingBuffers() RTHandles.Release(m_MaxZMask); RTHandles.Release(m_DilatedMaxZMask); - CoreUtils.SafeRelease(m_VisibleVolumeDataBuffer); - CoreUtils.SafeRelease(m_VisibleVolumeBoundsBuffer); - - m_VisibleVolumeData = null; // free() - m_VisibleVolumeBounds = null; // free() + m_VisibleVolumeData = null; // free() } // Must be called AFTER UpdateVolumetricBufferParams. @@ -761,7 +727,6 @@ DensityVolumeList PrepareVisibleDensityVolumeList(HDCamera hdCamera, CommandBuff camOffset = camPosition; // Camera-relative } - m_VisibleVolumeBounds.Clear(); m_VisibleVolumeData.Clear(); // Collect all visible finite volume data, and upload it to the GPU. @@ -774,7 +739,7 @@ DensityVolumeList PrepareVisibleDensityVolumeList(HDCamera hdCamera, CommandBuff // TODO: cache these? var obb = new OrientedBBox(Matrix4x4.TRS(volume.transform.position, volume.transform.rotation, volume.parameters.size)); - // Handle camera-relative rendering. + // Make the OBB camera-relative. obb.center -= camOffset; // Frustum cull on the CPU for now. TODO: do it on the GPU. @@ -783,19 +748,14 @@ DensityVolumeList PrepareVisibleDensityVolumeList(HDCamera hdCamera, CommandBuff if (GeometryUtils.Overlap(obb, hdCamera.frustum, 6, 8)) { // TODO: cache these? - var data = volume.parameters.ConvertToEngineData(); + var data = volume.parameters.ConvertToEngineData(obb); - m_VisibleVolumeBounds.Add(obb); m_VisibleVolumeData.Add(data); } } - m_VisibleVolumeBoundsBuffer.SetData(m_VisibleVolumeBounds); - m_VisibleVolumeDataBuffer.SetData(m_VisibleVolumeData); - // Fill the struct with pointers in order to share the data with the light loop. - densityVolumes.bounds = m_VisibleVolumeBounds; - densityVolumes.density = m_VisibleVolumeData; + densityVolumes.data = m_VisibleVolumeData; return densityVolumes; } @@ -843,7 +803,6 @@ unsafe void UpdateShaderVariableslVolumetrics(ref ShaderVariablesVolumetric cb, for (int j = 0; j < 16; ++j) cb._VBufferCoordToViewDirWS[i * 16 + j] = m_PixelCoordToViewDirWS[i][j]; cb._VBufferUnitDepthTexelSpacing = HDUtils.ComputZPlaneTexelSpacing(1.0f, vFoV, resolution.y); - cb._NumVisibleDensityVolumes = (uint)m_VisibleVolumeBounds.Count; cb._CornetteShanksConstant = CornetteShanksPhasePartConstant(fog.anisotropy.value); cb._VBufferHistoryIsValid = hdCamera.volumetricHistoryIsValid ? 1u : 0u; @@ -908,7 +867,8 @@ VolumeVoxelizationParameters PrepareVolumeVoxelizationParameters(HDCamera hdCame var currParams = hdCamera.vBufferParams[currIdx]; parameters.viewCount = hdCamera.viewCount; - parameters.tiledLighting = HasLightToCull() && hdCamera.frameSettings.IsEnabled(FrameSettingsField.BigTilePrepass); + parameters.tiledLighting = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting) && m_BoundedEntityCollection.GetEntityCount(BoundedEntityCategory.DensityVolume) > 0; + bool optimal = currParams.voxelSize == 8; parameters.voxelizationCS = m_VolumeVoxelizationCS; @@ -933,17 +893,17 @@ VolumeVoxelizationParameters PrepareVolumeVoxelizationParameters(HDCamera hdCame static void VolumeVoxelizationPass(in VolumeVoxelizationParameters parameters, RTHandle densityBuffer, - ComputeBuffer visibleVolumeBoundsBuffer, - ComputeBuffer visibleVolumeDataBuffer, - ComputeBuffer bigTileLightList, + ComputeBuffer coarseTileBuffer, + ComputeBuffer zBinBuffer, CommandBuffer cmd) { if (parameters.tiledLighting) - cmd.SetComputeBufferParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs.g_vBigTileLightList, bigTileLightList); + { + cmd.SetComputeBufferParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._CoarseTileBuffer, coarseTileBuffer); + cmd.SetComputeBufferParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._zBinBuffer, zBinBuffer); + } cmd.SetComputeTextureParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._VBufferDensity, densityBuffer); - cmd.SetComputeBufferParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._VolumeBounds, visibleVolumeBoundsBuffer); - cmd.SetComputeBufferParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._VolumeData, visibleVolumeDataBuffer); cmd.SetComputeTextureParam(parameters.voxelizationCS, parameters.voxelizationKernel, HDShaderIDs._VolumeMaskAtlas, parameters.volumeAtlas); ConstantBuffer.Push(cmd, parameters.volumetricCB, parameters.voxelizationCS, HDShaderIDs._ShaderVariablesVolumetric); @@ -1018,7 +978,7 @@ VolumetricLightingParameters PrepareVolumetricLightingParameters(HDCamera hdCame var fog = hdCamera.volumeStack.GetComponent(); // Only available in the Play Mode because all the frame counters in the Edit Mode are broken. - parameters.tiledLighting = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BigTilePrepass); + parameters.tiledLighting = hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting); bool volumeAllowsReprojection = ((int)fog.denoisingMode.value & (int)FogDenoisingMode.Reprojection) != 0; parameters.enableReprojection = hdCamera.IsVolumetricReprojectionEnabled() && volumeAllowsReprojection; bool enableAnisotropy = fog.anisotropy.value != 0; @@ -1028,7 +988,7 @@ VolumetricLightingParameters PrepareVolumetricLightingParameters(HDCamera hdCame parameters.volumetricLightingFilteringCS = m_VolumetricLightingFilteringCS; parameters.volumetricLightingCS.shaderKeywords = null; - CoreUtils.SetKeyword(parameters.volumetricLightingCS, "LIGHTLOOP_DISABLE_TILE_AND_CLUSTER", !parameters.tiledLighting); + CoreUtils.SetKeyword(parameters.volumetricLightingCS, "COARSE_BINNING", parameters.tiledLighting); CoreUtils.SetKeyword(parameters.volumetricLightingCS, "ENABLE_REPROJECTION", parameters.enableReprojection); CoreUtils.SetKeyword(parameters.volumetricLightingCS, "ENABLE_ANISOTROPY", enableAnisotropy); CoreUtils.SetKeyword(parameters.volumetricLightingCS, "VL_PRESET_OPTIMAL", optimal); @@ -1059,11 +1019,15 @@ static void VolumetricLightingPass(in VolumetricLightingParameters parameters, RTHandle maxZTexture, RTHandle historyRT, RTHandle feedbackRT, - ComputeBuffer bigTileLightList, + ComputeBuffer coarseTileBuffer, + ComputeBuffer zBinBuffer, CommandBuffer cmd) { if (parameters.tiledLighting) - cmd.SetComputeBufferParam(parameters.volumetricLightingCS, parameters.volumetricLightingKernel, HDShaderIDs.g_vBigTileLightList, bigTileLightList); + { + cmd.SetComputeBufferParam(parameters.volumetricLightingCS, parameters.volumetricLightingKernel, HDShaderIDs._CoarseTileBuffer, coarseTileBuffer); + cmd.SetComputeBufferParam(parameters.volumetricLightingCS, parameters.volumetricLightingKernel, HDShaderIDs._zBinBuffer, zBinBuffer); + } cmd.SetComputeTextureParam(parameters.volumetricLightingCS, parameters.volumetricLightingKernel, HDShaderIDs._MaxZMaskTexture, maxZTexture); // Read diff --git a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl index e3b0e94022f..977df133528 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl @@ -10,10 +10,16 @@ #define DENSITYVOLUMEFALLOFFMODE_LINEAR (0) #define DENSITYVOLUMEFALLOFFMODE_EXPONENTIAL (1) -// Generated from UnityEngine.Rendering.HighDefinition.DensityVolumeEngineData +// Generated from UnityEngine.Rendering.HighDefinition.DensityVolumeData // PackingRules = Exact -struct DensityVolumeEngineData +struct DensityVolumeData { + float3 right; + float extentX; + float3 up; + float extentY; + float3 center; + float extentZ; float3 scattering; float extinction; float3 textureTiling; @@ -34,7 +40,7 @@ struct DensityVolumeEngineData CBUFFER_START(ShaderVariablesVolumetric) float4x4 _VBufferCoordToViewDirWS[2]; float _VBufferUnitDepthTexelSpacing; - uint _NumVisibleDensityVolumes; + uint _Pad2_SVV; float _CornetteShanksConstant; uint _VBufferHistoryIsValid; float4 _VBufferSampleOffset; @@ -56,57 +62,81 @@ CBUFFER_START(ShaderVariablesVolumetric) CBUFFER_END // -// Accessors for UnityEngine.Rendering.HighDefinition.DensityVolumeEngineData +// Accessors for UnityEngine.Rendering.HighDefinition.DensityVolumeData // -float3 GetScattering(DensityVolumeEngineData value) +float3 GetRight(DensityVolumeData value) +{ + return value.right; +} +float GetExtentX(DensityVolumeData value) +{ + return value.extentX; +} +float3 GetUp(DensityVolumeData value) +{ + return value.up; +} +float GetExtentY(DensityVolumeData value) +{ + return value.extentY; +} +float3 GetCenter(DensityVolumeData value) +{ + return value.center; +} +float GetExtentZ(DensityVolumeData value) +{ + return value.extentZ; +} +float3 GetScattering(DensityVolumeData value) { return value.scattering; } -float GetExtinction(DensityVolumeEngineData value) +float GetExtinction(DensityVolumeData value) { return value.extinction; } -float3 GetTextureTiling(DensityVolumeEngineData value) +float3 GetTextureTiling(DensityVolumeData value) { return value.textureTiling; } -int GetInvertFade(DensityVolumeEngineData value) +int GetInvertFade(DensityVolumeData value) { return value.invertFade; } -float3 GetTextureScroll(DensityVolumeEngineData value) +float3 GetTextureScroll(DensityVolumeData value) { return value.textureScroll; } -float GetRcpDistFadeLen(DensityVolumeEngineData value) +float GetRcpDistFadeLen(DensityVolumeData value) { return value.rcpDistFadeLen; } -float3 GetRcpPosFaceFade(DensityVolumeEngineData value) +float3 GetRcpPosFaceFade(DensityVolumeData value) { return value.rcpPosFaceFade; } -float GetEndTimesRcpDistFadeLen(DensityVolumeEngineData value) +float GetEndTimesRcpDistFadeLen(DensityVolumeData value) { return value.endTimesRcpDistFadeLen; } -float3 GetRcpNegFaceFade(DensityVolumeEngineData value) +float3 GetRcpNegFaceFade(DensityVolumeData value) { return value.rcpNegFaceFade; } -int GetUseVolumeMask(DensityVolumeEngineData value) +int GetUseVolumeMask(DensityVolumeData value) { return value.useVolumeMask; } -float3 GetAtlasOffset(DensityVolumeEngineData value) +float3 GetAtlasOffset(DensityVolumeData value) { return value.atlasOffset; } -int GetFalloffMode(DensityVolumeEngineData value) +int GetFalloffMode(DensityVolumeData value) { return value.falloffMode; } -float4 GetMaskSize(DensityVolumeEngineData value) +float4 GetMaskSize(DensityVolumeData value) { return value.maskSize; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.shader index 1722da83356..35fe41b5a02 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/AxF/AxF.shader @@ -501,7 +501,8 @@ Shader "HDRP/AxF" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING #define SHADERPASS SHADERPASS_FORWARD // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalSystem.cs b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalSystem.cs index 984eed5e45b..6789ed8ed29 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalSystem.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalSystem.cs @@ -279,8 +279,8 @@ public Camera CurrentCamera // clustered draw data static public DecalData[] m_DecalDatas = new DecalData[kDecalBlockSize]; - static public SFiniteLightBound[] m_Bounds = new SFiniteLightBound[kDecalBlockSize]; - static public LightVolumeData[] m_LightVolumes = new LightVolumeData[kDecalBlockSize]; + static public FiniteLightBound[] m_Bounds = new FiniteLightBound[kDecalBlockSize]; + //static public LightVolumeData[] m_LightVolumes = new LightVolumeData[kDecalBlockSize]; static public TextureScaleBias[] m_DiffuseTextureScaleBias = new TextureScaleBias[kDecalBlockSize]; static public TextureScaleBias[] m_NormalTextureScaleBias = new TextureScaleBias[kDecalBlockSize]; static public TextureScaleBias[] m_MaskTextureScaleBias = new TextureScaleBias[kDecalBlockSize]; @@ -644,15 +644,14 @@ private void GetDecalVolumeDataAndBound(Matrix4x4 decalToWorld, Matrix4x4 worldT // The culling system culls pixels that are further // than a threshold to the box influence extents. // So we use an arbitrary threshold here (k_BoxCullingExtentOffset) - m_LightVolumes[m_DecalDatasCount].lightCategory = (uint)LightCategory.Decal; - m_LightVolumes[m_DecalDatasCount].lightVolume = (uint)LightVolumeType.Box; - m_LightVolumes[m_DecalDatasCount].featureFlags = (uint)LightFeatureFlags.Env; - m_LightVolumes[m_DecalDatasCount].lightPos = influencePositionVS; - m_LightVolumes[m_DecalDatasCount].lightAxisX = influenceRightVS; - m_LightVolumes[m_DecalDatasCount].lightAxisY = influenceUpVS; - m_LightVolumes[m_DecalDatasCount].lightAxisZ = influenceForwardVS; - m_LightVolumes[m_DecalDatasCount].boxInnerDist = influenceExtents - HDRenderPipeline.k_BoxCullingExtentThreshold; - m_LightVolumes[m_DecalDatasCount].boxInvRange.Set(1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.x, 1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.y, 1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.z); + //m_LightVolumes[m_DecalDatasCount].lightCategory = (uint)BoundedEntityCategory.Decal; + //m_LightVolumes[m_DecalDatasCount].featureFlags = (uint)LightFeatureFlags.Env; // WTF? + //m_LightVolumes[m_DecalDatasCount].lightPos = influencePositionVS; + //m_LightVolumes[m_DecalDatasCount].lightAxisX = influenceRightVS; + //m_LightVolumes[m_DecalDatasCount].lightAxisY = influenceUpVS; + //m_LightVolumes[m_DecalDatasCount].lightAxisZ = influenceForwardVS; + //m_LightVolumes[m_DecalDatasCount].boxInnerDist = influenceExtents - HDRenderPipeline.k_BoxCullingExtentThreshold; + //m_LightVolumes[m_DecalDatasCount].boxInvRange.Set(1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.x, 1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.y, 1.0f / HDRenderPipeline.k_BoxCullingExtentThreshold.z); } private void AssignCurrentBatches(ref Matrix4x4[] decalToWorldBatch, ref Matrix4x4[] normalToWorldBatch, ref float[] decalLayerMaskBatch, int batchCount) @@ -1123,8 +1122,8 @@ public void CreateDrawData() { int newDecalDatasSize = ((m_DecalsVisibleThisFrame + kDecalBlockSize - 1) / kDecalBlockSize) * kDecalBlockSize; m_DecalDatas = new DecalData[newDecalDatasSize]; - m_Bounds = new SFiniteLightBound[newDecalDatasSize]; - m_LightVolumes = new LightVolumeData[newDecalDatasSize]; + m_Bounds = new FiniteLightBound[newDecalDatasSize]; + //m_LightVolumes = new LightVolumeData[newDecalDatasSize]; m_DiffuseTextureScaleBias = new TextureScaleBias[newDecalDatasSize]; m_NormalTextureScaleBias = new TextureScaleBias[newDecalDatasSize]; m_MaskTextureScaleBias = new TextureScaleBias[newDecalDatasSize]; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl index b813af2a25d..2bf1ba64567 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalUtilities.hlsl @@ -169,27 +169,9 @@ void EvalDecalMask( PositionInputs posInput, float3 vtxNormal, float3 positionRW } } -#if defined(_SURFACE_TYPE_TRANSPARENT) && defined(HAS_LIGHTLOOP) // forward transparent using clustered decals -DecalData FetchDecal(uint start, uint i) -{ -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - int j = FetchIndex(start, i); -#else - int j = start + i; -#endif - return _DecalDatas[j]; -} - -DecalData FetchDecal(uint index) -{ - return _DecalDatas[index]; -} -#endif - DecalSurfaceData GetDecalSurfaceData(PositionInputs posInput, float3 vtxNormal, inout float alpha) { #if defined(_SURFACE_TYPE_TRANSPARENT) && defined(HAS_LIGHTLOOP) // forward transparent using clustered decals - uint decalCount, decalStart; DBufferType0 DBuffer0 = float4(0.0, 0.0, 0.0, 1.0); DBufferType1 DBuffer1 = float4(0.5, 0.5, 0.5, 1.0); DBufferType2 DBuffer2 = float4(0.0, 0.0, 0.0, 1.0); @@ -199,17 +181,8 @@ DecalSurfaceData GetDecalSurfaceData(PositionInputs posInput, float3 vtxNormal, float2 DBuffer3 = float2(1.0, 1.0); #endif -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_DECAL, decalStart, decalCount); - - // Fast path is when we all pixels in a wave are accessing same tile or cluster. - uint decalStartLane0; - bool fastPath = IsFastPath(decalStart, decalStartLane0); - -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - decalCount = _DecalCount; - decalStart = 0; -#endif + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); float3 positionRWS = posInput.positionWS; @@ -219,38 +192,19 @@ DecalSurfaceData GetDecalSurfaceData(PositionInputs posInput, float3 vtxNormal, uint decalLayerMask = GetMeshRenderingDecalLayer(); - // Scalarized loop. All decals that are in a tile/cluster touched by any pixel in the wave are loaded (scalar load), only the ones relevant to current thread/pixel are processed. - // For clarity, the following code will follow the convention: variables starting with s_ are wave uniform (meant for scalar register), - // v_ are variables that might have different value for each thread in the wave (meant for vector registers). - // This will perform more loads than it is supposed to, however, the benefits should offset the downside, especially given that decal data accessed should be largely coherent - // Note that the above is valid only if wave intriniscs are supported. - uint v_decalListOffset = 0; - uint v_decalIdx = decalStart; - while (v_decalListOffset < decalCount) - { -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - v_decalIdx = FetchIndex(decalStart, v_decalListOffset); -#else - v_decalIdx = decalStart + v_decalListOffset; -#endif // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER + EntityLookupParameters params = InitializeDecalLookup(tile, zBin); - uint s_decalIdx = ScalarizeElementIndex(v_decalIdx, fastPath); - if (s_decalIdx == -1) - break; + uint i = 0; - DecalData s_decalData = FetchDecal(s_decalIdx); - bool isRejected = (s_decalData.decalLayerMask & decalLayerMask) == 0; - - // If current scalar and vector decal index match, we process the decal. The v_decalListOffset for current thread is increased. - // Note that the following should really be ==, however, since helper lanes are not considered by WaveActiveMin, such helper lanes could - // end up with a unique v_decalIdx value that is smaller than s_decalIdx hence being stuck in a loop. All the active lanes will not have this problem. - if (s_decalIdx >= v_decalIdx) + DecalData decalData; + while (TryLoadDecalData(i, params, decalData)) + { + if ((decalData.decalLayerMask & decalLayerMask) != 0) { - v_decalListOffset++; - if (!isRejected) - EvalDecalMask(posInput, vtxNormal, positionRWSDdx, positionRWSDdy, s_decalData, DBuffer0, DBuffer1, DBuffer2, DBuffer3, alpha); + EvalDecalMask(posInput, vtxNormal, positionRWSDdx, positionRWSDdy, decalData, DBuffer0, DBuffer1, DBuffer2, DBuffer3, alpha); } + i++; } #else // Opaque - used DBuffer FETCH_DBUFFER(DBuffer, _DBufferTexture, int2(posInput.positionSS.xy)); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/ShaderVariablesDecal.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/ShaderVariablesDecal.hlsl index f2fdfa622e7..ed5a9e6bdbd 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/ShaderVariablesDecal.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/ShaderVariablesDecal.hlsl @@ -1,6 +1,6 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/Decal.cs.hlsl" -StructuredBuffer _DecalDatas; +StructuredBuffer _DecalData; TEXTURE2D(_DecalAtlas2D); SAMPLER(_trilinear_clamp_sampler_DecalAtlas2D); diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLit.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLit.shader index 7649fde6a94..98cc320eb85 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLit.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLit.shader @@ -920,13 +920,14 @@ Shader "HDRP/LayeredLit" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST - #ifndef SHADER_STAGE_FRAGMENT #define SHADOW_LOW #define USE_FPTL_LIGHTLIST #endif + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING + #define SHADERPASS SHADERPASS_FORWARD // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI) // Don't do it with debug display mode as it is possible there is no depth prepass in this case diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLitTessellation.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLitTessellation.shader index 92f5df5b6f6..af23fd4ef9b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLitTessellation.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/LayeredLit/LayeredLitTessellation.shader @@ -897,13 +897,14 @@ Shader "HDRP/LayeredLitTessellation" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST - #ifndef SHADER_STAGE_FRAGMENT #define SHADOW_LOW #define USE_FPTL_LIGHTLIST #endif + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING + #define SHADERPASS SHADERPASS_FORWARD // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI) // Don't do it with debug display mode as it is possible there is no depth prepass in this case diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl index a58dd941199..2a12e665726 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl @@ -151,14 +151,17 @@ uint FeatureFlagsToTileVariant(uint featureFlags) #ifdef USE_INDIRECT -uint TileVariantToFeatureFlags(uint variant, uint tileIndex) +uint TileVariantToFeatureFlags(uint variant, uint tile, uint eye) { if (variant == NUM_FEATURE_VARIANTS - 1) { + // Same as in 'classification.compute'. + uint bufferIndex = tile + IndexFromCoordinate(uint3(0, 0, eye), TILE_BUFFER_DIMS); + // We don't have any compile-time feature information. // Therefore, we load the feature classification data at runtime to avoid // entering every single branch based on feature flags. - return g_TileFeatureFlags[tileIndex]; + return g_TileFeatureFlags[bufferIndex]; } else { diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.shader index 8c4583eaa40..e215541d121 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.shader @@ -239,6 +239,7 @@ Shader "HDRP/Lit" HLSLINCLUDE #pragma target 4.5 + // #pragma enable_d3d11_debug_symbols //------------------------------------------------------------------------------------- // Variant @@ -825,7 +826,8 @@ Shader "HDRP/Lit" #define SHADOW_LOW #endif - #define USE_CLUSTERED_LIGHTLIST // There is not FPTL lighting when using transparent + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING #define SHADERPASS SHADERPASS_FORWARD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" @@ -901,13 +903,13 @@ Shader "HDRP/Lit" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST - #ifndef SHADER_STAGE_FRAGMENT #define SHADOW_LOW - #define USE_FPTL_LIGHTLIST #endif + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING + #define SHADERPASS SHADERPASS_FORWARD // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI) // Don't do it with debug display mode as it is possible there is no depth prepass in this case diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitTessellation.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitTessellation.shader index 85b91bd42d5..4277619313b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitTessellation.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitTessellation.shader @@ -757,7 +757,9 @@ Shader "HDRP/LitTessellation" #define SHADOW_LOW #endif - #define USE_CLUSTERED_LIGHTLIST // There is not FPTL lighting when using transparent + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING + #define SHADERPASS SHADERPASS_FORWARD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl" @@ -826,13 +828,13 @@ Shader "HDRP/LitTessellation" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile_fragment USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST - #ifndef SHADER_STAGE_FRAGMENT #define SHADOW_LOW - #define USE_FPTL_LIGHTLIST #endif + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING + #define SHADERPASS SHADERPASS_FORWARD // In case of opaque we don't want to perform the alpha test, it is done in depth prepass and we use depth equal for ztest (setup from UI) // Don't do it with debug display mode as it is possible there is no depth prepass in this case diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit.shader index 7caa1bfd20a..b633d458929 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit.shader @@ -260,7 +260,8 @@ Shader "HDRP/TerrainLit" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING #define SHADERPASS SHADERPASS_FORWARD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLitTemplate.hlsl" diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Basemap.shader b/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Basemap.shader index d008bddc8a9..91f660b9b42 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Basemap.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Basemap.shader @@ -211,7 +211,8 @@ Shader "Hidden/HDRP/TerrainLit_Basemap" // Supported shadow modes per light type #pragma multi_compile_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING #define SHADERPASS SHADERPASS_FORWARD #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLitTemplate.hlsl" diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomPrefilter.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomPrefilter.compute index efafffdd8c5..85ac1ed7b37 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomPrefilter.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomPrefilter.compute @@ -45,7 +45,7 @@ float3 PartialAverage(float3 c0, float3 c1, float3 c2, float3 c3, float w0, floa void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw); float2 uv = posInputs.positionNDC; #if LOW_QUALITY diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomUpsample.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomUpsample.compute index ca40036677d..ccd9f59da9f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomUpsample.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/BloomUpsample.compute @@ -27,7 +27,7 @@ CBUFFER_END void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw); float2 uv = ClampAndScaleUV(posInputs.positionNDC, _BloomBicubicParams.zw, 1.0f); float3 highRes = LOAD_TEXTURE2D_X(_InputHighTexture, clamp(posInputs.positionSS, 0, _TexelSize.xy - 1)).xyz; diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCoCReproject.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCoCReproject.compute index 4ddecbfbe11..cc7b0a6428e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCoCReproject.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCoCReproject.compute @@ -40,7 +40,7 @@ void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); float2 uv = posInputs.positionNDC; #if 0 diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCombine.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCombine.compute index e837e088c3e..ed8b5251893 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCombine.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldCombine.compute @@ -34,7 +34,7 @@ void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); float2 uv = posInputs.positionNDC * _RTHandleScale.xy; CTYPE outColor = LOAD_TEXTURE2D_X(_InputTexture, posInputs.positionSS).CTYPE_SWIZZLE; diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldGather.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldGather.compute index b51732347c9..9eb7d92d0d7 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldGather.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldGather.compute @@ -77,7 +77,7 @@ void MAIN(uint3 dispatchThreadId : SV_DispatchThreadID) if (any(dispatchThreadId.xy >= uint2(_TexelSize.xy))) return; // Out of bounds, discard - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw, uint2(GROUP_RES, GROUP_RES)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw); float2 uv = posInputs.positionNDC; float2 barrelUV = (uv * 2.0 - 1.0) * BarrelClipping; diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldMipSafe.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldMipSafe.compute index ecc1053a3c2..9ce1c21add3 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldMipSafe.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldMipSafe.compute @@ -26,7 +26,7 @@ void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _TexelSize.zw); float2 uv =ClampAndScaleUVForBilinear(posInputs.positionNDC); _OutputTexture[COORD_TEXTURE2D_X(posInputs.positionSS)] = SAMPLE_TEXTURE2D_X_LOD(_InputTexture, sampler_LinearClamp, uv, 0.0).CTYPE_SWIZZLE; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldPrefilter.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldPrefilter.compute index 32a92351a79..0bf0600e44a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldPrefilter.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DepthOfFieldPrefilter.compute @@ -37,7 +37,7 @@ void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); float2 texelSize = _ScreenSize.zw * _TargetScale.x; - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), texelSize, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), texelSize); float2 uv = posInputs.positionNDC; #if FULL_RES diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFCircleOfConfusion.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFCircleOfConfusion.compute index 8981d33ab2f..7ed40bd20ab 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFCircleOfConfusion.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFCircleOfConfusion.compute @@ -30,7 +30,7 @@ RW_TEXTURE2D_X(float, _OutputTexture); void KMainCoCPhysical(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_RES, GROUP_RES)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); float depth = LoadCameraDepth(posInputs.positionSS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFGather.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFGather.compute index d215d5d47c3..03e44f4443e 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFGather.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/DoFGather.compute @@ -91,7 +91,7 @@ float2 PointInCircle(float angle) [numthreads(GROUP_RES, GROUP_RES, 1)] void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_RES, GROUP_RES)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); // Bucket 0 : far focus region // Bucket 1 : in focus region diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/Exposure.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/Exposure.compute index 42ec7dc97bb..fa6b4060743 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/Exposure.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/Exposure.compute @@ -48,7 +48,7 @@ void KPrePass(uint2 dispatchThreadId : SV_DispatchThreadID) // For XR, interleave single-pass views in a checkerboard pattern UNITY_XR_ASSIGN_VIEW_INDEX((dispatchThreadId.x + dispatchThreadId.y) % _XRViewCount) - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId), rcp(PREPASS_TEX_SIZE), uint2(8u, 8u)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId), rcp(PREPASS_TEX_SIZE)); float2 uv = ClampAndScaleUVForBilinear(posInputs.positionNDC); float luma = SampleLuminance(uv); diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/PaniniProjection.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/PaniniProjection.compute index 5a97277dd31..3f697d84050 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/PaniniProjection.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/PaniniProjection.compute @@ -107,7 +107,7 @@ void KMain(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); float2 uv = posInputs.positionNDC; #if GENERIC diff --git a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/UberPost.compute b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/UberPost.compute index 6167b9c3ff0..1f7ec2be4d5 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/UberPost.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/UberPost.compute @@ -113,7 +113,7 @@ float2 DistortUV(float2 uv) void Uber(uint3 dispatchThreadId : SV_DispatchThreadID) { UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z); - PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw, uint2(GROUP_SIZE, GROUP_SIZE)); + PositionInputs posInputs = GetPositionInput(float2(dispatchThreadId.xy), _ScreenSize.zw); float2 uv = posInputs.positionNDC; float2 uvDistorted = DistortUV(uv); CTYPE color = 0.0; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs index 9e88da5d9f2..c2dd2ece554 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDProfileId.cs @@ -14,6 +14,10 @@ internal enum HDProfileId ScreenSpaceShadowsDebug, BuildLightList, GenerateLightAABBs, + PerformZBinning, + FillScreenTiles, + PerformClassification, + BuildDispatchIndirect, Distortion, AccumulateDistortion, ApplyDistortion, diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs index abdd3eac668..33cd20e716c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs @@ -558,97 +558,49 @@ void RenderDensityVolumeAtlasDebugOverlay(RenderGraph renderGraph, TextureHandle } } - class RenderTileClusterDebugOverlayPassData + class RenderZBinDebugOverlayPassData : DebugOverlayPassData { public HDCamera hdCamera; - public TextureHandle depthPyramidTexture; - public ComputeBufferHandle tileList; - public ComputeBufferHandle lightList; - public ComputeBufferHandle perVoxelLightList; - public ComputeBufferHandle dispatchIndirect; + public ComputeBufferHandle fineTileBuffer; + public ComputeBufferHandle zBinBuffer; public Material debugViewTilesMaterial; public LightingDebugSettings lightingDebugSettings; } - void RenderTileClusterDebugOverlay(RenderGraph renderGraph, TextureHandle colorBuffer, TextureHandle depthBuffer, in BuildGPULightListOutput lightLists, TextureHandle depthPyramidTexture, HDCamera hdCamera) + void RenderZBinDebugOverlay(RenderGraph renderGraph, TextureHandle colorBuffer, TextureHandle depthBuffer, in BuildGPULightListOutput lightLists, HDCamera hdCamera) { - // Depending on the debug mode enabled we may not be building the light lists so the buffers would not be valid in this case. - if (!lightLists.tileList.IsValid()) + if (!m_CurrentDebugDisplaySettings.data.lightingDebugSettings.debugBinnedLighting) return; - if (m_CurrentDebugDisplaySettings.data.lightingDebugSettings.tileClusterDebug == TileClusterDebug.None) - return; - - using (var builder = renderGraph.AddRenderPass("RenderTileAndClusterDebugOverlay", out var passData, ProfilingSampler.Get(HDProfileId.TileClusterLightingDebug))) + using (var builder = renderGraph.AddRenderPass("RenderZBinDebugOverlay", out var passData)) { passData.hdCamera = hdCamera; passData.debugOverlay = m_DebugOverlay; passData.colorBuffer = builder.UseColorBuffer(colorBuffer, 0); passData.depthBuffer = builder.UseDepthBuffer(depthBuffer, DepthAccess.ReadWrite); - passData.depthPyramidTexture = builder.ReadTexture(depthPyramidTexture); - passData.tileList = builder.ReadComputeBuffer(lightLists.tileList); - passData.lightList = builder.ReadComputeBuffer(lightLists.lightList); - passData.perVoxelLightList = builder.ReadComputeBuffer(lightLists.perVoxelLightLists); - passData.dispatchIndirect = builder.ReadComputeBuffer(lightLists.dispatchIndirectBuffer); passData.debugViewTilesMaterial = m_DebugViewTilesMaterial; passData.lightingDebugSettings = m_CurrentDebugDisplaySettings.data.lightingDebugSettings; + passData.fineTileBuffer = builder.ReadComputeBuffer(lightLists.fineTileBuffer); + passData.zBinBuffer = builder.ReadComputeBuffer(lightLists.zBinBuffer); builder.SetRenderFunc( - (RenderTileClusterDebugOverlayPassData data, RenderGraphContext ctx) => + (RenderZBinDebugOverlayPassData data, RenderGraphContext ctx) => { - int w = data.hdCamera.actualWidth; - int h = data.hdCamera.actualHeight; - int numTilesX = (w + 15) / 16; - int numTilesY = (h + 15) / 16; - int numTiles = numTilesX * numTilesY; - var lightingDebug = data.lightingDebugSettings; - - // Debug tiles - if (lightingDebug.tileClusterDebug == TileClusterDebug.MaterialFeatureVariants) + if (lightingDebug.binnedDebugMode == BinnedDebugMode.VisualizeVariants) { - if (GetFeatureVariantsEnabled(data.hdCamera.frameSettings)) - { - // featureVariants - data.debugViewTilesMaterial.SetInt(HDShaderIDs._NumTiles, numTiles); - data.debugViewTilesMaterial.SetInt(HDShaderIDs._ViewTilesFlags, (int)lightingDebug.tileClusterDebugByCategory); - data.debugViewTilesMaterial.SetVector(HDShaderIDs._MousePixelCoord, HDUtils.GetMouseCoordinates(data.hdCamera)); - data.debugViewTilesMaterial.SetVector(HDShaderIDs._MouseClickPixelCoord, HDUtils.GetMouseClickCoordinates(data.hdCamera)); - data.debugViewTilesMaterial.SetBuffer(HDShaderIDs.g_TileList, data.tileList); - data.debugViewTilesMaterial.SetBuffer(HDShaderIDs.g_DispatchIndirectBuffer, data.dispatchIndirect); - data.debugViewTilesMaterial.EnableKeyword("USE_FPTL_LIGHTLIST"); - data.debugViewTilesMaterial.DisableKeyword("USE_CLUSTERED_LIGHTLIST"); - data.debugViewTilesMaterial.DisableKeyword("SHOW_LIGHT_CATEGORIES"); - data.debugViewTilesMaterial.EnableKeyword("SHOW_FEATURE_VARIANTS"); - if (DeferredUseComputeAsPixel(data.hdCamera.frameSettings)) - data.debugViewTilesMaterial.EnableKeyword("IS_DRAWPROCEDURALINDIRECT"); - else - data.debugViewTilesMaterial.DisableKeyword("IS_DRAWPROCEDURALINDIRECT"); - ctx.cmd.DrawProcedural(Matrix4x4.identity, data.debugViewTilesMaterial, 0, MeshTopology.Triangles, numTiles * 6); - } + // TODO } - else // tile or cluster + else { - bool bUseClustered = lightingDebug.tileClusterDebug == TileClusterDebug.Cluster; - - // lightCategories - data.debugViewTilesMaterial.SetInt(HDShaderIDs._ViewTilesFlags, (int)lightingDebug.tileClusterDebugByCategory); - data.debugViewTilesMaterial.SetInt(HDShaderIDs._ClusterDebugMode, bUseClustered ? (int)lightingDebug.clusterDebugMode : (int)ClusterDebugMode.VisualizeOpaque); - data.debugViewTilesMaterial.SetFloat(HDShaderIDs._ClusterDebugDistance, lightingDebug.clusterDebugDistance); - data.debugViewTilesMaterial.SetVector(HDShaderIDs._MousePixelCoord, HDUtils.GetMouseCoordinates(data.hdCamera)); - data.debugViewTilesMaterial.SetVector(HDShaderIDs._MouseClickPixelCoord, HDUtils.GetMouseClickCoordinates(data.hdCamera)); - data.debugViewTilesMaterial.SetBuffer(HDShaderIDs.g_vLightListGlobal, bUseClustered ? data.perVoxelLightList : data.lightList); - data.debugViewTilesMaterial.SetTexture(HDShaderIDs._CameraDepthTexture, data.depthPyramidTexture); - data.debugViewTilesMaterial.EnableKeyword(bUseClustered ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST"); - data.debugViewTilesMaterial.DisableKeyword(!bUseClustered ? "USE_CLUSTERED_LIGHTLIST" : "USE_FPTL_LIGHTLIST"); - data.debugViewTilesMaterial.EnableKeyword("SHOW_LIGHT_CATEGORIES"); data.debugViewTilesMaterial.DisableKeyword("SHOW_FEATURE_VARIANTS"); - if (!bUseClustered && data.hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA)) - data.debugViewTilesMaterial.EnableKeyword("DISABLE_TILE_MODE"); - else - data.debugViewTilesMaterial.DisableKeyword("DISABLE_TILE_MODE"); - + data.debugViewTilesMaterial.EnableKeyword("SHOW_LIGHT_CATEGORIES"); + data.debugViewTilesMaterial.SetInt("_SelectedEntityCategory", (int)lightingDebug.selectedEntityCategory); + data.debugViewTilesMaterial.SetVector(HDShaderIDs._MousePixelCoord, HDUtils.GetMouseCoordinates(data.hdCamera)); + data.debugViewTilesMaterial.SetInt(HDShaderIDs._BinnedDebugMode, (int)lightingDebug.binnedDebugMode); + data.debugViewTilesMaterial.SetInt(HDShaderIDs._StartBucket, lightingDebug.startBucket); + data.debugViewTilesMaterial.SetInt(HDShaderIDs._EndBucket, lightingDebug.endBucket); CoreUtils.DrawFullScreen(ctx.cmd, data.debugViewTilesMaterial, 0); } }); @@ -796,7 +748,7 @@ void RenderDebugOverlays(RenderGraph renderGraph, RenderAtlasDebugOverlay(renderGraph, colorBuffer, depthBuffer, m_TextureCaches.reflectionPlanarProbeCache.GetTexCache(), (int)m_CurrentDebugDisplaySettings.data.lightingDebugSettings.planarReflectionProbeMipLevel, applyExposure: true, "RenderPlanarProbeAtlasOverlay", HDProfileId.DisplayPlanarReflectionProbeAtlas); RenderDensityVolumeAtlasDebugOverlay(renderGraph, colorBuffer, depthBuffer); - RenderTileClusterDebugOverlay(renderGraph, colorBuffer, depthBuffer, lightLists, depthPyramidTexture, hdCamera); + RenderZBinDebugOverlay(renderGraph, colorBuffer, depthBuffer, lightLists, hdCamera); RenderShadowsDebugOverlay(renderGraph, colorBuffer, depthBuffer, shadowResult); RenderDecalOverlay(renderGraph, colorBuffer, depthBuffer, hdCamera); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.LightLoop.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.LightLoop.cs index ccbd1e54e6b..7e047252215 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.LightLoop.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.LightLoop.cs @@ -46,28 +46,34 @@ class BuildGPULightListPassData { public BuildGPULightListParameters buildGPULightListParameters; public TextureHandle depthBuffer; - public TextureHandle stencilTexture; + public TextureHandle depthPyramidBuffer; + public TextureHandle stencilBuffer; public TextureHandle[] gBuffer = new TextureHandle[RenderGraph.kMaxMRTCount]; public int gBufferCount; // Buffers filled with the CPU outside of render graph. public ComputeBufferHandle convexBoundsBuffer; - public ComputeBufferHandle AABBBoundsBuffer; - // Transient buffers that are not used outside of BuildGPULight list so they don't need to go outside the pass. - public ComputeBufferHandle globalLightListAtomic; - public ComputeBufferHandle lightVolumeDataBuffer; + // Transient buffers that are not used outside of BuildGPULightList so they don't need to go outside the pass. + public ComputeBufferHandle xyBoundsBuffer; + public ComputeBufferHandle wBoundsBuffer; public BuildGPULightListOutput output = new BuildGPULightListOutput(); } struct BuildGPULightListOutput { + public ComputeBufferHandle coarseTileBuffer; + public ComputeBufferHandle fineTileBuffer; + public ComputeBufferHandle zBinBuffer; + public ComputeBufferHandle tileFeatureFlagsBuffer; // Deferred + public ComputeBufferHandle tileListBuffer; // Deferred + public ComputeBufferHandle dispatchIndirectBuffer; // Deferred + + /* Old junk below. */ + // Tile public ComputeBufferHandle lightList; - public ComputeBufferHandle tileList; - public ComputeBufferHandle tileFeatureFlags; - public ComputeBufferHandle dispatchIndirectBuffer; // Big Tile public ComputeBufferHandle bigTileLightList; @@ -87,13 +93,15 @@ static BuildGPULightListResources PrepareBuildGPULightListResources(RenderGraphC if (depthBuffer == null) { - buildLightListResources.depthBuffer = context.defaultResources.blackTextureXR; - buildLightListResources.stencilTexture = context.defaultResources.blackTextureXR; + buildLightListResources.depthBuffer = context.defaultResources.blackTextureXR; + buildLightListResources.depthPyramidBuffer = context.defaultResources.blackTextureXR; + buildLightListResources.stencilBuffer = context.defaultResources.blackTextureXR; } else { - buildLightListResources.depthBuffer = data.depthBuffer; - buildLightListResources.stencilTexture = data.stencilTexture; + buildLightListResources.depthBuffer = data.depthBuffer; + buildLightListResources.depthPyramidBuffer = data.depthPyramidBuffer; + buildLightListResources.stencilBuffer = data.stencilBuffer; } if (data.buildGPULightListParameters.computeMaterialVariants && data.buildGPULightListParameters.enableFeatureVariants) @@ -103,19 +111,24 @@ static BuildGPULightListResources PrepareBuildGPULightListResources(RenderGraphC buildLightListResources.gBuffer[i] = data.gBuffer[i]; } - buildLightListResources.lightVolumeDataBuffer = data.lightVolumeDataBuffer; - buildLightListResources.convexBoundsBuffer = data.convexBoundsBuffer; - buildLightListResources.AABBBoundsBuffer = data.AABBBoundsBuffer; - buildLightListResources.globalLightListAtomic = data.globalLightListAtomic; + buildLightListResources.convexBoundsBuffer = data.convexBoundsBuffer; + buildLightListResources.xyBoundsBuffer = data.xyBoundsBuffer; + buildLightListResources.wBoundsBuffer = data.wBoundsBuffer; - buildLightListResources.tileFeatureFlags = data.output.tileFeatureFlags; + buildLightListResources.coarseTileBuffer = data.output.coarseTileBuffer; + buildLightListResources.fineTileBuffer = data.output.fineTileBuffer; + buildLightListResources.zBinBuffer = data.output.zBinBuffer; + buildLightListResources.tileFeatureFlagsBuffer = data.output.tileFeatureFlagsBuffer; + buildLightListResources.tileListBuffer = data.output.tileListBuffer; buildLightListResources.dispatchIndirectBuffer = data.output.dispatchIndirectBuffer; - buildLightListResources.perVoxelOffset = data.output.perVoxelOffset; - buildLightListResources.perTileLogBaseTweak = data.output.perTileLogBaseTweak; - buildLightListResources.tileList = data.output.tileList; + + /* Old junk below. */ + + buildLightListResources.lightList = data.output.lightList; buildLightListResources.bigTileLightList = data.output.bigTileLightList; + buildLightListResources.perVoxelOffset = data.output.perVoxelOffset; buildLightListResources.perVoxelLightLists = data.output.perVoxelLightLists; - buildLightListResources.lightList = data.output.lightList; + buildLightListResources.perTileLogBaseTweak = data.output.perTileLogBaseTweak; return buildLightListResources; } @@ -123,9 +136,9 @@ static BuildGPULightListResources PrepareBuildGPULightListResources(RenderGraphC BuildGPULightListOutput BuildGPULightList(RenderGraph renderGraph, HDCamera hdCamera, TileAndClusterData tileAndClusterData, - int totalLightCount, ref ShaderVariablesLightList constantBuffer, TextureHandle depthStencilBuffer, + TextureHandle depthPyramidBuffer, TextureHandle stencilBufferCopy, GBufferOutput gBuffer) { @@ -133,9 +146,10 @@ BuildGPULightListOutput BuildGPULightList(RenderGraph render { builder.EnableAsyncCompute(hdCamera.frameSettings.BuildLightListRunsAsync()); - passData.buildGPULightListParameters = PrepareBuildGPULightListParameters(hdCamera, tileAndClusterData, ref constantBuffer, totalLightCount); + passData.buildGPULightListParameters = PrepareBuildGPULightListParameters(hdCamera, tileAndClusterData, ref constantBuffer); passData.depthBuffer = builder.ReadTexture(depthStencilBuffer); - passData.stencilTexture = builder.ReadTexture(stencilBufferCopy); + passData.depthPyramidBuffer = builder.ReadTexture(depthPyramidBuffer); + passData.stencilBuffer = builder.ReadTexture(stencilBufferCopy); if (passData.buildGPULightListParameters.computeMaterialVariants && passData.buildGPULightListParameters.enableFeatureVariants) { for (int i = 0; i < gBuffer.gBufferCount; ++i) @@ -148,13 +162,12 @@ BuildGPULightListOutput BuildGPULightList(RenderGraph render // Those buffer are filled with the CPU outside of the render graph. passData.convexBoundsBuffer = builder.ReadComputeBuffer(renderGraph.ImportComputeBuffer(tileAndClusterData.convexBoundsBuffer)); - passData.lightVolumeDataBuffer = builder.ReadComputeBuffer(renderGraph.ImportComputeBuffer(tileAndClusterData.lightVolumeDataBuffer)); + //passData.lightVolumeDataBuffer = builder.ReadComputeBuffer(renderGraph.ImportComputeBuffer(tileAndClusterData.lightVolumeDataBuffer)); - passData.globalLightListAtomic = builder.CreateTransientComputeBuffer(new ComputeBufferDesc(1, sizeof(uint)) { name = "LightListAtomic"}); - passData.AABBBoundsBuffer = builder.CreateTransientComputeBuffer(new ComputeBufferDesc(m_MaxViewCount * 2 * tileAndClusterData.maxLightCount, 4 * sizeof(float)) { name = "AABBBoundBuffer" }); + //passData.globalLightListAtomic = builder.CreateTransientComputeBuffer(new ComputeBufferDesc(1, sizeof(uint)) { name = "LightListAtomic"}); - var nrTilesX = (m_MaxCameraWidth + LightDefinitions.s_TileSizeFptl - 1) / LightDefinitions.s_TileSizeFptl; - var nrTilesY = (m_MaxCameraHeight + LightDefinitions.s_TileSizeFptl - 1) / LightDefinitions.s_TileSizeFptl; + var nrTilesX = (m_MaxCameraWidth + TiledLightingConstants.s_TileSizeFptl - 1) / TiledLightingConstants.s_TileSizeFptl; + var nrTilesY = (m_MaxCameraHeight + TiledLightingConstants.s_TileSizeFptl - 1) / TiledLightingConstants.s_TileSizeFptl; var nrTiles = nrTilesX * nrTilesY * m_MaxViewCount; const int capacityUShortsPerTile = 32; const int dwordsPerTile = (capacityUShortsPerTile + 1) >> 1; // room for 31 lights and a nrLights value. @@ -164,32 +177,23 @@ BuildGPULightListOutput BuildGPULightList(RenderGraph render // note that nrTiles include the viewCount in allocation below // Tile buffers passData.output.lightList = builder.WriteComputeBuffer( - renderGraph.CreateComputeBuffer(new ComputeBufferDesc((int)LightCategory.Count * dwordsPerTile * nrTiles, sizeof(uint)) { name = "LightList" })); - passData.output.tileList = builder.WriteComputeBuffer( - renderGraph.CreateComputeBuffer(new ComputeBufferDesc(LightDefinitions.s_NumFeatureVariants * nrTiles, sizeof(uint)) { name = "TileList" })); - passData.output.tileFeatureFlags = builder.WriteComputeBuffer( - renderGraph.CreateComputeBuffer(new ComputeBufferDesc(nrTiles, sizeof(uint)) { name = "TileFeatureFlags" })); - // DispatchIndirect: Buffer with arguments has to have three integer numbers at given argsOffset offset: number of work groups in X dimension, number of work groups in Y dimension, number of work groups in Z dimension. - // DrawProceduralIndirect: Buffer with arguments has to have four integer numbers at given argsOffset offset: vertex count per instance, instance count, start vertex location, and start instance location - // Use use max size of 4 unit for allocation - passData.output.dispatchIndirectBuffer = builder.WriteComputeBuffer( - renderGraph.CreateComputeBuffer(new ComputeBufferDesc(m_MaxViewCount * LightDefinitions.s_NumFeatureVariants * 4, sizeof(uint), ComputeBufferType.IndirectArguments) { name = "DispatchIndirectBuffer" })); + renderGraph.CreateComputeBuffer(new ComputeBufferDesc(/*(int)LightCategory.Count*/ 1 * dwordsPerTile * nrTiles, sizeof(uint)) { name = "LightList" })); } // Big Tile buffer - if (passData.buildGPULightListParameters.runBigTilePrepass) + if (passData.buildGPULightListParameters.binEntities) { var nrBigTilesX = (m_MaxCameraWidth + 63) / 64; var nrBigTilesY = (m_MaxCameraHeight + 63) / 64; var nrBigTiles = nrBigTilesX * nrBigTilesY * m_MaxViewCount; // TODO: (Nick) In the case of Probe Volumes, this buffer could be trimmed down / tuned more specifically to probe volumes if we added a s_MaxNrBigTileProbeVolumesPlusOne value. passData.output.bigTileLightList = builder.WriteComputeBuffer( - renderGraph.CreateComputeBuffer(new ComputeBufferDesc(LightDefinitions.s_MaxNrBigTileLightsPlusOne * nrBigTiles, sizeof(uint)) { name = "BigTiles" })); + renderGraph.CreateComputeBuffer(new ComputeBufferDesc(TiledLightingConstants.s_MaxNrBigTileLightsPlusOne * nrBigTiles, sizeof(uint)) { name = "BigTiles" })); } // Cluster buffers - var nrClustersX = (m_MaxCameraWidth + LightDefinitions.s_TileSizeClustered - 1) / LightDefinitions.s_TileSizeClustered; - var nrClustersY = (m_MaxCameraHeight + LightDefinitions.s_TileSizeClustered - 1) / LightDefinitions.s_TileSizeClustered; + var nrClustersX = (m_MaxCameraWidth + TiledLightingConstants.s_TileSizeClustered - 1) / TiledLightingConstants.s_TileSizeClustered; + var nrClustersY = (m_MaxCameraHeight + TiledLightingConstants.s_TileSizeClustered - 1) / TiledLightingConstants.s_TileSizeClustered; var nrClusterTiles = nrClustersX * nrClustersY * m_MaxViewCount; passData.output.perVoxelOffset = builder.WriteComputeBuffer( @@ -202,20 +206,67 @@ BuildGPULightListOutput BuildGPULightList(RenderGraph render renderGraph.CreateComputeBuffer(new ComputeBufferDesc(nrClusterTiles, sizeof(float)) { name = "PerTileLogBaseTweak" })); } + if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.BinnedLighting)) + { + int viewCount = m_MaxViewCount; + int maxBoundedEntityCount = tileAndClusterData.maxBoundedEntityCount; + int tileEntryLimit = m_TileEntryLimit; + int elementsPerTile = HDUtils.DivRoundUp(tileEntryLimit, 32); // Each element is a DWORD + + passData.xyBoundsBuffer = builder.CreateTransientComputeBuffer(new ComputeBufferDesc(maxBoundedEntityCount * viewCount, 4 * sizeof(float)) { name = "xyBoundsBuffer" }); // {x_min, x_max, y_min, y_max} + passData.wBoundsBuffer = builder.CreateTransientComputeBuffer(new ComputeBufferDesc(maxBoundedEntityCount * viewCount, 2 * sizeof(float)) { name = "wBoundsBuffer" }); // {w_min, w_max} + passData.output.zBinBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(TiledLightingConstants.s_zBinCount * elementsPerTile * viewCount, sizeof(uint)) { name = "zBinBuffer" })); + + Vector2Int coarseTileBufferDimensions = GetCoarseTileBufferDimensions(hdCamera); + + // The tile buffer is a bit field with 1 bit per entity. + int coarseTileBufferElementCount = coarseTileBufferDimensions.x * coarseTileBufferDimensions.y * viewCount * elementsPerTile; + + passData.output.coarseTileBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(coarseTileBufferElementCount, sizeof(uint)) { name = "CoarseTileBuffer" })); + + Vector2Int fineTileBufferDimensions = GetFineTileBufferDimensions(hdCamera); + + // The tile buffer is a bit field with 1 bit per entity. + int fineTileBufferElementCount = fineTileBufferDimensions.x * fineTileBufferDimensions.y * viewCount * elementsPerTile; + + passData.output.fineTileBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(fineTileBufferElementCount, sizeof(uint)) { name = "FineTileBuffer" })); + + // Assume the deferred lighting CS uses fine tiles. + int numTiles = fineTileBufferDimensions.x * fineTileBufferDimensions.y; + + /* We may want to allocate the 3 buffers below conditionally. */ + passData.output.tileFeatureFlagsBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(numTiles * viewCount, sizeof(uint)) { name = "TileFeatureFlagsBuffer" })); + passData.output.tileListBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(numTiles * viewCount * TiledLightingConstants.s_NumFeatureVariants, sizeof(uint)) { name = "TileListBuffer" })); + + // DispatchIndirect: Buffer with arguments has to have three integer numbers at given argsOffset offset: number of work groups in X dimension, number of work groups in Y dimension, number of work groups in Z dimension. + // DrawProceduralIndirect: Buffer with arguments has to have four integer numbers at given argsOffset offset: vertex count per instance, instance count, start vertex location, and start instance location + // Use use max size of 4 unit for allocation + passData.output.dispatchIndirectBuffer = builder.WriteComputeBuffer(renderGraph.CreateComputeBuffer(new ComputeBufferDesc(TiledLightingConstants.s_NumFeatureVariants * viewCount, 4 * sizeof(uint), ComputeBufferType.IndirectArguments) { name = "DispatchIndirectBuffer" })); + } + builder.SetRenderFunc( (BuildGPULightListPassData data, RenderGraphContext context) => { - bool tileFlagsWritten = false; - var buildLightListResources = PrepareBuildGPULightListResources(context, data); - ClearLightLists(data.buildGPULightListParameters, buildLightListResources, context.cmd); - GenerateLightsScreenSpaceAABBs(data.buildGPULightListParameters, buildLightListResources, context.cmd); - BigTilePrepass(data.buildGPULightListParameters, buildLightListResources, context.cmd); - BuildPerTileLightList(data.buildGPULightListParameters, buildLightListResources, ref tileFlagsWritten, context.cmd); - VoxelLightListGeneration(data.buildGPULightListParameters, buildLightListResources, context.cmd); + using (new ProfilingScope(context.cmd, ProfilingSampler.Get(HDProfileId.BuildLightList))) + { + // The algorithm (below) works even if the bounded entity count is 0. + // That is fairly efficient, and allows us to avoid weird special cases. + ClearLightLists(data.buildGPULightListParameters, buildLightListResources, context.cmd); + GenerateLightsScreenSpaceAABBs(data.buildGPULightListParameters, buildLightListResources, context.cmd); + + // Both Z-binning and tile filling can be executed concurrently. + // This should improve GPU utilization. + PerformZBinning(data.buildGPULightListParameters, buildLightListResources, context.cmd); + FillScreenTiles(data.buildGPULightListParameters, buildLightListResources, context.cmd); + } - BuildDispatchIndirectArguments(data.buildGPULightListParameters, buildLightListResources, tileFlagsWritten, context.cmd); + // This is not a part of light list generation + // and should therefore be outside the 'BuildLightList' profiling scope. + // We should add it to the 'RenderDeferredLighting' profiling scope. + PerformClassification(data.buildGPULightListParameters, buildLightListResources, context.cmd); + BuildDispatchIndirect(data.buildGPULightListParameters, buildLightListResources, context.cmd); }); return passData.output; @@ -279,7 +330,8 @@ class DeferredLightingPassData public int shadowMaskTextureIndex; public TextureHandle[] gbuffer = new TextureHandle[8]; - public ComputeBufferHandle lightListBuffer; + public ComputeBufferHandle fineTileBuffer; + public ComputeBufferHandle zBinBuffer; public ComputeBufferHandle tileFeatureFlagsBuffer; public ComputeBufferHandle tileListBuffer; public ComputeBufferHandle dispatchIndirectBuffer; @@ -335,9 +387,11 @@ LightingOutput RenderDeferredLighting(RenderGraph renderGraph, HDShadowManager.ReadShadowResult(shadowResult, builder); - passData.lightListBuffer = builder.ReadComputeBuffer(lightLists.lightList); - passData.tileFeatureFlagsBuffer = builder.ReadComputeBuffer(lightLists.tileFeatureFlags); - passData.tileListBuffer = builder.ReadComputeBuffer(lightLists.tileList); + /* TODO: we shouldn't be reading these buffers if tiled lighting or classification are disabled... */ + passData.fineTileBuffer = builder.ReadComputeBuffer(lightLists.fineTileBuffer); + passData.zBinBuffer = builder.ReadComputeBuffer(lightLists.zBinBuffer); + passData.tileFeatureFlagsBuffer = builder.ReadComputeBuffer(lightLists.tileFeatureFlagsBuffer); + passData.tileListBuffer = builder.ReadComputeBuffer(lightLists.tileListBuffer); passData.dispatchIndirectBuffer = builder.ReadComputeBuffer(lightLists.dispatchIndirectBuffer); var output = new LightingOutput(); @@ -354,7 +408,8 @@ LightingOutput RenderDeferredLighting(RenderGraph renderGraph, resources.depthStencilBuffer = data.depthBuffer; resources.depthTexture = data.depthTexture; - resources.lightListBuffer = data.lightListBuffer; + resources.fineTileBuffer = data.fineTileBuffer; + resources.zBinBuffer = data.zBinBuffer; resources.tileFeatureFlagsBuffer = data.tileFeatureFlagsBuffer; resources.tileListBuffer = data.tileListBuffer; resources.dispatchIndirectBuffer = data.dispatchIndirectBuffer; @@ -666,10 +721,10 @@ class RenderContactShadowPassData public int actualHeight; public int depthTextureParameterName; - public LightLoopLightData lightLoopLightData; public TextureHandle depthTexture; public TextureHandle contactShadowsTexture; - public ComputeBufferHandle lightList; + public ComputeBufferHandle fineTileBuffer; + public ComputeBufferHandle zBinBuffer; } TextureHandle RenderContactShadows(RenderGraph renderGraph, HDCamera hdCamera, TextureHandle depthTexture, in BuildGPULightListOutput lightLists, int firstMipOffsetY) @@ -722,8 +777,8 @@ TextureHandle RenderContactShadows(RenderGraph renderGraph, HDCamera hdCamera, T passData.depthTextureParameterName = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA) ? HDShaderIDs._CameraDepthValuesTexture : HDShaderIDs._CameraDepthTexture; - passData.lightLoopLightData = m_LightLoopLightData; - passData.lightList = builder.ReadComputeBuffer(lightLists.lightList); + passData.fineTileBuffer = builder.ReadComputeBuffer(lightLists.fineTileBuffer); + passData.zBinBuffer = builder.ReadComputeBuffer(lightLists.zBinBuffer); passData.depthTexture = builder.ReadTexture(depthTexture); passData.contactShadowsTexture = builder.WriteTexture(renderGraph.CreateTexture(new TextureDesc(Vector2.one, true, true) { colorFormat = GraphicsFormat.R32_UInt, enableRandomWrite = true, clearBuffer = clearBuffer, clearColor = Color.clear, name = "ContactShadowsBuffer" })); @@ -736,11 +791,9 @@ TextureHandle RenderContactShadows(RenderGraph renderGraph, HDCamera hdCamera, T ctx.cmd.SetComputeVectorParam(data.contactShadowsCS, HDShaderIDs._ContactShadowParamsParameters, data.params1); ctx.cmd.SetComputeVectorParam(data.contactShadowsCS, HDShaderIDs._ContactShadowParamsParameters2, data.params2); ctx.cmd.SetComputeVectorParam(data.contactShadowsCS, HDShaderIDs._ContactShadowParamsParameters3, data.params3); - ctx.cmd.SetComputeBufferParam(data.contactShadowsCS, data.kernel, HDShaderIDs._DirectionalLightDatas, data.lightLoopLightData.directionalLightData); - // Send light list to the compute - ctx.cmd.SetComputeBufferParam(data.contactShadowsCS, data.kernel, HDShaderIDs._LightDatas, data.lightLoopLightData.lightData); - ctx.cmd.SetComputeBufferParam(data.contactShadowsCS, data.kernel, HDShaderIDs.g_vLightListGlobal, data.lightList); + ctx.cmd.SetComputeBufferParam(data.contactShadowsCS, data.kernel, HDShaderIDs._FineTileBuffer, data.fineTileBuffer); + ctx.cmd.SetComputeBufferParam(data.contactShadowsCS, data.kernel, HDShaderIDs._zBinBuffer, data.zBinBuffer); ctx.cmd.SetComputeTextureParam(data.contactShadowsCS, data.kernel, data.depthTextureParameterName, data.depthTexture); ctx.cmd.SetComputeTextureParam(data.contactShadowsCS, data.kernel, HDShaderIDs._ContactShadowTextureUAV, data.contactShadowsTexture); @@ -754,11 +807,11 @@ TextureHandle RenderContactShadows(RenderGraph renderGraph, HDCamera hdCamera, T ctx.cmd.SetRayTracingVectorParam(data.contactShadowsRTS, HDShaderIDs._ContactShadowParamsParameters, data.params1); ctx.cmd.SetRayTracingVectorParam(data.contactShadowsRTS, HDShaderIDs._ContactShadowParamsParameters2, data.params2); - ctx.cmd.SetRayTracingBufferParam(data.contactShadowsRTS, HDShaderIDs._DirectionalLightDatas, data.lightLoopLightData.directionalLightData); - // Send light list to the compute - ctx.cmd.SetRayTracingBufferParam(data.contactShadowsRTS, HDShaderIDs._LightDatas, data.lightLoopLightData.lightData); - ctx.cmd.SetRayTracingBufferParam(data.contactShadowsRTS, HDShaderIDs.g_vLightListGlobal, data.lightList); + // ZBIN CHECK Is this intended? it probably does not work anymore. + //// Send light list to the compute + //ctx.cmd.SetRayTracingBufferParam(data.contactShadowsRTS, HDShaderIDs._LightDatas, data.lightLoopLightData.lightData); + //ctx.cmd.SetRayTracingBufferParam(data.contactShadowsRTS, HDShaderIDs.g_vLightListGlobal, data.lightList); ctx.cmd.SetRayTracingTextureParam(data.contactShadowsRTS, HDShaderIDs._DepthTexture, data.depthTexture); ctx.cmd.SetRayTracingTextureParam(data.contactShadowsRTS, HDShaderIDs._ContactShadowTextureUAV, data.contactShadowsTexture); @@ -776,16 +829,14 @@ class VolumeVoxelizationPassData { public VolumeVoxelizationParameters parameters; public TextureHandle densityBuffer; - public ComputeBufferHandle bigTileLightListBuffer; - public ComputeBuffer visibleVolumeBoundsBuffer; - public ComputeBuffer visibleVolumeDataBuffer; + public ComputeBufferHandle coarseTileBuffer; + public ComputeBufferHandle zBinBuffer; } TextureHandle VolumeVoxelizationPass(RenderGraph renderGraph, HDCamera hdCamera, - ComputeBuffer visibleVolumeBoundsBuffer, - ComputeBuffer visibleVolumeDataBuffer, - ComputeBufferHandle bigTileLightList) + ComputeBufferHandle coarseTileBuffer, + ComputeBufferHandle zBinBuffer) { if (Fog.IsVolumetricFogEnabled(hdCamera)) { @@ -794,10 +845,12 @@ TextureHandle VolumeVoxelizationPass(RenderGraph renderGraph, builder.EnableAsyncCompute(hdCamera.frameSettings.VolumeVoxelizationRunsAsync()); passData.parameters = PrepareVolumeVoxelizationParameters(hdCamera); - passData.visibleVolumeBoundsBuffer = visibleVolumeBoundsBuffer; - passData.visibleVolumeDataBuffer = visibleVolumeDataBuffer; + if (passData.parameters.tiledLighting) - passData.bigTileLightListBuffer = builder.ReadComputeBuffer(bigTileLightList); + { + passData.coarseTileBuffer = builder.ReadComputeBuffer(coarseTileBuffer); + passData.zBinBuffer = builder.ReadComputeBuffer(zBinBuffer); + } float tileSize = 0; Vector3Int viewportSize = ComputeVolumetricViewportSize(hdCamera, ref tileSize); @@ -809,9 +862,8 @@ TextureHandle VolumeVoxelizationPass(RenderGraph renderGraph, { VolumeVoxelizationPass(data.parameters, data.densityBuffer, - data.visibleVolumeBoundsBuffer, - data.visibleVolumeDataBuffer, - data.bigTileLightListBuffer, + data.coarseTileBuffer, + data.zBinBuffer, ctx.cmd); }); @@ -872,10 +924,11 @@ class VolumetricLightingPassData public TextureHandle maxZBuffer; public TextureHandle historyBuffer; public TextureHandle feedbackBuffer; - public ComputeBufferHandle bigTileLightListBuffer; + public ComputeBufferHandle coarseTileBuffer; + public ComputeBufferHandle zBinBuffer; } - TextureHandle VolumetricLightingPass(RenderGraph renderGraph, HDCamera hdCamera, TextureHandle depthTexture, TextureHandle densityBuffer, TextureHandle maxZBuffer, ComputeBufferHandle bigTileLightListBuffer, ShadowResult shadowResult) + TextureHandle VolumetricLightingPass(RenderGraph renderGraph, HDCamera hdCamera, TextureHandle depthTexture, TextureHandle densityBuffer, TextureHandle maxZBuffer, ComputeBufferHandle coarseTileBuffer, ComputeBufferHandle zBinBuffer, ShadowResult shadowResult) { if (Fog.IsVolumetricFogEnabled(hdCamera)) { @@ -888,8 +941,13 @@ TextureHandle VolumetricLightingPass(RenderGraph renderGraph, HDCamera hdCamera, //builder.EnableAsyncCompute(hdCamera.frameSettings.VolumetricLightingRunsAsync()); passData.parameters = parameters; + if (passData.parameters.tiledLighting) - passData.bigTileLightListBuffer = builder.ReadComputeBuffer(bigTileLightListBuffer); + { + passData.coarseTileBuffer = builder.ReadComputeBuffer(coarseTileBuffer); + passData.zBinBuffer = builder.ReadComputeBuffer(zBinBuffer); + } + passData.densityBuffer = builder.ReadTexture(densityBuffer); passData.depthTexture = builder.ReadTexture(depthTexture); passData.maxZBuffer = builder.ReadTexture(maxZBuffer); @@ -922,7 +980,8 @@ TextureHandle VolumetricLightingPass(RenderGraph renderGraph, HDCamera hdCamera, data.maxZBuffer, data.parameters.enableReprojection ? data.historyBuffer : (RTHandle)null, data.parameters.enableReprojection ? data.feedbackBuffer : (RTHandle)null, - data.bigTileLightListBuffer, + data.coarseTileBuffer, + data.zBinBuffer, ctx.cmd); if (data.parameters.filterVolume) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs index dcec61eb556..00f737daf82 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs @@ -102,7 +102,7 @@ void ExecuteWithRenderGraph(RenderRequest renderRequest, } else { - gpuLightListOutput = BuildGPULightList(m_RenderGraph, hdCamera, m_TileAndClusterData, m_TotalLightCount, ref m_ShaderVariablesLightListCB, prepassOutput.depthBuffer, prepassOutput.stencilBuffer, prepassOutput.gbuffer); + gpuLightListOutput = BuildGPULightList(m_RenderGraph, hdCamera, m_TileAndClusterData, ref m_ShaderVariablesLightListCB, prepassOutput.depthBuffer, prepassOutput.depthPyramidTexture, prepassOutput.stencilBuffer, prepassOutput.gbuffer); // Evaluate the history validation buffer that may be required by temporal accumulation based effects TextureHandle historyValidationTexture = EvaluateHistoryValidationBuffer(m_RenderGraph, hdCamera, prepassOutput.depthBuffer, prepassOutput.resolvedNormalBuffer, prepassOutput.resolvedMotionVectorsBuffer); @@ -114,7 +114,7 @@ void ExecuteWithRenderGraph(RenderRequest renderRequest, lightingBuffers.contactShadowsBuffer = RenderContactShadows(m_RenderGraph, hdCamera, msaa ? prepassOutput.depthValuesMSAA : prepassOutput.depthPyramidTexture, gpuLightListOutput, GetDepthBufferMipChainInfo().mipLevelOffsets[1].y); - var volumetricDensityBuffer = VolumeVoxelizationPass(m_RenderGraph, hdCamera, m_VisibleVolumeBoundsBuffer, m_VisibleVolumeDataBuffer, gpuLightListOutput.bigTileLightList); + var volumetricDensityBuffer = VolumeVoxelizationPass(m_RenderGraph, hdCamera, gpuLightListOutput.coarseTileBuffer, gpuLightListOutput.zBinBuffer); RenderShadows(m_RenderGraph, hdCamera, cullingResults, ref shadowResult); @@ -158,7 +158,7 @@ void ExecuteWithRenderGraph(RenderRequest renderRequest, var maxZMask = GenerateMaxZPass(m_RenderGraph, hdCamera, prepassOutput.depthPyramidTexture, m_DepthBufferMipChainInfo); - var volumetricLighting = VolumetricLightingPass(m_RenderGraph, hdCamera, prepassOutput.depthPyramidTexture, volumetricDensityBuffer, maxZMask, gpuLightListOutput.bigTileLightList, shadowResult); + var volumetricLighting = VolumetricLightingPass(m_RenderGraph, hdCamera, prepassOutput.depthPyramidTexture, volumetricDensityBuffer, maxZMask, gpuLightListOutput.coarseTileBuffer, gpuLightListOutput.zBinBuffer, shadowResult); var deferredLightingOutput = RenderDeferredLighting(m_RenderGraph, hdCamera, colorBuffer, prepassOutput.depthBuffer, prepassOutput.depthPyramidTexture, lightingBuffers, prepassOutput.gbuffer, shadowResult, gpuLightListOutput); @@ -472,9 +472,8 @@ class ForwardPassData public TextureHandle[] renderTarget = new TextureHandle[RenderGraph.kMaxMRTCount]; public int renderTargetCount; public TextureHandle depthBuffer; - public ComputeBufferHandle lightListBuffer; - public ComputeBufferHandle perVoxelOffset; - public ComputeBufferHandle perTileLogBaseTweak; + public ComputeBufferHandle fineTileBuffer; + public ComputeBufferHandle zBinBuffer; public FrameSettings frameSettings; } @@ -504,32 +503,18 @@ void PrepareCommonForwardPassData(RenderGraph renderGraph, TextureHandle depthBuffer, ShadowResult shadowResult) { - bool useFptl = frameSettings.IsEnabled(FrameSettingsField.FPTLForForwardOpaque) && opaque; - data.frameSettings = frameSettings; - data.lightListBuffer = builder.ReadComputeBuffer(useFptl ? lightLists.lightList : lightLists.perVoxelLightLists); - if (!useFptl) - { - data.perVoxelOffset = builder.ReadComputeBuffer(lightLists.perVoxelOffset); - if (lightLists.perTileLogBaseTweak.IsValid()) - data.perTileLogBaseTweak = builder.ReadComputeBuffer(lightLists.perTileLogBaseTweak); - } + + /* TODO: we shouldn't be reading these buffers if tiled lighting is disabled... */ + data.fineTileBuffer = builder.ReadComputeBuffer(lightLists.fineTileBuffer); + data.zBinBuffer = builder.ReadComputeBuffer(lightLists.zBinBuffer); + data.depthBuffer = builder.UseDepthBuffer(depthBuffer, DepthAccess.ReadWrite); data.rendererList = builder.UseRendererList(renderGraph.CreateRendererList(rendererListDesc)); HDShadowManager.ReadShadowResult(shadowResult, builder); } - static void BindGlobalLightListBuffers(ForwardPassData data, RenderGraphContext ctx) - { - ctx.cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListGlobal, data.lightListBuffer); - // Next two are only for cluster rendering. PerTileLogBaseTweak is only when using depth buffer so can be invalid as well. - if (data.perVoxelOffset.IsValid()) - ctx.cmd.SetGlobalBuffer(HDShaderIDs.g_vLayeredOffsetsBuffer, data.perVoxelOffset); - if (data.perTileLogBaseTweak.IsValid()) - ctx.cmd.SetGlobalBuffer(HDShaderIDs.g_logBaseBuffer, data.perTileLogBaseTweak); - } - // Guidelines: In deferred by default there is no opaque in forward. However it is possible to force an opaque material to render in forward // by using the pass "ForwardOnly". In this case the .shader should not have "Forward" but only a "ForwardOnly" pass. // It must also have a "DepthForwardOnly" and no "DepthOnly" pass as forward material (either deferred or forward only rendering) have always a depth pass. @@ -591,11 +576,10 @@ void RenderForwardOpaque(RenderGraph renderGraph, for (int i = 0; i < data.renderTargetCount; ++i) mrt[i] = data.renderTarget[i]; - BindGlobalLightListBuffers(data, context); BindDBufferGlobalData(data.dbuffer, context); BindGlobalLightingBuffers(data.lightingBuffers, context.cmd); - RenderForwardRendererList(data.frameSettings, data.rendererList, mrt, data.depthBuffer, data.lightListBuffer, true, context.renderContext, context.cmd); + RenderForwardRendererList(data.frameSettings, data.rendererList, mrt, data.depthBuffer, data.fineTileBuffer, data.zBinBuffer, true, context.renderContext, context.cmd); }); } } @@ -693,14 +677,12 @@ void RenderForwardTransparent(RenderGraph renderGraph, if (data.decalsEnabled) DecalSystem.instance.SetAtlas(context.cmd); // for clustered decals - BindGlobalLightListBuffers(data, context); - context.cmd.SetGlobalTexture(HDShaderIDs._SsrLightingTexture, data.transparentSSRLighting); context.cmd.SetGlobalTexture(HDShaderIDs._VBufferLighting, data.volumetricLighting); context.cmd.SetGlobalTexture(HDShaderIDs._CameraDepthTexture, data.depthPyramidTexture); context.cmd.SetGlobalTexture(HDShaderIDs._NormalBufferTexture, data.normalBuffer); - RenderForwardRendererList(data.frameSettings, data.rendererList, mrt, data.depthBuffer, data.lightListBuffer, false, context.renderContext, context.cmd); + RenderForwardRendererList(data.frameSettings, data.rendererList, mrt, data.depthBuffer, data.fineTileBuffer, data.zBinBuffer, false, context.renderContext, context.cmd); }); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index 0eb57fba203..b9d170377fd 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -568,11 +568,14 @@ void ValidateResources() { if (message.severity == UnityEditor.Rendering.ShaderCompilerMessageSeverity.Error) { + string[] platforms = Enum.GetNames(typeof(ShaderCompilerPlatform)); + int platformIndex = Array.IndexOf(Enum.GetValues(typeof(ShaderCompilerPlatform)), message.platform); + // Will be catched by the try in HDRenderPipelineAsset.CreatePipeline() throw new Exception(String.Format( "Compute Shader compilation error on platform {0} in file {1}:{2}: {3}{4}\n" + "HDRP will not run until the error is fixed.\n", - message.platform, message.file, message.line, message.message, message.messageDetails + platforms[platformIndex], message.file, message.line, message.message, message.messageDetails )); } } @@ -2628,18 +2631,15 @@ static void RenderForwardRendererList(FrameSettings frameSettings, RendererList rendererList, RenderTargetIdentifier[] renderTarget, RTHandle depthBuffer, - ComputeBuffer lightListBuffer, + ComputeBuffer fineTileBuffer, + ComputeBuffer zBinBuffer, bool opaque, ScriptableRenderContext renderContext, CommandBuffer cmd) { - // Note: SHADOWS_SHADOWMASK keyword is enabled in HDRenderPipeline.cs ConfigureForShadowMask - bool useFptl = opaque && frameSettings.IsEnabled(FrameSettingsField.FPTLForForwardOpaque); - - // say that we want to use tile/cluster light loop - CoreUtils.SetKeyword(cmd, "USE_FPTL_LIGHTLIST", useFptl); - CoreUtils.SetKeyword(cmd, "USE_CLUSTERED_LIGHTLIST", !useFptl); - cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListGlobal, lightListBuffer); + // TODO: we have so many SetGlobal calls like this that it makes more sense to just do it once... + cmd.SetGlobalBuffer(HDShaderIDs._FineTileBuffer, fineTileBuffer); + cmd.SetGlobalBuffer(HDShaderIDs._zBinBuffer, zBinBuffer); CoreUtils.SetRenderTarget(cmd, renderTarget, depthBuffer); if (opaque) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs index b765596e5cb..2be816dd158 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDStringConstants.cs @@ -137,10 +137,18 @@ static class HDShaderIDs public static readonly int g_vBigTileLightList = Shader.PropertyToID("g_vBigTileLightList"); public static readonly int g_vLightListGlobal = Shader.PropertyToID("g_vLightListGlobal"); public static readonly int g_logBaseBuffer = Shader.PropertyToID("g_logBaseBuffer"); - public static readonly int g_vBoundsBuffer = Shader.PropertyToID("g_vBoundsBuffer"); - public static readonly int _LightVolumeData = Shader.PropertyToID("_LightVolumeData"); - public static readonly int g_data = Shader.PropertyToID("g_data"); public static readonly int g_vLightList = Shader.PropertyToID("g_vLightList"); + public static readonly int _LightVolumeData = Shader.PropertyToID("_LightVolumeData"); + + public static readonly int _EntityBoundsBuffer = Shader.PropertyToID(nameof(_EntityBoundsBuffer)); + public static readonly int _xyBoundsBuffer = Shader.PropertyToID(nameof(_xyBoundsBuffer)); + public static readonly int _wBoundsBuffer = Shader.PropertyToID(nameof(_wBoundsBuffer)); + public static readonly int _CoarseTileBuffer = Shader.PropertyToID(nameof(_CoarseTileBuffer)); + public static readonly int _SrcCoarseTileBuffer = Shader.PropertyToID(nameof(_SrcCoarseTileBuffer)); + public static readonly int _DstCoarseTileBuffer = Shader.PropertyToID(nameof(_DstCoarseTileBuffer)); + public static readonly int _FineTileBuffer = Shader.PropertyToID(nameof(_FineTileBuffer)); + public static readonly int _zBinBuffer = Shader.PropertyToID(nameof(_zBinBuffer)); + public static readonly int _DepthPyramidBuffer = Shader.PropertyToID(nameof(_DepthPyramidBuffer)); public static readonly int g_TileFeatureFlags = Shader.PropertyToID("g_TileFeatureFlags"); @@ -156,9 +164,19 @@ static class HDShaderIDs public static readonly int _EnvCubemapTextures = Shader.PropertyToID("_EnvCubemapTextures"); public static readonly int _Env2DTextures = Shader.PropertyToID("_Env2DTextures"); - public static readonly int _DirectionalLightDatas = Shader.PropertyToID("_DirectionalLightDatas"); - public static readonly int _LightDatas = Shader.PropertyToID("_LightDatas"); - public static readonly int _EnvLightDatas = Shader.PropertyToID("_EnvLightDatas"); + + public static readonly int _DirectionalLightData = Shader.PropertyToID(nameof(_DirectionalLightData)); + public static readonly int _DirectionalLightCount = Shader.PropertyToID(nameof(_DirectionalLightCount)); + public static readonly int _PunctualLightData = Shader.PropertyToID(nameof(_PunctualLightData)); + public static readonly int _PunctualLightCount = Shader.PropertyToID(nameof(_PunctualLightCount)); + public static readonly int _AreaLightData = Shader.PropertyToID(nameof(_AreaLightData)); + public static readonly int _AreaLightCount = Shader.PropertyToID(nameof(_AreaLightCount)); + public static readonly int _ReflectionProbeData = Shader.PropertyToID(nameof(_ReflectionProbeData)); + public static readonly int _EnvLightCount = Shader.PropertyToID(nameof(_EnvLightCount)); + public static readonly int _DecalData = Shader.PropertyToID(nameof(_DecalData)); + public static readonly int _DecalCount = Shader.PropertyToID(nameof(_DecalCount)); + public static readonly int _DensityVolumeData = Shader.PropertyToID(nameof(_DensityVolumeData)); + public static readonly int _DensityVolumeCount = Shader.PropertyToID(nameof(_DensityVolumeCount)); public static readonly int _ProbeVolumeBounds = Shader.PropertyToID("_ProbeVolumeBounds"); public static readonly int _ProbeVolumeDatas = Shader.PropertyToID("_ProbeVolumeDatas"); @@ -237,7 +255,6 @@ static class HDShaderIDs public static readonly int _NormalToWorldID = Shader.PropertyToID("_NormalToWorld"); public static readonly int _DecalAtlas2DID = Shader.PropertyToID("_DecalAtlas2D"); public static readonly int _DecalHTileTexture = Shader.PropertyToID("_DecalHTileTexture"); - public static readonly int _DecalDatas = Shader.PropertyToID("_DecalDatas"); public static readonly int _DecalNormalBufferStencilReadMask = Shader.PropertyToID("_DecalNormalBufferStencilReadMask"); public static readonly int _DecalNormalBufferStencilRef = Shader.PropertyToID("_DecalNormalBufferStencilRef"); public static readonly int _DecalPrepassTexture = Shader.PropertyToID("_DecalPrepassTexture"); @@ -323,6 +340,12 @@ static class HDShaderIDs public static readonly int _MotionVectorTextureMS = Shader.PropertyToID("_MotionVectorTextureMS"); public static readonly int _CameraDepthValuesTexture = Shader.PropertyToID("_CameraDepthValues"); + // z-binning debug view properties + public static readonly int _BinnedDebugMode = Shader.PropertyToID("_BinnedDebugMode"); + public static readonly int _StartBucket = Shader.PropertyToID("_StartBucket"); + public static readonly int _EndBucket = Shader.PropertyToID("_EndBucket"); + + public static readonly int[] _GBufferTexture = { Shader.PropertyToID("_GBufferTexture0"), @@ -594,14 +617,15 @@ static class HDShaderIDs public static readonly int _RaytracingReflectionTexture = Shader.PropertyToID("_RaytracingReflectionTexture"); // Shadows - public static readonly int _RaytracingTargetAreaLight = Shader.PropertyToID("_RaytracingTargetAreaLight"); + public static readonly int _ScreenSpaceShadowIndex = Shader.PropertyToID("_ScreenSpaceShadowIndex"); + public static readonly int _ScreenSpaceShadowLightData = Shader.PropertyToID("_ScreenSpaceShadowLightData"); public static readonly int _RaytracingShadowSlot = Shader.PropertyToID("_RaytracingShadowSlot"); public static readonly int _RaytracingChannelMask = Shader.PropertyToID("_RaytracingChannelMask"); public static readonly int _RaytracingChannelMask0 = Shader.PropertyToID("_RaytracingChannelMask0"); public static readonly int _RaytracingChannelMask1 = Shader.PropertyToID("_RaytracingChannelMask1"); public static readonly int _RaytracingAreaWorldToLocal = Shader.PropertyToID("_RaytracingAreaWorldToLocal"); public static readonly int _RaytracedAreaShadowSample = Shader.PropertyToID("_RaytracedAreaShadowSample"); - public static readonly int _RaytracedAreaShadowIntegration = Shader.PropertyToID("_RaytracedAreaShadowIntegration"); + public static readonly int _RaytracedAreaShadowIntegration = Shader.PropertyToID("_RaytracedAreaShadowIntegration"); public static readonly int _RaytracingDirectionBuffer = Shader.PropertyToID("_RaytracingDirectionBuffer"); public static readonly int _RayTracingLengthBuffer = Shader.PropertyToID("_RayTracingLengthBuffer"); public static readonly int _RaytracingDistanceBufferRW = Shader.PropertyToID("_RaytracingDistanceBufferRW"); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl index 37b48c469f7..e3c23d5a457 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/PathTracing/Shaders/PathTracingLight.hlsl @@ -173,7 +173,7 @@ if (withDistant) { for (i = 0; i < _DirectionalLightCount && list.distantCount < MAX_DISTANT_LIGHT_COUNT; i++) { - if (IsMatchingLightLayer(_DirectionalLightDatas[i].lightLayers, lightLayers) && IsDistantLightActive(_DirectionalLightDatas[i], normal)) + if (IsMatchingLightLayer(_DirectionalLightData[i].lightLayers, lightLayers) && IsDistantLightActive(_DirectionalLightData[i], normal)) list.distantIndex[list.distantCount++] = i; } } @@ -206,7 +206,7 @@ LightData GetLocalLightData(LightList list, float inputSample) DirectionalLightData GetDistantLightData(LightList list, uint i) { - return _DirectionalLightDatas[list.distantIndex[i]]; + return _DirectionalLightData[list.distantIndex[i]]; } DirectionalLightData GetDistantLightData(LightList list, float inputSample) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/HDRaytracingLightCluster.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/HDRaytracingLightCluster.cs index 1b1a15d7b21..38b9e4789e6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/HDRaytracingLightCluster.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/HDRaytracingLightCluster.cs @@ -498,12 +498,10 @@ void BuildLightData(CommandBuffer cmd, HDCamera hdCamera, HDRayTracingLights ray continue; } - // Evaluate all the light type data that we need - LightCategory lightCategory = LightCategory.Count; - GPULightType gpuLightType = GPULightType.Point; - LightVolumeType lightVolumeType = LightVolumeType.Count; - HDLightType lightType = additionalLightData.type; - HDRenderPipeline.EvaluateGPULightType(lightType, additionalLightData.spotLightShape, additionalLightData.areaLightShape, ref lightCategory, ref gpuLightType, ref lightVolumeType); + BoundedEntityCategory lightCategory = BoundedEntityCategory.Count; + GPULightType gpuLightType = GPULightType.Point; + + HDRenderPipeline.EvaluateGPULightType(additionalLightData.type, additionalLightData.spotLightShape, additionalLightData.areaLightShape, ref lightCategory, ref gpuLightType); // Fetch the light component for this light additionalLightData.gameObject.TryGetComponent(out lightComponent); @@ -514,7 +512,6 @@ void BuildLightData(CommandBuffer cmd, HDCamera hdCamera, HDRayTracingLights ray processedData.lightType = additionalLightData.type; processedData.lightCategory = lightCategory; processedData.gpuLightType = gpuLightType; - processedData.lightVolumeType = lightVolumeType; // Both of these positions are non-camera-relative. processedData.distanceToCamera = (additionalLightData.gameObject.transform.position - hdCamera.camera.transform.position).magnitude; processedData.lightDistanceFade = HDUtils.ComputeLinearDistanceFade(processedData.distanceToCamera, additionalLightData.fadeDistance); @@ -541,13 +538,17 @@ void BuildLightData(CommandBuffer cmd, HDCamera hdCamera, HDRayTracingLights ray Vector3 lightDimensions = new Vector3(0.0f, 0.0f, 0.0f); // Use the shared code to build the light data - m_RenderPipeline.GetLightData(cmd, hdCamera, hdShadowSettings, visibleLight, lightComponent, in processedData, - shadowIndex, contactShadowScalableSetting, isRasterization: false, ref lightDimensions, ref screenSpaceShadowIndex, ref screenSpaceChannelSlot, ref lightData); + lightData = m_RenderPipeline.GetLightData(cmd, hdCamera, hdShadowSettings, visibleLight, lightComponent, processedData, + shadowIndex, contactShadowScalableSetting, isRasterization: false, ref lightDimensions, ref screenSpaceShadowIndex, ref screenSpaceChannelSlot); // We make the light position camera-relative as late as possible in order // to allow the preceding code to work with the absolute world space coordinates. - Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; - HDRenderPipeline.UpdateLightCameraRelativetData(ref lightData, camPosWS); + if (ShaderConfig.s_CameraRelativeRendering != 0) + { + Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; + // Caution: 'LightData.positionWS' is camera-relative after this point. + lightData.positionRWS -= camPosWS; + } // Set the data for this light m_LightDataCPUArray.Add(lightData); @@ -584,15 +585,25 @@ void BuildEnvLightData(CommandBuffer cmd, HDCamera hdCamera, HDRayTracingLights // Skip the probe if the probe has never rendered (in realtime cases) or if texture is null if (!probeData.HasValidRenderedData()) continue; - HDRenderPipeline.PreprocessProbeData(ref processedProbe, probeData, hdCamera); + // 'probeBounds' are required to compute the volume of the probe (for sorting in the shader). + // The existing ray tracing code does not appear to have any bounds. Below is a workaround. + // TODO: we should probably use the influence volume of the probe for sorting. + Bounds probeBounds = new Bounds(Vector3.zero, Vector3.one); + + HDRenderPipeline.PreprocessProbeData(ref processedProbe, probeData, probeBounds, hdCamera); var envLightData = new EnvLightData(); m_RenderPipeline.GetEnvLightData(cmd, hdCamera, processedProbe, ref envLightData); - // We make the light position camera-relative as late as possible in order - // to allow the preceding code to work with the absolute world space coordinates. - Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; - HDRenderPipeline.UpdateEnvLighCameraRelativetData(ref envLightData, camPosWS); + if (ShaderConfig.s_CameraRelativeRendering != 0) + { + Vector3 camPosWS = hdCamera.mainViewConstants.worldSpaceCameraPos; + + // Caution: 'EnvLightData.positionRWS' is camera-relative after this point. + envLightData.capturePositionRWS -= camPosWS; + envLightData.influencePositionRWS -= camPosWS; + envLightData.proxyPositionRWS -= camPosWS; + } m_EnvLightDataCPUArray.Add(envLightData); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.compute b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.compute index c4e69f6f2ef..37047482b04 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/DebugLightCluster.compute @@ -33,7 +33,7 @@ void DebugLightCluster(uint2 groupThreadId : SV_GroupThreadID, uint2 groupId : S } // Compute the real world space position of this pixel - PositionInputs posInput = GetPositionInput(currentPixelCoordinate, 1.0 / _ScreenSize.xy, depth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoordinate, 1.0 / _ScreenSize.xy, depth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // If this position is outisde of the cluster, color is gray if(!PointInsideCluster(posInput.positionWS)) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingDeferred.compute b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingDeferred.compute index 6e6ed7b63ab..afc93505e88 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingDeferred.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingDeferred.compute @@ -74,7 +74,7 @@ void RAYTRACING_DEFERRED(uint3 dispatchThreadId : SV_DispatchThreadID, uint2 gro } // First let's compute the position of the pixel from which the ray has been shot - PositionInputs sourcePosInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs sourcePosInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Then compute the pos input of the intersection vertice float3 rayDirection = LOAD_TEXTURE2D_X(_RaytracingDirectionBuffer, currentCoord).xyz; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingGBuffer.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingGBuffer.raytrace index 377db8ab84b..48a5aa0543f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingGBuffer.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Deferred/RaytracingGBuffer.raytrace @@ -100,7 +100,7 @@ void TraceGBuffer(PixelCoordinates coords) } // Compute the position input structure - PositionInputs posInput = GetPositionInput(coords.geometryCoords, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(coords.geometryCoords, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.compute b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.compute index 4dc5dfbaf8a..ec6975f9a3d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.compute @@ -55,7 +55,7 @@ void RaytracingIndirectDiffuseHalfRes(uint3 dispatchThreadId : SV_DispatchThread return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view in world space const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -97,7 +97,7 @@ void RaytracingIndirectDiffuseFullRes(uint3 dispatchThreadId : SV_DispatchThread return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view in world space const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.raytrace index ddc690de4d3..d3bff17b413 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/IndirectDiffuse/RaytracingIndirectDiffuse.raytrace @@ -62,7 +62,7 @@ void RayGenIntegration() return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, 1.0f/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, 1.0f/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); float distanceToCamera = length(posInput.positionWS); // The position is always in the right space. const float3 positionWS = posInput.positionWS; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingSubSurface.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingSubSurface.raytrace index ca8d8b4a577..1c392b0f489 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingSubSurface.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RayTracingSubSurface.raytrace @@ -64,7 +64,7 @@ void RayGenSubSurface() return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentPixelCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Read the normal data NormalData normalData; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.raytrace index 15a66abcd10..5998c4f2af1 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingAmbientOcclusion.raytrace @@ -49,7 +49,7 @@ void RayGenAmbientOcclusion() return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentPixelCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl index 186e7d47ada..b88b2cb616c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingLightLoop.hlsl @@ -21,7 +21,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // Evaluate sun shadows. if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; // TODO: this will cause us to load from the normal buffer first. Does this cause a performance problem? float3 L = -light.forward; @@ -160,9 +160,9 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // We loop over all the directional lights given that there is no culling for them for (i = 0; i < _DirectionalLightCount; ++i) { - if (IsMatchingLightLayer(_DirectionalLightDatas[i].lightLayers, builtinData.renderingLayers)) + if (IsMatchingLightLayer(_DirectionalLightData[i].lightLayers, builtinData.renderingLayers)) { - DirectLighting lighting = EvaluateBSDF_Directional(context, V, posInput, preLightData, _DirectionalLightDatas[i], bsdfData, builtinData); + DirectLighting lighting = EvaluateBSDF_Directional(context, V, posInput, preLightData, _DirectionalLightData[i], bsdfData, builtinData); AccumulateDirectLighting(lighting, aggregateLighting); } } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingRenderer.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingRenderer.raytrace index 8b521c46b79..9c345afce46 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingRenderer.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/RaytracingRenderer.raytrace @@ -59,7 +59,7 @@ void RayGenRenderer() float depthValue = LOAD_TEXTURE2D_X(_DepthTexture, currentPixelCoord).x; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); float3 originWS = GetPrimaryCameraPosition(); float3 incidentWS = normalize(posInput.positionWS - originWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.compute b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.compute index b54efc8e099..da7be8de58f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.compute @@ -113,7 +113,7 @@ void RaytracingReflectionsHalfRes(uint3 dispatchThreadId : SV_DispatchThreadID, return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view vector const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -177,7 +177,7 @@ void RaytracingReflectionsTransparentHalfRes(uint3 dispatchThreadId : SV_Dispatc return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(sourceCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view vector const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -218,7 +218,7 @@ void RaytracingReflectionsFullRes(uint3 dispatchThreadId : SV_DispatchThreadID, return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view vector const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -276,7 +276,7 @@ void RaytracingReflectionsTransparentFullRes(uint3 dispatchThreadId : SV_Dispatc return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Compute the view vector const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.raytrace index 7b4ce4cd058..01a44223688 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Reflections/RaytracingReflections.raytrace @@ -76,7 +76,7 @@ void RayGenIntegration() return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); float distanceToCamera = length(posInput.positionWS); // Compute the incident vector on the surfaces const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); @@ -217,7 +217,7 @@ void RayGenIntegrationTransparent() return; // Convert this to a world space position - PositionInputs posInput = GetPositionInput(currentCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, 1.0/LaunchDim.xy, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); float distanceToCamera = length(posInput.positionWS); float3 positionWS = posInput.positionWS; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RayTracingContactShadow.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RayTracingContactShadow.raytrace index e20c93743e6..e9fe170ff22 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RayTracingContactShadow.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RayTracingContactShadow.raytrace @@ -4,8 +4,7 @@ // Given that this pass does not use the shadow algorithm multi-compile, we need to define SHADOW_LOW to quite the shadow algorithm error #define SHADOW_LOW -// Required for contact shadows -#define USE_FPTL_LIGHTLIST +#define FINE_BINNING // Required as we go over light list to determine contact shadow // We are using DX12 here #define SHADER_TARGET 50 @@ -57,7 +56,7 @@ bool RayTraceContactShadow(PositionInputs posInput, float3 direction) // Evaluate the ray visibility term and PDF TraceRay(_RaytracingAccelerationStructure, RAY_FLAG_CULL_FRONT_FACING_TRIANGLES | RAY_FLAG_SKIP_CLOSEST_HIT_SHADER | RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH, RAYTRACINGRENDERERFLAG_CAST_SHADOW, 0, 1, 0, rayDescriptor, rayIntersection); - + // Not sure true translates to 1 in every compiler return (rayIntersection.color.x == 0.0) ? 1 : 0; } @@ -80,8 +79,7 @@ void RayGenContactShadows() float depth = LOAD_TEXTURE2D_X(_DepthTexture, pixelCoord).x; // Reconstruction world space position - uint2 tileIndex = pixelCoord / GetTileSize(); - PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), tileIndex); + PositionInputs posInput = GetPositionInput(pixelCoord.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // discard the shadow if we're on the sky or outside of the contact shadow range if (depth == UNITY_RAW_FAR_CLIP_VALUE || posInput.linearDepth - _ContactShadowFadeEnd > 1) @@ -95,7 +93,7 @@ void RayGenContactShadows() // Let's first process the directional shadow if (_DirectionalShadowIndex >= 0) { - DirectionalLightData light = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData light = _DirectionalLightData[_DirectionalShadowIndex]; if (light.contactShadowMask != 0 && light.isRayTracedContactShadow == 1.0) { @@ -108,35 +106,32 @@ void RayGenContactShadows() contactShadowMask |= (light.contactShadowMask * occluded); } } - uint lightCount, lightStart; - -#ifndef LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - GetCountAndStart(posInput, LIGHTCATEGORY_PUNCTUAL, lightStart, lightCount); -#else // LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - lightCount = _PunctualLightCount; - lightStart = 0; -#endif - - uint v_lightListOffset = 0; - uint v_lightIdx = lightStart; - while (v_lightListOffset < lightCount) + + uint zBin = ComputeZBinIndex(posInput.linearDepth); + uint tile = ComputeTileIndex(posInput.positionSS); + + EntityLookupParameters params = InitializePunctualLightLookup(tile, zBin); + + uint i = 0; + + LightData lightData; + while (TryLoadPunctualLightData(i, params, lightData)) { - v_lightIdx = FetchIndex(lightStart, v_lightListOffset); - LightData s_lightData = FetchLight(v_lightIdx); - v_lightListOffset++; - if (s_lightData.contactShadowMask != 0 && s_lightData.isRayTracedContactShadow == 1.0) + if (lightData.contactShadowMask != 0 && lightData.isRayTracedContactShadow == 1.0) { // Compute light ray direction: - float3 direction = normalize(s_lightData.positionRWS.xyz - posInput.positionWS); + float3 direction = normalize(lightData.positionRWS.xyz - posInput.positionWS); bool occluded = RayTraceContactShadow(posInput, direction); // light.contactShadowMask contains one bit at the position of the contact shadow index that will // be tested in the lightloop, so it insert 1 at the index of the contact shadow if there is a contact shadow // we take full bits at one multiplied by contact shadow and filter the bit at the contact shadow index. - contactShadowMask |= (s_lightData.contactShadowMask * occluded); + contactShadowMask |= lightData.contactShadowMask * occluded; } + + i++; } _ContactShadowTextureUAV[COORD_TEXTURE2D_X(pixelCoord)] = PackContactShadowData(fade, contactShadowMask); -} \ No newline at end of file +} diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.compute b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.compute index b2c39e22c2c..3f40408926d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.compute +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.compute @@ -51,8 +51,8 @@ // The target acceleration structure that we will evaluate the reflexion in TEXTURE2D_X(_DepthTexture); -// The target area light to raytrace -uint _RaytracingTargetAreaLight; +int _ScreenSpaceShadowIndex; +StructuredBuffer _ScreenSpaceShadowLightData; // Flag value that defines if a given pixel is deferred or not TEXTURE2D_X_UINT2(_StencilTexture); @@ -88,14 +88,14 @@ void RaytracingAreaShadowPrepass(uint3 dispatchThreadId : SV_DispatchThreadID, u return; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Convert this to a world space position const float3 positionWS = posInput.positionWS; // Compute the view vector on the surface const float3 viewWS = GetWorldSpaceNormalizeViewDir(posInput.positionWS); // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Compute the current sample index uint globalSampleIndex = _RaytracingFrameIndex * _RaytracingNumSamples; @@ -170,7 +170,7 @@ void RaytracingAreaShadowPrepass(uint3 dispatchThreadId : SV_DispatchThreadID, u // NOTE: Due to a VGPR optimisation in we need to restore the previous value (position, dimmer, and other thing are overriden) - lightData = _LightDatas[_RaytracingTargetAreaLight]; + lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Here we need to evaluate the diffuseProbablity and the unshadowed lighting if (U < ANALYTIC_RADIANCE_THRESHOLD || !EvaluateMISProbabilties(lighting, bsdfData.perceptualRoughness, misInput.brdfProb)) @@ -304,7 +304,7 @@ void RaytracingAreaShadowNewSample(uint3 dispatchThreadId : SV_DispatchThreadID, } // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Convert this to a world space position const float3 positionWS = posInput.positionWS; @@ -312,7 +312,7 @@ void RaytracingAreaShadowNewSample(uint3 dispatchThreadId : SV_DispatchThreadID, const float3 viewWS = GetWorldSpaceNormalizeViewDir(positionWS); // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Compute the current sample index uint globalSampleIndex = _RaytracingFrameIndex * _RaytracingNumSamples + _RaytracingSampleIndex; @@ -485,7 +485,7 @@ void RaytracingDirectionalShadowSample(uint3 dispatchThreadId : SV_DispatchThrea return; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -495,7 +495,7 @@ void RaytracingDirectionalShadowSample(uint3 dispatchThreadId : SV_DispatchThrea float3 positionWS = posInput.positionWS; // Fetch the data of the area light - DirectionalLightData lightData = _DirectionalLightDatas[_DirectionalShadowIndex]; + DirectionalLightData lightData = _DirectionalLightData[_DirectionalShadowIndex]; // Compute the current sample index int globalSampleIndex = _RaytracingFrameIndex * _RaytracingNumSamples + _RaytracingSampleIndex; @@ -534,14 +534,14 @@ void RaytracingPointShadowSample(uint3 dispatchThreadId : SV_DispatchThreadID, u return; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; DecodeFromNormalBuffer(currentCoord, normalData); // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // If the point is inside the sphere, it will be visible float3 dir = (lightData.positionRWS - posInput.positionWS); @@ -604,14 +604,14 @@ void RaytracingSpotShadowSample(uint3 dispatchThreadId : SV_DispatchThreadID, ui return; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; DecodeFromNormalBuffer(currentCoord, normalData); // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // If the point is inside the sphere, it will be visible float3 dir = (lightData.positionRWS - posInput.positionWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.raytrace b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.raytrace index ccb66c629fc..3524a4d72e6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.raytrace +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Raytracing/Shaders/Shadows/RaytracingShadow.raytrace @@ -13,8 +13,7 @@ // Given that this pass does not use the shadow algorithm multi-compile, we need to define SHADOW_LOW to quite the shadow algorithm error #define SHADOW_LOW -// Required for contact shadows -#define USE_FPTL_LIGHTLIST +#define FINE_BINNING // Required as we go over light list to determine contact shadow // We are using DX12 here #define SHADER_TARGET 50 @@ -41,7 +40,8 @@ #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/RayCountManager.cs.hlsl" // Light Data -uint _RaytracingTargetAreaLight; +int _ScreenSpaceShadowIndex; +StructuredBuffer _ScreenSpaceShadowLightData; // The target acceleration structure that we will evaluate the reflexion in TEXTURE2D_X(_DepthTexture); @@ -87,7 +87,7 @@ void RayGenAreaShadows() return; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -100,7 +100,7 @@ void RayGenAreaShadows() float3 viewWS = GetWorldSpaceNormalizeViewDir(positionWS); // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Structure that holds all the input data for the MIS MISSamplingInput misInput; @@ -149,7 +149,7 @@ void RayGenAreaShadows() float U = Luminance(lighting.diffuse + lighting.specular); // NOTE: Due to a VGPR optimisation in we need to restore the previous value (position, dimmer, and other thing are overriden) - lightData = _LightDatas[_RaytracingTargetAreaLight]; + lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Here we need to evaluate the diffuseProbablity and the unshadowed lighting if(!EvaluateMISProbabilties(lighting, bsdfData.perceptualRoughness, misInput.brdfProb)) @@ -317,10 +317,10 @@ void RayGenAreaShadowSingle() } // Fetch the data of the area light - LightData lightData = _LightDatas[_RaytracingTargetAreaLight]; + LightData lightData = _ScreenSpaceShadowLightData[_ScreenSpaceShadowIndex]; // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -394,7 +394,7 @@ void RayGenDirectionalShadowSingle() } // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -460,7 +460,7 @@ void RayGenDirectionalColorShadowSingle() } // Compute the position input structure - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -552,7 +552,7 @@ void RayGenShadowSegmentSingle() } // Compute the world space position of the source pixel - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; @@ -638,7 +638,7 @@ void RayGenSemiTransparentShadowSegmentSingle() } // Compute the world space position of the source pixel - PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix(), 0); + PositionInputs posInput = GetPositionInput(currentPixelCoord, _ScreenSize.zw, depthValue, UNITY_MATRIX_I_VP, GetWorldToViewMatrix()); // Decode the world space normal NormalData normalData; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs index 25650235e56..ce377bf7ce8 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPipelineResources.cs @@ -64,6 +64,10 @@ public sealed class ShaderResources public ComputeShader buildDispatchIndirectCS; [Reload("Runtime/Lighting/LightLoop/scrbound.compute")] public ComputeShader buildScreenAABBCS; + [Reload("Runtime/Lighting/LightLoop/zBin.compute")] + public ComputeShader zBinCS; + [Reload("Runtime/Lighting/LightLoop/tile.compute")] + public ComputeShader tileCS; [Reload("Runtime/Lighting/LightLoop/lightlistbuild.compute")] public ComputeShader buildPerTileLightListCS; // FPTL [Reload("Runtime/Lighting/LightLoop/lightlistbuild-bigtile.compute")] @@ -72,8 +76,8 @@ public sealed class ShaderResources public ComputeShader buildPerVoxelLightListCS; // clustered [Reload("Runtime/Lighting/LightLoop/lightlistbuild-clearatomic.compute")] public ComputeShader lightListClusterClearAtomicIndexCS; - [Reload("Runtime/Lighting/LightLoop/materialflags.compute")] - public ComputeShader buildMaterialFlagsCS; + [Reload("Runtime/Lighting/LightLoop/classification.compute")] + public ComputeShader classificationCS; [Reload("Runtime/Lighting/LightLoop/Deferred.compute")] public ComputeShader deferredCS; [Reload("Runtime/Lighting/Shadow/ContactShadows.compute")] diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.Migration.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.Migration.cs index 67ae9926563..97880a4fe0f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.Migration.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.Migration.cs @@ -196,7 +196,7 @@ internal static void MigrateFromClassVersion(ref ObsoleteFrameSettings oldFrameS newFrameSettingsFormat.SetEnabled(FrameSettingsField.ComputeLightVariants, oldFrameSettingsFormat.lightLoopSettings.enableComputeLightVariants); newFrameSettingsFormat.SetEnabled(FrameSettingsField.ComputeMaterialVariants, oldFrameSettingsFormat.lightLoopSettings.enableComputeMaterialVariants); newFrameSettingsFormat.SetEnabled(FrameSettingsField.FPTLForForwardOpaque, oldFrameSettingsFormat.lightLoopSettings.enableFptlForForwardOpaque); - newFrameSettingsFormat.SetEnabled(FrameSettingsField.BigTilePrepass, oldFrameSettingsFormat.lightLoopSettings.enableBigTilePrepass); + newFrameSettingsFormat.SetEnabled(FrameSettingsField.BinnedLighting, oldFrameSettingsFormat.lightLoopSettings.enableBigTilePrepass); } // OverrideMask @@ -320,7 +320,7 @@ internal static void MigrateFromClassVersion(ref ObsoleteFrameSettings oldFrameS newFrameSettingsOverrideMask.mask[(int)FrameSettingsField.DeferredTile] = true; break; case ObsoleteLightLoopSettingsOverrides.BigTilePrepass: - newFrameSettingsOverrideMask.mask[(int)FrameSettingsField.BigTilePrepass] = true; + newFrameSettingsOverrideMask.mask[(int)FrameSettingsField.BinnedLighting] = true; break; case ObsoleteLightLoopSettingsOverrides.ComputeLightEvaluation: newFrameSettingsOverrideMask.mask[(int)FrameSettingsField.ComputeLightEvaluation] = true; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.cs index 7257a7c5f02..4e400629e0d 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.cs @@ -334,9 +334,9 @@ public enum FrameSettingsField /// When enabled, HDRP uses FPTL for forward opaque. [FrameSettingsField(3, autoName: FPTLForForwardOpaque, tooltip: "When enabled, HDRP uses FPTL for forward opaque.")] FPTLForForwardOpaque = 120, - /// When enabled, HDRP uses a big tile prepass for light visibility. - [FrameSettingsField(3, autoName: BigTilePrepass, tooltip: "When enabled, HDRP uses a big tile prepass for light visibility.")] - BigTilePrepass = 121, + /// When enabled, HDRP performs binning to determine the set of visible lights. + [FrameSettingsField(3, autoName: BinnedLighting)] + BinnedLighting = 121, /// When enabled, HDRP uses tiles to compute deferred lighting. [FrameSettingsField(3, autoName: DeferredTile, tooltip: "When enabled, HDRP uses tiles to compute deferred lighting.")] DeferredTile = 122, @@ -436,7 +436,7 @@ partial struct FrameSettings (uint)FrameSettingsField.ComputeLightVariants, (uint)FrameSettingsField.ComputeMaterialVariants, (uint)FrameSettingsField.FPTLForForwardOpaque, - (uint)FrameSettingsField.BigTilePrepass, + (uint)FrameSettingsField.BinnedLighting, (uint)FrameSettingsField.TransparentsWriteMotionVector, (uint)FrameSettingsField.ReflectionProbe, (uint)FrameSettingsField.PlanarProbe, @@ -498,7 +498,7 @@ partial struct FrameSettings (uint)FrameSettingsField.ComputeLightVariants, (uint)FrameSettingsField.ComputeMaterialVariants, (uint)FrameSettingsField.FPTLForForwardOpaque, - (uint)FrameSettingsField.BigTilePrepass, + (uint)FrameSettingsField.BinnedLighting, (uint)FrameSettingsField.ReflectionProbe, (uint)FrameSettingsField.RayTracing, // (uint)FrameSettingsField.EnableSkyReflection, @@ -555,7 +555,7 @@ partial struct FrameSettings (uint)FrameSettingsField.ComputeLightVariants, (uint)FrameSettingsField.ComputeMaterialVariants, (uint)FrameSettingsField.FPTLForForwardOpaque, - (uint)FrameSettingsField.BigTilePrepass, + (uint)FrameSettingsField.BinnedLighting, (uint)FrameSettingsField.ReplaceDiffuseForIndirect, // (uint)FrameSettingsField.EnableSkyReflection, // (uint)FrameSettingsField.DirectSpecularLighting, diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDecal.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDecal.hlsl index 1dc009239e5..e1bce2ba845 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDecal.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDecal.hlsl @@ -132,7 +132,7 @@ void Frag( PackedVaryingsToPS packedInput, #else // Decal mesh // input.positionSS is SV_Position - PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS.xyz, uint2(0, 0)); + PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS.xyz); #ifdef VARYINGS_NEED_POSITION_WS float3 V = GetWorldSpaceNormalizeViewDir(input.positionRWS); @@ -158,7 +158,7 @@ void Frag( PackedVaryingsToPS packedInput, uint i; for (i = 0; i < _DirectionalLightCount; ++i) { - DirectionalLightData light = _DirectionalLightDatas[i]; + DirectionalLightData light = _DirectionalLightData[i]; outColor.rgb += surfaceData.baseColor.rgb * light.color * saturate(dot(surfaceData.normalWS.xyz, -light.forward.xyz)); } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl index b4b8f76bc69..1ec24fa86c4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassForward.hlsl @@ -115,10 +115,8 @@ void Frag(PackedVaryingsToPS packedInput, // We need to readapt the SS position as our screen space positions are for a low res buffer, but we try to access a full res buffer. input.positionSS.xy = _OffScreenRendering > 0 ? (input.positionSS.xy * _OffScreenDownsampleFactor) : input.positionSS.xy; - uint2 tileIndex = uint2(input.positionSS.xy) / GetTileSize(); - // input.positionSS is SV_Position - PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS.xyz, tileIndex); + PositionInputs posInput = GetPositionInput(input.positionSS.xy, _ScreenSize.zw, input.positionSS.z, input.positionSS.w, input.positionRWS.xyz); #ifdef VARYINGS_NEED_POSITION_WS float3 V = GetWorldSpaceNormalizeViewDir(input.positionRWS); @@ -127,6 +125,9 @@ void Frag(PackedVaryingsToPS packedInput, float3 V = float3(1.0, 1.0, 1.0); // Avoid the division by 0 #endif + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); + SurfaceData surfaceData; BuiltinData builtinData; GetSurfaceAndBuiltinData(input, V, posInput, surfaceData, builtinData); @@ -214,7 +215,7 @@ void Frag(PackedVaryingsToPS packedInput, uint featureFlags = LIGHT_FEATURE_MASK_FLAGS_OPAQUE; #endif LightLoopOutput lightLoopOutput; - LightLoop(V, posInput, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); + LightLoop(V, posInput, tile, zBin, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VaryingMesh.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VaryingMesh.hlsl index 58895bb51c3..298874e29f4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VaryingMesh.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VaryingMesh.hlsl @@ -142,6 +142,14 @@ FragInputs UnpackVaryingsMeshToFragInputs(PackedVaryingsMeshToPS input) #ifdef VARYINGS_NEED_POSITION_WS output.positionRWS.xyz = input.interpolators0.xyz; + + if (!IsPerspectiveProjection()) + { + // When projection is orthographic, positionCS.w = 1. + // We would like to retain positionCS.w = linearDepth for all projection types. + float linearDepth = LinearEyeDepth(output.positionRWS.xyz, GetWorldToViewMatrix()); + output.positionSS.w = linearDepth; + } #endif #ifdef VARYINGS_NEED_TANGENT_TO_WORLD diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl index 9f2520d3287..ecc1ffa9f1b 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl @@ -167,6 +167,7 @@ VaryingsMeshType VertMesh(AttributesMesh input, float3 worldSpaceOffset) output.positionRWS = positionRWS; #endif output.positionCS = TransformWorldToHClip(positionRWS); + #ifdef VARYINGS_NEED_TANGENT_TO_WORLD output.normalWS = normalWS; output.tangentWS = tangentWS; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineResources.asset b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineResources.asset index 2006d675749..fb5c61797b6 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineResources.asset +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipelineResources/HDRenderPipelineResources.asset @@ -36,11 +36,17 @@ MonoBehaviour: clearLightListsCS: {fileID: 7200000, guid: 743eb3491795b9545955695d591195a1, type: 3} buildDispatchIndirectCS: {fileID: 7200000, guid: 4eb1b418be7044c40bb5200496c50f14, type: 3} buildScreenAABBCS: {fileID: 7200000, guid: 728dce960f8a9c44bbc3abb3b851d8f6, type: 3} - buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, type: 3} - buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, type: 3} - buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, type: 3} - lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, type: 3} - buildMaterialFlagsCS: {fileID: 7200000, guid: fb3eda953cd6e634e877fb777be2cd08, type: 3} + zBinCS: {fileID: 7200000, guid: 313c8dc48c577184997e1c10638c6499, type: 3} + tileCS: {fileID: 7200000, guid: 3a8709910066b4d4186b56721cdc36aa, type: 3} + buildPerTileLightListCS: {fileID: 7200000, guid: 65af3444cbf4b3747a4dead7ee00cfee, + type: 3} + buildPerBigTileLightListCS: {fileID: 7200000, guid: 5ee1f9d6e09abe045b2f5e0b784b9072, + type: 3} + buildPerVoxelLightListCS: {fileID: 7200000, guid: 0bb1b7e0ddcd5c44baf3ddc7456eb196, + type: 3} + lightListClusterClearAtomicIndexCS: {fileID: 7200000, guid: 1e3472a94b14a334a93230bbc700d7b2, + type: 3} + classificationCS: {fileID: 7200000, guid: 2f62649560ae64f4da8e8234a88ba2e2, type: 3} deferredCS: {fileID: 7200000, guid: 0b64f79746d2daf4198eaf6eab9af259, type: 3} contactShadowCS: {fileID: 7200000, guid: 3e6900e06dc185a4380af4dacb4db0a4, type: 3} volumeVoxelizationCS: {fileID: 7200000, guid: c20b371db720da244b73830ec74a343a, type: 3} diff --git a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl index 6f35c90e717..34c99b7799f 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl @@ -221,6 +221,7 @@ float4x4 OptimizeProjectionMatrix(float4x4 M) // We can avoid loading and doing math with constants. M._21_41 = 0; M._12_42 = 0; + return M; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs index 3e989c7fdf5..0df95038953 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs @@ -121,7 +121,7 @@ unsafe struct ShaderVariablesGlobal public float _MaxFogDistance; public Vector4 _FogColor; // color in rgb public float _FogColorMode; - public float _Pad0; + public uint _DensityVolumeCount; public float _Pad1; public float _Pad2; public Vector4 _MipFogParameters; @@ -146,7 +146,8 @@ unsafe struct ShaderVariablesGlobal public float _VBufferLastSliceDist; // The distance to the middle of the last slice // Light Loop - public const int s_MaxEnv2DLight = 32; + public const int s_MaxEnv2DLight = 32; // WTF? + public Vector4 _ShadowAtlasSize; public Vector4 _CascadeShadowAtlasSize; @@ -164,7 +165,7 @@ unsafe struct ShaderVariablesGlobal public uint _DirectionalLightCount; public uint _PunctualLightCount; public uint _AreaLightCount; - public uint _EnvLightCount; + public uint _ReflectionProbeCount; public int _EnvLightSkyEnabled; public uint _CascadeShadowCount; @@ -197,7 +198,24 @@ unsafe struct ShaderVariablesGlobal public Vector4 _CookieAtlasData; public Vector4 _PlanarAtlasData; - // Tile/Cluster + // Binned lighting + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityCountPerCategory[(int)BoundedEntityCategory.Count * 4]; + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityOffsetPerCategory[(int)BoundedEntityCategory.Count * 4]; + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityDwordCountPerCategory[(int)BoundedEntityCategory.Count * 4]; + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityDwordOffsetPerCategory[(int)BoundedEntityCategory.Count * 4]; + // ZBin needs separate count and offset since depth sorted categories can be compressed + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityZBinDwordCountPerCategory[(int)BoundedEntityCategory.Count * 4]; + [HLSLArray((int)BoundedEntityCategory.Count, typeof(ShaderGenUInt4))] + public fixed uint _BoundedEntityZBinDwordOffsetPerCategory[(int)BoundedEntityCategory.Count * 4]; + + public Vector2Int _CoarseTileBufferDimensions; + public Vector2Int _FineTileBufferDimensions; + public uint _NumTileFtplX; public uint _NumTileFtplY; public float g_fClustScale; diff --git a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl index bfaaba4b65d..cfa9fb61299 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariablesGlobal.cs.hlsl @@ -52,7 +52,7 @@ GLOBAL_CBUFFER_START(ShaderVariablesGlobal, b0) float _MaxFogDistance; float4 _FogColor; float _FogColorMode; - float _Pad0; + uint _DensityVolumeCount; float _Pad1; float _Pad2; float4 _MipFogParameters; @@ -84,7 +84,7 @@ GLOBAL_CBUFFER_START(ShaderVariablesGlobal, b0) uint _DirectionalLightCount; uint _PunctualLightCount; uint _AreaLightCount; - uint _EnvLightCount; + uint _ReflectionProbeCount; int _EnvLightSkyEnabled; uint _CascadeShadowCount; int _DirectionalShadowIndex; @@ -109,6 +109,14 @@ GLOBAL_CBUFFER_START(ShaderVariablesGlobal, b0) float4 _CookieAtlasSize; float4 _CookieAtlasData; float4 _PlanarAtlasData; + uint4 _BoundedEntityCountPerCategory[5]; + uint4 _BoundedEntityOffsetPerCategory[5]; + uint4 _BoundedEntityDwordCountPerCategory[5]; + uint4 _BoundedEntityDwordOffsetPerCategory[5]; + uint4 _BoundedEntityZBinDwordCountPerCategory[5]; + uint4 _BoundedEntityZBinDwordOffsetPerCategory[5]; + int2 _CoarseTileBufferDimensions; + int2 _FineTileBufferDimensions; uint _NumTileFtplX; uint _NumTileFtplY; float g_fClustScale; diff --git a/com.unity.render-pipelines.high-definition/Runtime/Sky/HDRISky/HDRISky.shader b/com.unity.render-pipelines.high-definition/Runtime/Sky/HDRISky/HDRISky.shader index ae214f193b6..b489ea1a1ef 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Sky/HDRISky/HDRISky.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Sky/HDRISky/HDRISky.shader @@ -8,15 +8,14 @@ Shader "Hidden/HDRP/Sky/HDRISky" #pragma target 4.5 #pragma only_renderers d3d11 playstation xboxone vulkan metal switch - #define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER - - #pragma multi_compile_local_fragment _ SKY_MOTION - #pragma multi_compile_local_fragment _ USE_FLOWMAP + #pragma multi_compile_local _ SKY_MOTION + #pragma multi_compile_local _ USE_FLOWMAP #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile_local_fragment SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH - #pragma multi_compile USE_FPTL_LIGHTLIST USE_CLUSTERED_LIGHTLIST + // Comment out the line to loop over all lights (for debugging purposes) + #define FINE_BINNING #define ATTRIBUTES_NEED_NORMAL #define ATTRIBUTES_NEED_TANGENT diff --git a/com.unity.render-pipelines.high-definition/Runtime/Sky/PhysicallyBasedSky/PhysicallyBasedSky.shader b/com.unity.render-pipelines.high-definition/Runtime/Sky/PhysicallyBasedSky/PhysicallyBasedSky.shader index 51422e8f165..43640f3dc9c 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Sky/PhysicallyBasedSky/PhysicallyBasedSky.shader +++ b/com.unity.render-pipelines.high-definition/Runtime/Sky/PhysicallyBasedSky/PhysicallyBasedSky.shader @@ -95,7 +95,7 @@ Shader "Hidden/HDRP/Sky/PbrSky" // Unfortunately, they don't write depth. for (uint i = 0; i < _DirectionalLightCount; i++) { - DirectionalLightData light = _DirectionalLightDatas[i]; + DirectionalLightData light = _DirectionalLightData[i]; // Use scalar or integer cores (more efficient). bool interactsWithSky = asint(light.distanceFromCamera) >= 0; @@ -188,7 +188,7 @@ Shader "Hidden/HDRP/Sky/PbrSky" // Shade the ground. for (uint i = 0; i < _DirectionalLightCount; i++) { - DirectionalLightData light = _DirectionalLightDatas[i]; + DirectionalLightData light = _DirectionalLightData[i]; // Use scalar or integer cores (more efficient). bool interactsWithSky = asint(light.distanceFromCamera) >= 0; diff --git a/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl b/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl index 4d3c2f3a1f2..0f3b42f146a 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXCommon.hlsl @@ -135,7 +135,7 @@ float3 VFXGetPositionRWS(float3 posWS); //Forward declaration because this funct float4 VFXApplyFog(float4 color,float4 posCS,float3 posWS) { float3 posRWS = VFXGetPositionRWS(posWS); - PositionInputs posInput = GetPositionInput(posCS.xy, _ScreenSize.zw, posCS.z, posCS.w, posRWS, uint2(0,0)); + PositionInputs posInput = GetPositionInput(posCS.xy, _ScreenSize.zw, posCS.z, posCS.w, posRWS); float3 V = GetWorldSpaceNormalizeViewDir(posRWS); diff --git a/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLitPixelOutput.hlsl b/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLitPixelOutput.hlsl index 4938a19cc91..696f380e0f4 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLitPixelOutput.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/VFXGraph/Shaders/VFXLitPixelOutput.hlsl @@ -22,8 +22,11 @@ float4 VFXCalcPixelOutputForward(const SurfaceData surfaceData, const BuiltinDat #endif + uint tile = ComputeTileIndex(posInput.positionSS); + uint zBin = ComputeZBinIndex(posInput.linearDepth); + LightLoopOutput lightLoopOutput; - LightLoop(GetWorldSpaceNormalizeViewDir(posRWS), posInput, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); + LightLoop(GetWorldSpaceNormalizeViewDir(posRWS), posInput, tile, zBin, preLightData, bsdfData, builtinData, featureFlags, lightLoopOutput); // Alias float3 diffuseLighting = lightLoopOutput.diffuseLighting; @@ -92,11 +95,10 @@ float4 VFXGetPixelOutputForward(const VFX_VARYING_PS_INPUTS i, float3 normalWS, BSDFData bsdfData; PreLightData preLightData; - uint2 tileIndex = uint2(i.VFX_VARYING_POSCS.xy) / GetTileSize(); - VFXGetHDRPLitData(surfaceData,builtinData,bsdfData,preLightData,i,normalWS,uvData,tileIndex); + VFXGetHDRPLitData(surfaceData,builtinData,bsdfData,preLightData,i,normalWS,uvData); float3 posRWS = VFXGetPositionRWS(i); - PositionInputs posInput = GetPositionInput(i.VFX_VARYING_POSCS.xy, _ScreenSize.zw, i.VFX_VARYING_POSCS.z, i.VFX_VARYING_POSCS.w, posRWS, tileIndex); + PositionInputs posInput = GetPositionInput(i.VFX_VARYING_POSCS.xy, _ScreenSize.zw, i.VFX_VARYING_POSCS.z, i.VFX_VARYING_POSCS.w, posRWS); return VFXCalcPixelOutputForward(surfaceData,builtinData,preLightData, bsdfData, posInput, posRWS); } @@ -107,10 +109,9 @@ float4 VFXGetPixelOutputForward(const VFX_VARYING_PS_INPUTS i, float3 normalWS, float4 VFXGetPixelOutputForwardShaderGraph(const VFX_VARYING_PS_INPUTS i, const SurfaceData surfaceData, float3 emissiveColor, float opacity) { - uint2 tileIndex = uint2(i.VFX_VARYING_POSCS.xy) / GetTileSize(); float3 posRWS = VFXGetPositionRWS(i); float4 posSS = i.VFX_VARYING_POSCS; - PositionInputs posInput = GetPositionInput(posSS.xy, _ScreenSize.zw, posSS.z, posSS.w, posRWS, tileIndex); + PositionInputs posInput = GetPositionInput(posSS.xy, _ScreenSize.zw, posSS.z, posSS.w, posRWS); PreLightData preLightData = (PreLightData)0; BSDFData bsdfData = (BSDFData)0; diff --git a/com.unity.render-pipelines.high-definition/Tests/Editor/FrameSettingsTest.cs b/com.unity.render-pipelines.high-definition/Tests/Editor/FrameSettingsTest.cs index 51993aff79a..433f542aba8 100644 --- a/com.unity.render-pipelines.high-definition/Tests/Editor/FrameSettingsTest.cs +++ b/com.unity.render-pipelines.high-definition/Tests/Editor/FrameSettingsTest.cs @@ -445,7 +445,7 @@ out GameObject prefab Assert.AreEqual(legacyFrameSettingsData.runContactShadowsAsync, frameSettingsData.IsEnabled(FrameSettingsField.ContactShadowsAsync)); Assert.AreEqual(legacyFrameSettingsData.runVolumeVoxelizationAsync, frameSettingsData.IsEnabled(FrameSettingsField.VolumeVoxelizationsAsync)); - Assert.AreEqual(legacyFrameSettingsData.lightLoopSettings.enableBigTilePrepass, frameSettingsData.IsEnabled(FrameSettingsField.BigTilePrepass)); + Assert.AreEqual(legacyFrameSettingsData.lightLoopSettings.enableBigTilePrepass, frameSettingsData.IsEnabled(FrameSettingsField.BinnedLighting)); Assert.AreEqual(legacyFrameSettingsData.lightLoopSettings.enableComputeLightEvaluation, frameSettingsData.IsEnabled(FrameSettingsField.ComputeLightEvaluation)); Assert.AreEqual(legacyFrameSettingsData.lightLoopSettings.enableComputeLightVariants, frameSettingsData.IsEnabled(FrameSettingsField.ComputeLightVariants)); Assert.AreEqual(legacyFrameSettingsData.lightLoopSettings.enableComputeMaterialVariants, frameSettingsData.IsEnabled(FrameSettingsField.ComputeMaterialVariants)); @@ -484,7 +484,7 @@ out GameObject prefab Assert.AreEqual((legacyFrameSettingsData.overrides & LegacyFrameSettingsOverrides.ContactShadowsAsync) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.ContactShadowsAsync]); Assert.AreEqual((legacyFrameSettingsData.overrides & LegacyFrameSettingsOverrides.VolumeVoxelizationsAsync) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.VolumeVoxelizationsAsync]); - Assert.AreEqual((legacyFrameSettingsData.lightLoopSettings.overrides & LegacyLightLoopSettingsOverrides.BigTilePrepass) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.BigTilePrepass]); + Assert.AreEqual((legacyFrameSettingsData.lightLoopSettings.overrides & LegacyLightLoopSettingsOverrides.BigTilePrepass) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.BinnedLighting]); Assert.AreEqual((legacyFrameSettingsData.lightLoopSettings.overrides & LegacyLightLoopSettingsOverrides.ComputeLightEvaluation) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.ComputeLightEvaluation]); Assert.AreEqual((legacyFrameSettingsData.lightLoopSettings.overrides & LegacyLightLoopSettingsOverrides.ComputeLightVariants) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.ComputeLightVariants]); Assert.AreEqual((legacyFrameSettingsData.lightLoopSettings.overrides & LegacyLightLoopSettingsOverrides.ComputeMaterialVariants) > 0, frameSettingsMask.mask[(uint)FrameSettingsField.ComputeMaterialVariants]);