From 9c29c68851210f3285c7ec129328669bf730d013 Mon Sep 17 00:00:00 2001 From: Erik Hakala Date: Wed, 30 Aug 2023 16:09:41 +0000 Subject: [PATCH 01/13] ComplexLit and Unlit GBuffer fill. Fill GBuffer data for ComplexLit and Unlit shaders in deferred rendering path so that the GBuffer is "full" and can be reused for secondary effects. ComplexLit and Unlit are stenciled out to skip the deferred lighting pass. ComplexLit is a forward lit shader. --- .../Includes/UnlitGBufferPass.hlsl | 75 + .../Includes/UnlitGBufferPass.hlsl.meta | 7 + .../Targets/UniversalLitSubTarget.cs | 6 +- .../ShaderGraph/Targets/UniversalTarget.cs | 1 + .../Targets/UniversalUnlitSubTarget.cs | 73 + .../Runtime/Passes/GBufferPass.cs | 11 +- .../Shaders/ComplexLit.shader | 84 + .../Shaders/Unlit.shader | 47 + .../Shaders/UnlitGBufferPass.hlsl | 103 ++ .../Shaders/UnlitGBufferPass.hlsl.meta | 7 + .../URPAssets/DefaultURPAsset.asset | 2 + .../Assets/Scenes/060_Deferred.meta | 8 + .../Deferred_ComplexLit_Graph.shadergraph | 853 +++++++++ ...Deferred_ComplexLit_Graph.shadergraph.meta | 10 + .../060_Deferred/Deferred_ComplexLit_O.mat | 142 ++ .../Deferred_ComplexLit_O.mat.meta | 8 + .../060_Deferred/Deferred_ComplexLit_SG_C.mat | 154 ++ .../Deferred_ComplexLit_SG_C.mat.meta | 8 + ...GBuffer_Alpha_Visualization_Renderer.asset | 93 + ...er_Alpha_Visualization_Renderer.asset.meta | 8 + ...eferred_GBuffer_Visualization_Material.mat | 136 ++ ...ed_GBuffer_Visualization_Material.mat.meta | 8 + ...red_GBuffer_Visualization_RenderFeature.cs | 140 ++ ...Buffer_Visualization_RenderFeature.cs.meta | 12 + ...erred_GBuffer_Visualization_Renderer.asset | 93 + ..._GBuffer_Visualization_Renderer.asset.meta | 8 + ...ferred_GBuffer_Visualization_Shader.shader | 139 ++ ...d_GBuffer_Visualization_Shader.shader.meta | 9 + .../Scenes/060_Deferred/Deferred_Lit_B.mat | 136 ++ .../060_Deferred/Deferred_Lit_B.mat.meta | 8 + .../Deferred_Lit_Graph.shadergraph | 743 ++++++++ .../Deferred_Lit_Graph.shadergraph.meta | 10 + .../Scenes/060_Deferred/Deferred_Lit_SG_V.mat | 154 ++ .../060_Deferred/Deferred_Lit_SG_V.mat.meta | 8 + .../060_Deferred/Deferred_SimpleLit_G.mat | 141 ++ .../Deferred_SimpleLit_G.mat.meta | 8 + .../Deferred_Unlit_Graph.shadergraph | 440 +++++ .../Deferred_Unlit_Graph.shadergraph.meta | 10 + .../Scenes/060_Deferred/Deferred_Unlit_R.mat | 138 ++ .../060_Deferred/Deferred_Unlit_R.mat.meta | 8 + .../060_Deferred/Deferred_Unlit_SG_Y.mat | 139 ++ .../060_Deferred/Deferred_Unlit_SG_Y.mat.meta | 8 + .../Assets/Scenes/060_Deferred_GBuffer.unity | 1540 +++++++++++++++++ .../Scenes/060_Deferred_GBuffer.unity.meta | 7 + .../Scenes/060_Deferred_GBuffer_Alpha.unity | 1540 +++++++++++++++++ .../060_Deferred_GBuffer_Alpha.unity.meta | 7 + .../Test/TestFilters/TestCaseFilters.asset | 20 + .../ProjectSettings/EditorBuildSettings.asset | 6 + 48 files changed, 7309 insertions(+), 7 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl create mode 100644 Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity.meta diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl new file mode 100644 index 00000000000..c73c51c8e8a --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl @@ -0,0 +1,75 @@ + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Unlit.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" + +void InitializeInputData(Varyings input, out InputData inputData) +{ + inputData = (InputData)0; + + // InputData is only used for DebugDisplay purposes in Unlit, so these are not initialized. + #if defined(DEBUG_DISPLAY) + inputData.positionWS = input.positionWS; + inputData.normalWS = NormalizeNormalPerPixel(input.normalWS); + #else + inputData.positionWS = half3(0, 0, 0); + inputData.normalWS = NormalizeNormalPerPixel(input.normalWS); + inputData.viewDirectionWS = half3(0, 0, 1); + #endif + inputData.shadowCoord = 0; + inputData.fogCoord = 0; + inputData.vertexLighting = half3(0, 0, 0); + inputData.bakedGI = half3(0, 0, 0); + inputData.normalizedScreenSpaceUV = 0; + inputData.shadowMask = half4(1, 1, 1, 1); +} + +PackedVaryings vert(Attributes input) +{ + Varyings output = (Varyings)0; + output = BuildVaryings(input); + PackedVaryings packedOutput = PackVaryings(output); + return packedOutput; +} + +FragmentOutput frag(PackedVaryings packedInput) +{ + Varyings unpacked = UnpackVaryings(packedInput); + UNITY_SETUP_INSTANCE_ID(unpacked); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(unpacked); + SurfaceDescription surfaceDescription = BuildSurfaceDescription(unpacked); + + SurfaceData surfaceData = (SurfaceData)0; + surfaceData.alpha = 1; + +#if defined(_ALPHATEST_ON) + surfaceData.alpha = AlphaDiscard(surfaceDescription.Alpha, surfaceDescription.AlphaClipThreshold); +#endif + +#if defined(LOD_FADE_CROSSFADE) && USE_UNITY_CROSSFADE + LODFadeCrossFade(unpacked.positionCS); +#endif + +#if defined(_ALPHAMODULATE_ON) + surfaceData.albedo = AlphaModulate(surfaceDescription.BaseColor, surfaceData.alpha); +#else + surfaceData.albedo = surfaceDescription.BaseColor; +#endif + +#if defined(_DBUFFER) + ApplyDecalToBaseColor(unpacked.positionCS, surfaceData.albedo); +#endif + + InputData inputData; + InitializeInputData(unpacked, inputData); + + #if defined(_SCREEN_SPACE_OCCLUSION) && !defined(_SURFACE_TYPE_TRANSPARENT) + float2 normalizedScreenSpaceUV = GetNormalizedScreenSpaceUV(unpacked.positionCS); + AmbientOcclusionFactor aoFactor = GetScreenSpaceAmbientOcclusion(normalizedScreenSpaceUV); + surfaceData.albedo.rgb *= aoFactor.directAmbientOcclusion; + #else + surfaceData.occlusion = 1; + #endif + + return SurfaceDataToGbuffer(surfaceData, inputData, float3(0,0,0), kLightingInvalid); +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl.meta new file mode 100644 index 00000000000..f4b68884942 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 73b8a22390b7d43f7803cb609e674fe6 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs index d1f0a5de718..2a3b852b9f0 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalLitSubTarget.cs @@ -333,7 +333,7 @@ public static SubShaderDescriptor LitSubShader(UniversalTarget target, WorkflowM SubShaderDescriptor result = new SubShaderDescriptor() { pipelineTag = UniversalTarget.kPipelineTag, - customTags = UniversalTarget.kLitMaterialTypeTag, + customTags = complexLit ? UniversalTarget.kComplexLitMaterialTypeTag : UniversalTarget.kLitMaterialTypeTag, renderType = renderType, renderQueue = renderQueue, disableBatchingTag = disableBatchingTag, @@ -346,8 +346,8 @@ public static SubShaderDescriptor LitSubShader(UniversalTarget target, WorkflowM else result.passes.Add(LitPasses.Forward(target, workflowMode, blendModePreserveSpecular, CorePragmas.Forward, LitKeywords.Forward)); - if (!complexLit) - result.passes.Add(LitPasses.GBuffer(target, workflowMode, blendModePreserveSpecular)); + // ForwardOnly ComplexLit fills GBuffer too for potential custom usage of the GBuffer. + result.passes.Add(LitPasses.GBuffer(target, workflowMode, blendModePreserveSpecular)); // cull the shadowcaster pass if we know it will never be used if (target.castShadows || target.allowMaterialOverride) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs index 38a3b865b75..7260f8fbcd5 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -116,6 +116,7 @@ sealed class UniversalTarget : Target, IHasMetadata, ILegacyTarget, IMaySupportV // Constants static readonly GUID kSourceCodeGuid = new GUID("8c72f47fdde33b14a9340e325ce56f4d"); // UniversalTarget.cs public const string kPipelineTag = "UniversalPipeline"; + public const string kComplexLitMaterialTypeTag = "\"UniversalMaterialType\" = \"ComplexLit\""; public const string kLitMaterialTypeTag = "\"UniversalMaterialType\" = \"Lit\""; public const string kUnlitMaterialTypeTag = "\"UniversalMaterialType\" = \"Unlit\""; public const string kAlwaysRenderMotionVectorsTag = "\"AlwaysRenderMotionVectors\" = \"true\""; diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs index 63ba95ef162..4151ccb4f58 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalUnlitSubTarget.cs @@ -185,6 +185,9 @@ public static SubShaderDescriptor Unlit(UniversalTarget target, string renderTyp if (target.castShadows || target.allowMaterialOverride) result.passes.Add(PassVariant(CorePasses.ShadowCaster(target), CorePragmas.Instanced)); + // Fill GBuffer with color and normal for custom GBuffer use cases. + result.passes.Add(UnlitPasses.GBuffer(target)); + // Currently neither of these passes (selection/picking) can be last for the game view for // UI shaders to render correctly. Verify [1352225] before changing this order. result.passes.Add(PassVariant(CorePasses.SceneSelection(target), CorePragmas.Default)); @@ -278,6 +281,48 @@ public static PassDescriptor DepthNormalOnly(UniversalTarget target) return result; } + // Deferred only in SM4.5 + // GBuffer fill for consistency. + public static PassDescriptor GBuffer(UniversalTarget target) + { + var result = new PassDescriptor + { + // Definition + displayName = "GBuffer", + referenceName = "SHADERPASS_GBUFFER", + lightMode = "UniversalGBuffer", + useInPreview = true, + + // Template + passTemplatePath = UniversalTarget.kUberTemplatePath, + sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories, + + // Port Mask + validVertexBlocks = CoreBlockMasks.Vertex, + validPixelBlocks = CoreBlockMasks.FragmentColorAlpha, + + // Fields + structs = CoreStructCollections.Default, + requiredFields = UnlitRequiredFields.GBuffer, + fieldDependencies = CoreFieldDependencies.Default, + + // Conditional State + renderStates = CoreRenderStates.UberSwitchedRenderState(target), + pragmas = CorePragmas.GBuffer, + defines = new DefineCollection(), + keywords = new KeywordCollection { UnlitKeywords.GBuffer }, + includes = new IncludeCollection { UnlitIncludes.GBuffer }, + + // Custom Interpolator Support + customInterpolators = CoreCustomInterpDescriptors.Common + }; + + CorePasses.AddTargetSurfaceControlsToPass(ref result, target); + CorePasses.AddLODCrossFadeControlToPass(ref result, target); + + return result; + } + #region PortMasks static class UnlitBlockMasks { @@ -303,6 +348,13 @@ static class UnlitRequiredFields { StructFields.Varyings.normalWS, }; + + public static readonly FieldCollection GBuffer = new FieldCollection() + { + StructFields.Varyings.positionWS, + StructFields.Varyings.normalWS, + UniversalStructFields.Varyings.sh // Satisfy !LIGHTMAP_ON requirements. + }; } #endregion } @@ -323,6 +375,13 @@ static class UnlitKeywords CoreKeywordDescriptors.DebugDisplay, CoreKeywordDescriptors.ScreenSpaceAmbientOcclusion, }; + + public static readonly KeywordCollection GBuffer = new KeywordCollection + { + { CoreKeywordDescriptors.DBuffer }, + { CoreKeywordDescriptors.LODFadeCrossFade }, + { CoreKeywordDescriptors.ScreenSpaceAmbientOcclusion }, + }; } #endregion @@ -330,6 +389,7 @@ static class UnlitKeywords static class UnlitIncludes { const string kUnlitPass = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl"; + const string kUnlitGBufferPass = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitGBufferPass.hlsl"; public static IncludeCollection Unlit = new IncludeCollection { @@ -344,6 +404,19 @@ static class UnlitIncludes { CoreIncludes.CorePostgraph }, { kUnlitPass, IncludeLocation.Postgraph }, }; + + public static IncludeCollection GBuffer = new IncludeCollection + { + // Pre-graph + { CoreIncludes.DOTSPregraph }, + { CoreIncludes.CorePregraph }, + { CoreIncludes.ShaderGraphPregraph }, + { CoreIncludes.DBufferPregraph }, + + // Post-graph + { CoreIncludes.CorePostgraph }, + { kUnlitGBufferPass, IncludeLocation.Postgraph }, + }; } #endregion } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs index 895ed613cea..df29e47b6c1 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/GBufferPass.cs @@ -13,6 +13,7 @@ internal class GBufferPass : ScriptableRenderPass static ShaderTagId s_ShaderTagLit = new ShaderTagId("Lit"); static ShaderTagId s_ShaderTagSimpleLit = new ShaderTagId("SimpleLit"); static ShaderTagId s_ShaderTagUnlit = new ShaderTagId("Unlit"); + static ShaderTagId s_ShaderTagComplexLit = new ShaderTagId("ComplexLit"); static ShaderTagId s_ShaderTagUniversalGBuffer = new ShaderTagId("UniversalGBuffer"); static ShaderTagId s_ShaderTagUniversalMaterialType = new ShaderTagId("UniversalMaterialType"); @@ -43,20 +44,22 @@ public GBufferPass(RenderPassEvent evt, RenderQueueRange renderQueueRange, Layer if (s_ShaderTagValues == null) { - s_ShaderTagValues = new ShaderTagId[4]; + s_ShaderTagValues = new ShaderTagId[5]; s_ShaderTagValues[0] = s_ShaderTagLit; s_ShaderTagValues[1] = s_ShaderTagSimpleLit; s_ShaderTagValues[2] = s_ShaderTagUnlit; - s_ShaderTagValues[3] = new ShaderTagId(); // Special catch all case for materials where UniversalMaterialType is not defined or the tag value doesn't match anything we know. + s_ShaderTagValues[3] = s_ShaderTagComplexLit; + s_ShaderTagValues[4] = new ShaderTagId(); // Special catch all case for materials where UniversalMaterialType is not defined or the tag value doesn't match anything we know. } if (s_RenderStateBlocks == null) { - s_RenderStateBlocks = new RenderStateBlock[4]; + s_RenderStateBlocks = new RenderStateBlock[5]; s_RenderStateBlocks[0] = DeferredLights.OverwriteStencil(m_RenderStateBlock, (int)StencilUsage.MaterialMask, (int)StencilUsage.MaterialLit); s_RenderStateBlocks[1] = DeferredLights.OverwriteStencil(m_RenderStateBlock, (int)StencilUsage.MaterialMask, (int)StencilUsage.MaterialSimpleLit); s_RenderStateBlocks[2] = DeferredLights.OverwriteStencil(m_RenderStateBlock, (int)StencilUsage.MaterialMask, (int)StencilUsage.MaterialUnlit); - s_RenderStateBlocks[3] = s_RenderStateBlocks[0]; + s_RenderStateBlocks[3] = DeferredLights.OverwriteStencil(m_RenderStateBlock, (int)StencilUsage.MaterialMask, (int)StencilUsage.MaterialUnlit); // Fill GBuffer, but skip lighting pass for ComplexLit + s_RenderStateBlocks[4] = s_RenderStateBlocks[0]; } } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader index a857a8b1719..c34b2d311b7 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader @@ -221,6 +221,90 @@ Shader "Universal Render Pipeline/Complex Lit" ENDHLSL } + Pass + { + // Lightmode matches the ShaderPassName set in UniversalRenderPipeline.cs. SRPDefaultUnlit and passes with + // no LightMode tag are also rendered by Universal Render Pipeline + // + // Fill GBuffer data to prevent "holes", just in case someone wants to reuse GBuffer data. + // Deferred lighting is stenciled out for ComplexLit and rendered as forward. + Name "GBuffer" + Tags + { + "LightMode" = "UniversalGBuffer" + } + + // ------------------------------------- + // Render State Commands + ZWrite[_ZWrite] + ZTest LEqual + Cull[_Cull] + + HLSLPROGRAM + #pragma target 4.5 + + // Deferred Rendering Path does not support the OpenGL-based graphics API: + // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. + #pragma exclude_renderers gles3 glcore + + // ------------------------------------- + // Shader Stages + #pragma vertex LitGBufferPassVertex + #pragma fragment LitGBufferPassFragment + + // ------------------------------------- + // Material Keywords + #pragma shader_feature_local _NORMALMAP + #pragma shader_feature_local_fragment _ALPHATEST_ON + //#pragma shader_feature_local_fragment _ALPHAPREMULTIPLY_ON + #pragma shader_feature_local_fragment _EMISSION + #pragma shader_feature_local_fragment _METALLICSPECGLOSSMAP + #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + #pragma shader_feature_local_fragment _OCCLUSIONMAP + #pragma shader_feature_local _PARALLAXMAP + #pragma shader_feature_local _ _DETAIL_MULX2 _DETAIL_SCALED + + #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF + #pragma shader_feature_local_fragment _ENVIRONMENTREFLECTIONS_OFF + #pragma shader_feature_local_fragment _SPECULAR_SETUP + #pragma shader_feature_local _RECEIVE_SHADOWS_OFF + + // ------------------------------------- + // Universal Pipeline keywords + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN + //#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS + //#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ _SHADOWS_SOFT + #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 + #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile _ DIRLIGHTMAP_COMBINED + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #pragma instancing_options renderinglayer + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + + // ------------------------------------- + // Includes + #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/LitGBufferPass.hlsl" + ENDHLSL + } + Pass { Name "DepthOnly" diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Unlit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Unlit.shader index aa380470ed0..12b8d533316 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Unlit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Unlit.shader @@ -35,6 +35,7 @@ Shader "Universal Render Pipeline/Unlit" { "RenderType" = "Opaque" "IgnoreProjector" = "True" + "UniversalMaterialType" = "Unlit" "RenderPipeline" = "UniversalPipeline" } LOD 100 @@ -88,6 +89,52 @@ Shader "Universal Render Pipeline/Unlit" ENDHLSL } + // Fill GBuffer data to prevent "holes", just in case someone wants to reuse GBuffer for non-lighting effects. + // Deferred lighting is stenciled out. + Pass + { + Name "GBuffer" + Tags + { + "LightMode" = "UniversalGBuffer" + } + + HLSLPROGRAM + #pragma target 4.5 + + // Deferred Rendering Path does not support the OpenGL-based graphics API: + // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. + #pragma exclude_renderers gles3 glcore + + // ------------------------------------- + // Shader Stages + #pragma vertex UnlitPassVertex + #pragma fragment UnlitPassFragment + + // ------------------------------------- + // Material Keywords + #pragma shader_feature_local_fragment _ALPHATEST_ON + #pragma shader_feature_local_fragment _ALPHAMODULATE_ON + + // ------------------------------------- + // Unity defined keywords + #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION + #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + + // ------------------------------------- + // Includes + #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl" + ENDHLSL + } + Pass { Name "DepthOnly" diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl new file mode 100644 index 00000000000..c0bff62a8bc --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl @@ -0,0 +1,103 @@ +#ifndef URP_UNLIT_GBUFFER_PASS_INCLUDED +#define URP_UNLIT_GBUFFER_PASS_INCLUDED + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Unlit.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" +#if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" +#endif + +struct Attributes +{ + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + float3 normalOS : NORMAL; + + UNITY_VERTEX_INPUT_INSTANCE_ID +}; + +struct Varyings +{ + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + float3 normalWS : TEXCOORD1; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO +}; + +void InitializeInputData(Varyings input, out InputData inputData) +{ + inputData = (InputData)0; + + inputData.normalWS = NormalizeNormalPerPixel(input.normalWS); + + inputData.positionWS = float3(0, 0, 0); + inputData.viewDirectionWS = half3(0, 0, 1); + inputData.shadowCoord = 0; + inputData.fogCoord = 0; + inputData.vertexLighting = half3(0, 0, 0); + inputData.bakedGI = half3(0, 0, 0); + inputData.normalizedScreenSpaceUV = 0; + inputData.shadowMask = half4(1, 1, 1, 1); +} + +Varyings UnlitPassVertex(Attributes input) +{ + Varyings output = (Varyings)0; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); + output.positionCS = vertexInput.positionCS; + + output.uv = TRANSFORM_TEX(input.uv, _BaseMap); + + VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS); + output.normalWS = normalInput.normalWS; + + return output; +} + +FragmentOutput UnlitPassFragment(Varyings input) +{ + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + half2 uv = input.uv; + half4 texColor = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)); + half3 color = texColor.rgb * _BaseColor.rgb; + half alpha = texColor.a * _BaseColor.a; + + alpha = AlphaDiscard(alpha, _Cutoff); + color = AlphaModulate(color, alpha); + +#ifdef LOD_FADE_CROSSFADE + LODFadeCrossFade(input.positionCS); +#endif + + InputData inputData; + InitializeInputData(input, inputData); + +#ifdef _DBUFFER + ApplyDecalToBaseColor(input.positionCS, color); +#endif + + SurfaceData surfaceData = (SurfaceData)0; + surfaceData.albedo = color; + surfaceData.alpha = alpha; + +#if defined(_SCREEN_SPACE_OCCLUSION) // GBuffer never has transparents + float2 normalizedScreenSpaceUV = GetNormalizedScreenSpaceUV(input.positionCS); + AmbientOcclusionFactor aoFactor = GetScreenSpaceAmbientOcclusion(normalizedScreenSpaceUV); + surfaceData.occlusion = aoFactor.directAmbientOcclusion; +#else + surfaceData.occlusion = 1; +#endif + + return SurfaceDataToGbuffer(surfaceData, inputData, float3(0,0,0), kLightingInvalid); +} + +#endif diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl.meta new file mode 100644 index 00000000000..947a0ce04ac --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitGBufferPass.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 28fcbf208a4c04495b93bb6d554908e0 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/URPAssets/DefaultURPAsset.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/URPAssets/DefaultURPAsset.asset index 5c1dd4bd511..86efead8a05 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/URPAssets/DefaultURPAsset.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/URPAssets/DefaultURPAsset.asset @@ -34,6 +34,8 @@ MonoBehaviour: - {fileID: 11400000, guid: 9a26b2a5c669cc1409605b459d1696ea, type: 2} - {fileID: 11400000, guid: 7ea39ebe5c005724080e9ffa68153bcc, type: 2} - {fileID: 11400000, guid: f6caeba8e73a4774fa061ede8461fc20, type: 2} + - {fileID: 11400000, guid: 1f0ec70d2f6284f04a23236fd067dec1, type: 2} + - {fileID: 11400000, guid: 81c60c102f7364ff7a219d5723b5a355, type: 2} m_DefaultRendererIndex: 0 m_RequireDepthTexture: 1 m_RequireOpaqueTexture: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred.meta new file mode 100644 index 00000000000..7462f3a3484 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 04e1441589fd04e94a4628c6d5688aef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph new file mode 100644 index 00000000000..97275b55cd0 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph @@ -0,0 +1,853 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba15506cb41c441186ff65e82df753b6", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "9bdf306d19264d968e91cf1d71a7e358" + } + ], + "m_Nodes": [ + { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + { + "m_Id": "54651f2d5a0845af998e9277ca48a57b" + }, + { + "m_Id": "7abc36b9a35e41b9bbb266ea7d9f7657" + }, + { + "m_Id": "4f8137e638004a8eb94afe7d3b8ca38b" + }, + { + "m_Id": "f93fbe86820e4b3eb981c223d108cf4a" + }, + { + "m_Id": "2719c973bdac4d8bbb3e0986c4678f8e" + }, + { + "m_Id": "ea20427b2b334fb0a658a9052a12a640" + }, + { + "m_Id": "a3cd8d95a97b4e8a9b5e386d3176aaaa" + }, + { + "m_Id": "9f495d789e0b429f8195d4a47f847a11" + }, + { + "m_Id": "f9bdc64107584fc3a34b5224c6b9c1e6" + }, + { + "m_Id": "f136e946937b4102879cde2da778f55a" + }, + { + "m_Id": "0f57414ce7e9434faa0d719256b6f50f" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7abc36b9a35e41b9bbb266ea7d9f7657" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "4f8137e638004a8eb94afe7d3b8ca38b" + }, + { + "m_Id": "f93fbe86820e4b3eb981c223d108cf4a" + }, + { + "m_Id": "2719c973bdac4d8bbb3e0986c4678f8e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + { + "m_Id": "54651f2d5a0845af998e9277ca48a57b" + }, + { + "m_Id": "ea20427b2b334fb0a658a9052a12a640" + }, + { + "m_Id": "a3cd8d95a97b4e8a9b5e386d3176aaaa" + }, + { + "m_Id": "9f495d789e0b429f8195d4a47f847a11" + }, + { + "m_Id": "f9bdc64107584fc3a34b5224c6b9c1e6" + }, + { + "m_Id": "f136e946937b4102879cde2da778f55a" + }, + { + "m_Id": "0f57414ce7e9434faa0d719256b6f50f" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "b439bb209ef84a4aa08c77adf19ac190" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0f57414ce7e9434faa0d719256b6f50f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CoatSmoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "bf48c89f4a54411794965d725721eab4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CoatSmoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2719c973bdac4d8bbb3e0986c4678f8e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9c5c0728ad7248939f5d4c3e2c82dcd9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "46b7a0b21ba24b0d871a41db10bbeec8", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4f8137e638004a8eb94afe7d3b8ca38b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9bccd39c992542339016cafa8b03ea64" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "54651f2d5a0845af998e9277ca48a57b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f160a4849bc9465f8233b6948f294c4e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "659abee6fb6e4c3e880847294082f099", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": true, + "m_BlendModePreserveSpecular": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "6a88fea26ed343adb5ee1314432871aa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "aa0aef8991374317bddb64ce0b1bb6aa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "7abc36b9a35e41b9bbb266ea7d9f7657", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -314.0, + "y": 200.0, + "width": 208.0, + "height": 125.0 + } + }, + "m_Slots": [ + { + "m_Id": "46b7a0b21ba24b0d871a41db10bbeec8" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.0, + "g": 0.7529411911964417, + "b": 0.501960813999176, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "89e7faebe0434c048190652c68e5f8da", + "m_Id": 0, + "m_DisplayName": "Coat Mask", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CoatMask", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "9751618f74584b57acba85e5c1d3ffe4", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "9bccd39c992542339016cafa8b03ea64", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "9bdf306d19264d968e91cf1d71a7e358", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "9c5c0728ad7248939f5d4c3e2c82dcd9", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9f495d789e0b429f8195d4a47f847a11", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b3b21f7f57d647d0bd203bbea97c50dc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a3cd8d95a97b4e8a9b5e386d3176aaaa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9751618f74584b57acba85e5c1d3ffe4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "aa0aef8991374317bddb64ce0b1bb6aa", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3b21f7f57d647d0bd203bbea97c50dc", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "b439bb209ef84a4aa08c77adf19ac190", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "659abee6fb6e4c3e880847294082f099" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bf48c89f4a54411794965d725721eab4", + "m_Id": 0, + "m_DisplayName": "Coat Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "CoatSmoothness", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cb6b0a1d79b74d56a190735bdcb8414d", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cf9f1435a30f4dcfac8eb0f2b5d40df3", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e158b5f387b548ee8cd6815894b40193", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Metallic", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ea20427b2b334fb0a658a9052a12a640", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cb6b0a1d79b74d56a190735bdcb8414d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f136e946937b4102879cde2da778f55a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.CoatMask", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "89e7faebe0434c048190652c68e5f8da" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.CoatMask" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f160a4849bc9465f8233b6948f294c4e", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.699999988079071, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f93fbe86820e4b3eb981c223d108cf4a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cf9f1435a30f4dcfac8eb0f2b5d40df3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9bdc64107584fc3a34b5224c6b9c1e6", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Metallic", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e158b5f387b548ee8cd6815894b40193" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Metallic" +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph.meta new file mode 100644 index 00000000000..e2c8c0c79e8 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_Graph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: da9733adb95ad4886b345327507aa2a8 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat new file mode 100644 index 00000000000..bac84e7a199 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat @@ -0,0 +1,142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_ComplexLit_O + m_Shader: {fileID: 4800000, guid: ee7e4c9a5f6364b688a332c67fc32cca, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ClearCoatMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoat: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.7 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0.5019608, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat.meta new file mode 100644 index 00000000000..8717541c539 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_O.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f88666de509042afafe5f55bc937b74 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat new file mode 100644 index 00000000000..a82f70dded1 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2938662716500970180 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_ComplexLit_SG_C + m_Shader: {fileID: -6465566751694194690, guid: da9733adb95ad4886b345327507aa2a8, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0, b: 0, a: 1} + - _Color: {r: 0.7529412, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat.meta new file mode 100644 index 00000000000..02de50bfeab --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_ComplexLit_SG_C.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c67bc245325b24fabb57406085ff3cf9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset new file mode 100644 index 00000000000..e146dd38e62 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4989252576251722143 +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: 4d661a87bf0d747eda25e011da3db58c, type: 3} + m_Name: DeferredGBufferVisualizationRenderFeature + m_EditorClassIdentifier: + m_Active: 1 + visualizeShader: {fileID: 4800000, guid: 05f75adf3dbb04d61937b7c461ab5b4f, type: 3} + visualizeAlphaChannel: 1 +--- !u!114 &11400000 +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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: Deferred_GBuffer_Alpha_Visualization_Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + probeVolumeResources: + probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, + type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, + type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, + type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, + type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, + type: 3} + probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, + type: 3} + m_RendererFeatures: + - {fileID: -4989252576251722143} + m_RendererFeatureMap: 6146d051379dc2ba + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 0} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} + materialErrorPS: {fileID: 0} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + screenSpaceLensFlare: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 1 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 1 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset.meta new file mode 100644 index 00000000000..7fd1d9a9057 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Alpha_Visualization_Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81c60c102f7364ff7a219d5723b5a355 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat new file mode 100644 index 00000000000..3aa8d96eaae --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2733923283665781058 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_GBuffer_Visualization_Material + m_Shader: {fileID: 4800000, guid: 05f75adf3dbb04d61937b7c461ab5b4f, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat.meta new file mode 100644 index 00000000000..a5183456544 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e778bd742f0d4ed4a631381b32de324 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs new file mode 100644 index 00000000000..5453cff5bb3 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs @@ -0,0 +1,140 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using UnityEngine.Experimental.Rendering.RenderGraphModule; + +public class Deferred_GBuffer_Visualization_RenderFeature : ScriptableRendererFeature +{ + public Shader visualizeShader; + public bool visualizeAlphaChannel = false; + private Material m_Material; + + class CustomRenderPass : ScriptableRenderPass + { + internal Material m_Material; + internal bool m_VisualizeAlphaChannel = false; + + public CustomRenderPass(Shader visualizeShader, bool visualizeAlphaChannel) + { + m_VisualizeAlphaChannel = visualizeAlphaChannel; + } + + public void Setup(Material material) + { + m_Material = material; + } + + // This method is called before executing the render pass. + // It can be used to configure render targets and their clear state. Also to create temporary render target textures. + // When empty this render pass will render to the active camera render target. + // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. + // The render pipeline will ensure target setup and clearing happens in a performant manner. + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + } + + // Here you can implement the rendering logic. + // Use ScriptableRenderContext to issue drawing commands or execute command buffers + // https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html + // You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline. + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CommandBuffer cmd = CommandBufferPool.Get(); + + ExecutePass(cmd, ref renderingData); + + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + + CommandBufferPool.Release(cmd); + } + + void ExecutePass(CommandBuffer cmd, ref RenderingData renderingData) + { + if (m_Material == null) + return; + + UniversalRenderer renderer = renderingData.cameraData.renderer as UniversalRenderer; + + ConfigureTarget(renderer?.cameraColorTargetHandle); + ConfigureClear(ClearFlag.Color, Color.yellow); + + if (m_Material) + { + CoreUtils.SetKeyword(m_Material,"VIS_ALPHA", m_VisualizeAlphaChannel); + cmd.DrawProcedural(Matrix4x4.identity, m_Material, 0, MeshTopology.Triangles, 3, 1); + } + } + + // Cleanup any allocated resources that were created during the execution of this render pass. + public override void OnCameraCleanup(CommandBuffer cmd) + { + } + + private class PassData + { + internal Material material; + internal bool visualizeAlphaChannel; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, FrameResources frameResources, ref RenderingData renderingData) + { + if (m_Material == null) + return; + + UniversalRenderer renderer = renderingData.cameraData.renderer as UniversalRenderer; + if (renderer == null) + return; + + using (var builder = renderGraph.AddRasterRenderPass("Test GBuffer visualization.", out var passData)) + { + builder.UseTextureFragment(renderer.activeColorTexture, 0, IBaseRenderGraphBuilder.AccessFlags.Write); + passData.material = m_Material; + passData.visualizeAlphaChannel = m_VisualizeAlphaChannel; + + builder.SetRenderFunc(static (PassData data, RasterGraphContext context) => + { + CoreUtils.SetKeyword(data.material,"VIS_ALPHA", data.visualizeAlphaChannel); + context.cmd.DrawProcedural(Matrix4x4.identity, data.material, 0, MeshTopology.Triangles, 3, 1); + }); + } + } + } + + CustomRenderPass m_ScriptablePass; + + /// + public override void Create() + { + m_ScriptablePass = new CustomRenderPass(visualizeShader, visualizeAlphaChannel); + + // Configures where the render pass should be injected. + m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingTransparents; + } + + // Here you can inject one or multiple render passes in the renderer. + // This method is called when setting up the renderer once per-camera. + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!GetMaterials()) + { + Debug.LogErrorFormat("{0}.AddRenderPasses(): Missing material. {1} render pass will not be added.", GetType().Name, name); + return; + } + + m_ScriptablePass.Setup(m_Material); + renderer.EnqueuePass(m_ScriptablePass); + } + + protected override void Dispose(bool disposing) + { + CoreUtils.Destroy(m_Material); + } + + private bool GetMaterials() + { + if (m_Material == null && visualizeShader != null) + m_Material = CoreUtils.CreateEngineMaterial(visualizeShader); + return m_Material != null; + } +} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs.meta new file mode 100644 index 00000000000..6b7382cc883 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_RenderFeature.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4d661a87bf0d747eda25e011da3db58c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - visualizeShader: {fileID: 4800000, guid: 05f75adf3dbb04d61937b7c461ab5b4f, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset new file mode 100644 index 00000000000..c4e6985f32b --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4989252576251722143 +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: 4d661a87bf0d747eda25e011da3db58c, type: 3} + m_Name: DeferredGBufferVisualizationRenderFeature + m_EditorClassIdentifier: + m_Active: 1 + visualizeShader: {fileID: 4800000, guid: 05f75adf3dbb04d61937b7c461ab5b4f, type: 3} + visualizeAlphaChannel: 0 +--- !u!114 &11400000 +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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: Deferred_GBuffer_Visualization_Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + probeVolumeResources: + probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, + type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, + type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, + type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, + type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, + type: 3} + probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, + type: 3} + m_RendererFeatures: + - {fileID: -4989252576251722143} + m_RendererFeatureMap: 6146d051379dc2ba + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 0} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} + materialErrorPS: {fileID: 0} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + screenSpaceLensFlare: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 1 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 1 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset.meta new file mode 100644 index 00000000000..6b5e62d9912 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f0ec70d2f6284f04a23236fd067dec1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader new file mode 100644 index 00000000000..19c76ab1d7c --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader @@ -0,0 +1,139 @@ +Shader "Universal Render Pipeline/Deferred_GBuffer_Visualization_Shader" +{ + Properties + { + // BlendMode + [HideInInspector]_Surface("__surface", Float) = 0.0 + [HideInInspector]_Blend("__mode", Float) = 0.0 + [HideInInspector]_Cull("__cull", Float) = 2.0 + [HideInInspector][ToggleUI] _AlphaClip("__clip", Float) = 0.0 + [HideInInspector] _BlendOp("__blendop", Float) = 0.0 + [HideInInspector] _SrcBlend("__src", Float) = 1.0 + [HideInInspector] _DstBlend("__dst", Float) = 0.0 + [HideInInspector] _SrcBlendAlpha("__srcA", Float) = 1.0 + [HideInInspector] _DstBlendAlpha("__dstA", Float) = 0.0 + [HideInInspector] _ZWrite("__zw", Float) = 1.0 + } + + SubShader + { + Tags + { + "RenderType" = "Opaque" + "IgnoreProjector" = "True" + "UniversalMaterialType" = "Unlit" + "RenderPipeline" = "UniversalPipeline" + } + LOD 100 + + // ------------------------------------- + // Render State Commands + Blend [_SrcBlend][_DstBlend], [_SrcBlendAlpha][_DstBlendAlpha] + ZWrite [_ZWrite] + Cull [_Cull] + + Pass + { + Name "Deferred_GBuffer_Visualization" + + HLSLPROGRAM + #pragma target 2.0 + + // ------------------------------------- + // Shader Stages + #pragma vertex GBufferVisPassVertex + #pragma fragment GBufferVisPassFragment + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GlobalSamplers.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" + + #pragma multi_compile_fragment _ VIS_ALPHA + + TEXTURE2D_X(_GBuffer0); + TEXTURE2D_X(_GBuffer1); + TEXTURE2D_X(_GBuffer2); + TEXTURE2D_X(_GBuffer3); + + struct Attributes + { + uint vertexID : SV_VertexID; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + Varyings GBufferVisPassVertex(Attributes input) + { + Varyings output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float4 pos = GetFullScreenTriangleVertexPosition(input.vertexID); + float2 uv = GetFullScreenTriangleTexCoord(input.vertexID); + + output.positionCS = pos; + output.texcoord = uv; + + return output; + } + + void GBufferVisPassFragment(Varyings input, out half4 outColor : SV_Target0) + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + outColor = float4(1,1,0,1); + + float2 uv = input.texcoord; + #ifndef UNITY_UV_STARTS_AT_TOP + uv.y = 1.0 - uv.y; + #endif + // Bottom row. + if(all(uv < float2(0.5, 0.5))) // GBuffer2 == normal.rgb, smoothness + { + float2 uvX = saturate(uv * 2); + outColor = SAMPLE_TEXTURE2D_X_LOD(_GBuffer2, sampler_PointClamp, uvX, 0); + } + else if(uv.x >= 0.5 && uv.y < 0.5) // GBuffer3 == GI.rgb + { + float2 uvX = saturate((uv - float2(0.5, 0.0)) * 2); + outColor = SAMPLE_TEXTURE2D_X_LOD(_GBuffer3, sampler_PointClamp, uvX, 0); + } + // Top row. + else if(uv.x < 0.5 && uv.y >= 0.5) // GBuffer0 == Color.rgb, material flags + { + float2 uvX = saturate((uv - float2(0.0, 0.5)) * 2); + outColor = SAMPLE_TEXTURE2D_X_LOD(_GBuffer0, sampler_PointClamp, uvX, 0); + } + else if(all(uv >= float2(0.5, 0.5))) // Gbuffer1 == Metallic.r/Specular.rgb, ambient occlusion + { + float2 uvX = saturate((uv - float2(0.5, 0.5)) * 2); + outColor = SAMPLE_TEXTURE2D_X_LOD(_GBuffer1, sampler_PointClamp, uvX, 0); + } + + // Visualize the alpha channel in rgb. + #ifdef VIS_ALPHA + outColor.rgb = outColor.aaa; + #endif + + // The testframework / refimages don't handle non-transparent alpha well, + // force alpha to 1 for visual test purposes. + // Comment out to check GBuffer alpha channels. + outColor.a = 1; + } + ENDHLSL + } + } + + FallBack "Hidden/Universal Render Pipeline/FallbackError" +} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader.meta new file mode 100644 index 00000000000..55a9e15eb75 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_GBuffer_Visualization_Shader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 05f75adf3dbb04d61937b7c461ab5b4f +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat new file mode 100644 index 00000000000..3d0922f3f77 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_Lit_B + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.7 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0, b: 0.7529412, a: 1} + - _Color: {r: 0, g: 0, b: 0.7529412, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat.meta new file mode 100644 index 00000000000..7aa0446fc9a --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_B.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d1047310b0ac4c56a8e4436385f2347 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph new file mode 100644 index 00000000000..3ab8f5bc0ec --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph @@ -0,0 +1,743 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "ba15506cb41c441186ff65e82df753b6", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "9bdf306d19264d968e91cf1d71a7e358" + } + ], + "m_Nodes": [ + { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + { + "m_Id": "54651f2d5a0845af998e9277ca48a57b" + }, + { + "m_Id": "7abc36b9a35e41b9bbb266ea7d9f7657" + }, + { + "m_Id": "4f8137e638004a8eb94afe7d3b8ca38b" + }, + { + "m_Id": "f93fbe86820e4b3eb981c223d108cf4a" + }, + { + "m_Id": "2719c973bdac4d8bbb3e0986c4678f8e" + }, + { + "m_Id": "ea20427b2b334fb0a658a9052a12a640" + }, + { + "m_Id": "a3cd8d95a97b4e8a9b5e386d3176aaaa" + }, + { + "m_Id": "9f495d789e0b429f8195d4a47f847a11" + }, + { + "m_Id": "f9bdc64107584fc3a34b5224c6b9c1e6" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7abc36b9a35e41b9bbb266ea7d9f7657" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "4f8137e638004a8eb94afe7d3b8ca38b" + }, + { + "m_Id": "f93fbe86820e4b3eb981c223d108cf4a" + }, + { + "m_Id": "2719c973bdac4d8bbb3e0986c4678f8e" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "6a88fea26ed343adb5ee1314432871aa" + }, + { + "m_Id": "54651f2d5a0845af998e9277ca48a57b" + }, + { + "m_Id": "ea20427b2b334fb0a658a9052a12a640" + }, + { + "m_Id": "a3cd8d95a97b4e8a9b5e386d3176aaaa" + }, + { + "m_Id": "9f495d789e0b429f8195d4a47f847a11" + }, + { + "m_Id": "f9bdc64107584fc3a34b5224c6b9c1e6" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "b439bb209ef84a4aa08c77adf19ac190" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2719c973bdac4d8bbb3e0986c4678f8e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9c5c0728ad7248939f5d4c3e2c82dcd9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "46b7a0b21ba24b0d871a41db10bbeec8", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4f8137e638004a8eb94afe7d3b8ca38b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9bccd39c992542339016cafa8b03ea64" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "54651f2d5a0845af998e9277ca48a57b", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f160a4849bc9465f8233b6948f294c4e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "659abee6fb6e4c3e880847294082f099", + "m_WorkflowMode": 1, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": false, + "m_BlendModePreserveSpecular": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "6a88fea26ed343adb5ee1314432871aa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "aa0aef8991374317bddb64ce0b1bb6aa" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "7abc36b9a35e41b9bbb266ea7d9f7657", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -314.0, + "y": 200.0, + "width": 208.0, + "height": 125.0 + } + }, + "m_Slots": [ + { + "m_Id": "46b7a0b21ba24b0d871a41db10bbeec8" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.3764705955982208, + "g": 0.0, + "b": 0.7529411911964417, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "9751618f74584b57acba85e5c1d3ffe4", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "9bccd39c992542339016cafa8b03ea64", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "9bdf306d19264d968e91cf1d71a7e358", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "9c5c0728ad7248939f5d4c3e2c82dcd9", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "9f495d789e0b429f8195d4a47f847a11", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b3b21f7f57d647d0bd203bbea97c50dc" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a3cd8d95a97b4e8a9b5e386d3176aaaa", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "9751618f74584b57acba85e5c1d3ffe4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "aa0aef8991374317bddb64ce0b1bb6aa", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b3b21f7f57d647d0bd203bbea97c50dc", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "b439bb209ef84a4aa08c77adf19ac190", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "659abee6fb6e4c3e880847294082f099" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cb6b0a1d79b74d56a190735bdcb8414d", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cf9f1435a30f4dcfac8eb0f2b5d40df3", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e158b5f387b548ee8cd6815894b40193", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Metallic", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "ea20427b2b334fb0a658a9052a12a640", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cb6b0a1d79b74d56a190735bdcb8414d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f160a4849bc9465f8233b6948f294c4e", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.699999988079071, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f93fbe86820e4b3eb981c223d108cf4a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cf9f1435a30f4dcfac8eb0f2b5d40df3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f9bdc64107584fc3a34b5224c6b9c1e6", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Metallic", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e158b5f387b548ee8cd6815894b40193" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Metallic" +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph.meta new file mode 100644 index 00000000000..ec5d0f77a19 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_Graph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2231fadcb49d04f3199446445965bbcd +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat new file mode 100644 index 00000000000..4fa43b2c75c --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2938662716500970180 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: 639247ca83abc874e893eb93af2b5e44, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 0 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_Lit_SG_V + m_Shader: {fileID: -6465566751694194690, guid: 2231fadcb49d04f3199446445965bbcd, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _BUILTIN_QueueControl: 0 + - _BUILTIN_QueueOffset: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0, b: 0, a: 1} + - _Color: {r: 0.7529412, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat.meta new file mode 100644 index 00000000000..ddea386e0d7 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Lit_SG_V.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4d9a10f9be044c0eb903a5c8a00fa25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat new file mode 100644 index 00000000000..870c414a2f2 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat @@ -0,0 +1,141 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_SimpleLit_G + m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _SPECULAR_COLOR + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.7 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SpecSource: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.7529412, b: 0, a: 1} + - _Color: {r: 0, g: 0.7529412, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 1, g: 1, b: 1, a: 0.7} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat.meta new file mode 100644 index 00000000000..79e669c30f0 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_SimpleLit_G.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad1b489ce18c4b4cbd0a851deb9e10d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph new file mode 100644 index 00000000000..855915c7467 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph @@ -0,0 +1,440 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "38b788e09d1b427982e4a981ca11f2ca", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "a80897217bda4c84a1e6686b6d46f808" + } + ], + "m_Nodes": [ + { + "m_Id": "fc7791af09444c6f923c948536a483ed" + }, + { + "m_Id": "3caecccae3c24d8596db1d95d683c426" + }, + { + "m_Id": "5646b8aef570403895acbc83b1860d78" + }, + { + "m_Id": "cba7cbe93171438c9197c427ff81f703" + }, + { + "m_Id": "10e6732ef24e4cf59dd1092d97341fde" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "10e6732ef24e4cf59dd1092d97341fde" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cba7cbe93171438c9197c427ff81f703" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [ + { + "m_Id": "fc7791af09444c6f923c948536a483ed" + }, + { + "m_Id": "3caecccae3c24d8596db1d95d683c426" + }, + { + "m_Id": "5646b8aef570403895acbc83b1860d78" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "cba7cbe93171438c9197c427ff81f703" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "44ebde2d057846548c1fb21ee177b88c" + } + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "10e6732ef24e4cf59dd1092d97341fde", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -389.0, + "y": 200.0, + "width": 208.0, + "height": 125.0 + } + }, + "m_Slots": [ + { + "m_Id": "fabdc5fba92444d4a40ccc4dc605b5f4" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.7529411911964417, + "g": 0.7529411911964417, + "b": 0.0, + "a": 0.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "3caecccae3c24d8596db1d95d683c426", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "8ee33ac227434bab9a1911c10c609870" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "44ebde2d057846548c1fb21ee177b88c", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "af9eb4d3db4b438db36f7819416fd50f" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5646b8aef570403895acbc83b1860d78", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "efeebbf44e4e42eda056a3940dc9bcc3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "8ee33ac227434bab9a1911c10c609870", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "a242b36b6fcf480aae4d4d500f07dddd", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "a80897217bda4c84a1e6686b6d46f808", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "af9eb4d3db4b438db36f7819416fd50f" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cba7cbe93171438c9197c427ff81f703", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a242b36b6fcf480aae4d4d500f07dddd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e83bdf9df65f4c2b861601099a050c9d", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "efeebbf44e4e42eda056a3940dc9bcc3", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "fabdc5fba92444d4a40ccc4dc605b5f4", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fc7791af09444c6f923c948536a483ed", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e83bdf9df65f4c2b861601099a050c9d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph.meta new file mode 100644 index 00000000000..3df2db9309c --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_Graph.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c5bdf0bf23b3340719648b2d60f0a55a +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat new file mode 100644 index 00000000000..e6bace6726f --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_Unlit_R + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0, b: 0, a: 1} + - _Color: {r: 0.7529412, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat.meta new file mode 100644 index 00000000000..f1ccf3773a3 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_R.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0341a47ec4c841ad86e3bbcbf7ef84f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat new file mode 100644 index 00000000000..6fdda6c6300 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Deferred_Unlit_SG_Y + m_Shader: {fileID: -6465566751694194690, guid: c5bdf0bf23b3340719648b2d60f0a55a, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.7529412, g: 0, b: 0, a: 1} + - _Color: {r: 0.7529412, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6380172852636000544 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat.meta new file mode 100644 index 00000000000..6bb2ee231ac --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred/Deferred_Unlit_SG_Y.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ce354a4fbd5f4da29ab84be2123934a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity new file mode 100644 index 00000000000..e26bc7a1178 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity @@ -0,0 +1,1540 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + 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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &65625740 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 65625744} + - component: {fileID: 65625743} + - component: {fileID: 65625742} + - component: {fileID: 65625741} + m_Layer: 0 + m_Name: SphereUnlit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &65625741 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &65625742 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d0341a47ec4c841ad86e3bbcbf7ef84f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &65625743 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &65625744 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &202023670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202023673} + - component: {fileID: 202023672} + - component: {fileID: 202023671} + m_Layer: 0 + m_Name: Point Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &202023671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &202023672 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 2 + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_Intensity: 1 + m_Range: 20 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + 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 &202023673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &318533621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 318533625} + - component: {fileID: 318533624} + - component: {fileID: 318533623} + - component: {fileID: 318533622} + m_Layer: 0 + m_Name: SphereComplexLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &318533622 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &318533623 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9f88666de509042afafe5f55bc937b74, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &318533624 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &318533625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &570808776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570808780} + - component: {fileID: 570808779} + - component: {fileID: 570808778} + - component: {fileID: 570808777} + m_Layer: 0 + m_Name: SphereLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &570808777 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &570808778 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0d1047310b0ac4c56a8e4436385f2347, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &570808779 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &570808780 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &829075400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 829075404} + - component: {fileID: 829075403} + - component: {fileID: 829075402} + - component: {fileID: 829075401} + m_Layer: 0 + m_Name: SphereLit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &829075401 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &829075402 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d4d9a10f9be044c0eb903a5c8a00fa25, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &829075403 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &829075404 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &878973496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 878973500} + - component: {fileID: 878973499} + - component: {fileID: 878973498} + - component: {fileID: 878973497} + m_Layer: 0 + m_Name: ShaderRef + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &878973497 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878973496} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &878973498 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878973496} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &878973499 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878973496} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &878973500 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878973496} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &961636401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961636405} + - component: {fileID: 961636404} + - component: {fileID: 961636402} + - component: {fileID: 961636406} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &961636402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 17 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!20 &961636404 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + 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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &961636405 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -7.85} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &961636406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 960 + TargetHeight: 540 + TargetMSAASamples: 4 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.0025 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 3 + ActiveImageTests: 1 + ActivePixelTests: -1 + WaitFrames: 0 + XRCompatible: 1 + CheckMemoryAllocation: 1 + SetBackBufferResolution: 0 +--- !u!1 &1010744422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1010744425} + - component: {fileID: 1010744424} + - component: {fileID: 1010744423} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1010744423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1010744424 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1010744425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1190471343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1190471347} + - component: {fileID: 1190471346} + - component: {fileID: 1190471345} + - component: {fileID: 1190471344} + m_Layer: 0 + m_Name: SphereSimpleLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1190471344 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1190471345 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7ad1b489ce18c4b4cbd0a851deb9e10d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1190471346 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1190471347 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1269189928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1269189932} + - component: {fileID: 1269189931} + - component: {fileID: 1269189930} + - component: {fileID: 1269189929} + m_Layer: 0 + m_Name: SphereComplexLit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1269189929 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1269189930 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c67bc245325b24fabb57406085ff3cf9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1269189931 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1269189932 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1458745968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1458745972} + - component: {fileID: 1458745971} + - component: {fileID: 1458745970} + - component: {fileID: 1458745969} + m_Layer: 0 + m_Name: SphereUnlit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1458745969 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1458745970 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7ce354a4fbd5f4da29ab84be2123934a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1458745971 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1458745972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1521124715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521124719} + - component: {fileID: 1521124718} + - component: {fileID: 1521124717} + - component: {fileID: 1521124716} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1521124716 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1521124717 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: da9b80098755d4473bd0041bd485d6ed, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1521124718 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1521124719 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 16, y: 9, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1698873373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698873375} + - component: {fileID: 1698873374} + m_Layer: 0 + m_Name: SelectQualitySetting + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1698873374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698873373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f1decc188d2f3146ab93291a5c743e9, type: 3} + m_Name: + m_EditorClassIdentifier: + qualityLevelIndex: 0 +--- !u!4 &1698873375 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698873373} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5195698, y: 1.3765798, z: 0.5559635} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1698873375} + - {fileID: 961636405} + - {fileID: 1010744425} + - {fileID: 1521124719} + - {fileID: 65625744} + - {fileID: 1190471347} + - {fileID: 570808780} + - {fileID: 318533625} + - {fileID: 1458745972} + - {fileID: 829075404} + - {fileID: 1269189932} + - {fileID: 202023673} + - {fileID: 878973500} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity.meta new file mode 100644 index 00000000000..37c7fdec430 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f42c387ccdc6840159743027165e1b7c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity new file mode 100644 index 00000000000..d87f9bd2e6c --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity @@ -0,0 +1,1540 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + 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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &65625740 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 65625744} + - component: {fileID: 65625743} + - component: {fileID: 65625742} + - component: {fileID: 65625741} + m_Layer: 0 + m_Name: SphereUnlit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &65625741 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &65625742 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d0341a47ec4c841ad86e3bbcbf7ef84f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &65625743 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &65625744 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65625740} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &202023670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202023673} + - component: {fileID: 202023672} + - component: {fileID: 202023671} + m_Layer: 0 + m_Name: Point Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &202023671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &202023672 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 2 + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_Intensity: 1 + m_Range: 20 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + 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 &202023673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202023670} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &318533621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 318533625} + - component: {fileID: 318533624} + - component: {fileID: 318533623} + - component: {fileID: 318533622} + m_Layer: 0 + m_Name: SphereComplexLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &318533622 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &318533623 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9f88666de509042afafe5f55bc937b74, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &318533624 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &318533625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 318533621} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &570808776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570808780} + - component: {fileID: 570808779} + - component: {fileID: 570808778} + - component: {fileID: 570808777} + m_Layer: 0 + m_Name: SphereLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &570808777 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &570808778 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0d1047310b0ac4c56a8e4436385f2347, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &570808779 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &570808780 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570808776} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &829075400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 829075404} + - component: {fileID: 829075403} + - component: {fileID: 829075402} + - component: {fileID: 829075401} + m_Layer: 0 + m_Name: SphereLit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &829075401 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &829075402 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d4d9a10f9be044c0eb903a5c8a00fa25, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &829075403 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &829075404 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829075400} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &961636401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961636405} + - component: {fileID: 961636404} + - component: {fileID: 961636402} + - component: {fileID: 961636406} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &961636402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 18 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!20 &961636404 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + 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_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &961636405 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -7.85} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &961636406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961636401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 960 + TargetHeight: 540 + TargetMSAASamples: 4 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.0025 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 3 + ActiveImageTests: 1 + ActivePixelTests: -1 + WaitFrames: 0 + XRCompatible: 1 + CheckMemoryAllocation: 1 + SetBackBufferResolution: 0 +--- !u!1 &1010744422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1010744425} + - component: {fileID: 1010744424} + - component: {fileID: 1010744423} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1010744423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1010744424 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1010744425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1010744422} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1115557141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1115557145} + - component: {fileID: 1115557144} + - component: {fileID: 1115557143} + - component: {fileID: 1115557142} + m_Layer: 0 + m_Name: ShaderRef + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1115557142 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115557141} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1115557143 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115557141} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1115557144 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115557141} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1115557145 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115557141} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1190471343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1190471347} + - component: {fileID: 1190471346} + - component: {fileID: 1190471345} + - component: {fileID: 1190471344} + m_Layer: 0 + m_Name: SphereSimpleLit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1190471344 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1190471345 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7ad1b489ce18c4b4cbd0a851deb9e10d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1190471346 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1190471347 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190471343} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1269189928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1269189932} + - component: {fileID: 1269189931} + - component: {fileID: 1269189930} + - component: {fileID: 1269189929} + m_Layer: 0 + m_Name: SphereComplexLit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1269189929 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1269189930 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c67bc245325b24fabb57406085ff3cf9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1269189931 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1269189932 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269189928} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1458745968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1458745972} + - component: {fileID: 1458745971} + - component: {fileID: 1458745970} + - component: {fileID: 1458745969} + m_Layer: 0 + m_Name: SphereUnlit_SG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1458745969 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1458745970 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7ce354a4fbd5f4da29ab84be2123934a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1458745971 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1458745972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1458745968} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: -2, z: 0} + m_LocalScale: {x: 4, y: 4, z: 4} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1521124715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521124719} + - component: {fileID: 1521124718} + - component: {fileID: 1521124717} + - component: {fileID: 1521124716} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1521124716 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1521124717 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Enabled: 1 + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: da9b80098755d4473bd0041bd485d6ed, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1521124718 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1521124719 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521124715} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 16, y: 9, z: 0.1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1698873373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698873375} + - component: {fileID: 1698873374} + m_Layer: 0 + m_Name: SelectQualitySetting + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1698873374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698873373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f1decc188d2f3146ab93291a5c743e9, type: 3} + m_Name: + m_EditorClassIdentifier: + qualityLevelIndex: 0 +--- !u!4 &1698873375 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698873373} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5195698, y: 1.3765798, z: 0.5559635} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1698873375} + - {fileID: 961636405} + - {fileID: 1010744425} + - {fileID: 1521124719} + - {fileID: 65625744} + - {fileID: 1190471347} + - {fileID: 570808780} + - {fileID: 318533625} + - {fileID: 1458745972} + - {fileID: 829075404} + - {fileID: 1269189932} + - {fileID: 202023673} + - {fileID: 1115557145} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity.meta new file mode 100644 index 00000000000..f67d167c3b1 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/060_Deferred_GBuffer_Alpha.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e90c743b5f0d84d30bc98e6d5be68eca +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset index bdb5bd25d1b..5af8616aa1c 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset @@ -574,6 +574,26 @@ MonoBehaviour: XrSdk: OculusLoader StereoModes: 0 Reason: Unstable for OpenGLES3 on Quest + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: f42c387ccdc6840159743027165e1b7c, type: 3} + - {fileID: 102900000, guid: e90c743b5f0d84d30bc98e6d5be68eca, type: 3} + ColorSpace: -1 + BuildPlatform: -2 + GraphicsDevice: 17 + XrSdk: + StereoModes: 0 + Reason: No GL on Deferred. + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: f42c387ccdc6840159743027165e1b7c, type: 3} + - {fileID: 102900000, guid: e90c743b5f0d84d30bc98e6d5be68eca, type: 3} + ColorSpace: -1 + BuildPlatform: -2 + GraphicsDevice: 11 + XrSdk: + StereoModes: 0 + Reason: No GLES on Deferred. - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 0bcaa565757b243bba6bd2c007b0977c, type: 3} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset index 4bd1a5416f1..17aaa6a9096 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset @@ -155,6 +155,12 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/056_SoftShadowQuality_Custom_8K_4Cascades.unity guid: db7018b6563a7684fa69876b4864c270 + - enabled: 1 + path: Assets/Scenes/060_Deferred_GBuffer.unity + guid: f42c387ccdc6840159743027165e1b7c + - enabled: 1 + path: Assets/Scenes/060_Deferred_GBuffer_Alpha.unity + guid: e90c743b5f0d84d30bc98e6d5be68eca - enabled: 1 path: Assets/Scenes/066_Blending.unity guid: d27c51a5aecee4e0e9c29141a0819c8b From e3b2312d73e13cd0bceb41c7d55927de30357cfc Mon Sep 17 00:00:00 2001 From: Peter Bay Bastian Date: Wed, 30 Aug 2023 16:09:43 +0000 Subject: [PATCH 02/13] URP Forward+ Foveated Rendering Adds support for foveated rendering when using the Forward+ rendering path. We've taken the approach of keeping the tile data uniform, and then mapping the distorted UVs to linear UVs before sampling the tile data. [URP-1799](https://jira.unity3d.com/browse/URP-1799) --- .../API/FoveatedRendering_Metal.hlsl | 6 +-- .../ShaderLibrary/FoveatedRendering.hlsl | 19 ++++--- .../FoveatedRenderingKeywords.hlsl | 18 +++++++ .../FoveatedRenderingKeywords.hlsl.meta | 3 ++ .../ShaderGraph/Includes/ShaderPassDecal.hlsl | 9 ++-- .../Targets/UniversalDecalSubTarget.cs | 2 - .../ShaderGraph/Targets/UniversalTarget.cs | 14 ++--- .../Templates/URPDecal/PassDBuffer.template | 3 +- .../URPDecal/PassScreenSpace.template | 3 +- .../VFXGraph/Shaders/VFXPasses.template | 2 + .../Runtime/Passes/ColorGradingLutPass.cs | 2 + .../ShaderLibrary/Clustering.hlsl | 17 ++++++ .../ShaderLibrary/MotionVectorsCommon.hlsl | 54 ++++++++++--------- .../ShaderLibrary/ObjectMotionVectors.hlsl | 7 +-- .../ShaderLibrary/SSAO.hlsl | 24 ++++++--- .../Shaders/CameraMotionVectors.shader | 34 +++++++----- .../Shaders/ComplexLit.shader | 1 + .../Shaders/Lit.shader | 1 + .../Shaders/Nature/SpeedTree7.shader | 1 + .../Shaders/Nature/SpeedTree7Billboard.shader | 1 + .../Shaders/Nature/SpeedTree8.shader | 1 + .../Shaders/Particles/ParticlesLit.shader | 1 + .../Particles/ParticlesSimpleLit.shader | 1 + .../Shaders/PostProcessing/Bloom.shader | 14 +++-- .../Shaders/PostProcessing/UberPost.shader | 9 ++-- .../Shaders/SimpleLit.shader | 1 + .../Shaders/Terrain/TerrainDetailLit.shader | 1 + .../Shaders/Terrain/TerrainLit.shader | 1 + .../Shaders/Terrain/TerrainLitAdd.shader | 1 + .../Shaders/Terrain/TerrainLitBase.shader | 1 + .../Shaders/Terrain/WavingGrass.shader | 1 + .../Terrain/WavingGrassBillboard.shader | 1 + .../Utils/ScreenSpaceAmbientOcclusion.shader | 11 +++- .../Shaders/Utils/StencilDeferred.hlsl | 18 ++++--- .../Shaders/Utils/StencilDeferred.shader | 8 --- .../Shaders/XR/XRMirrorView.hlsl | 17 +++--- .../Shaders/XR/XRMirrorView.shader | 2 +- 37 files changed, 200 insertions(+), 110 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl create mode 100644 Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl b/Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl index 62130036b81..22e8f0fc04e 100644 --- a/Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl @@ -1,7 +1,7 @@ #ifndef UNITY_FOVEATED_RENDERING_METAL_INCLUDED #define UNITY_FOVEATED_RENDERING_METAL_INCLUDED -#if defined(SHADER_API_METAL) && defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) && !defined(UNITY_COMPILER_DXC) +#if !defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS)) // These are tokens that hlslcc is looking for in order // to inject variable rasterization rate MSL code. @@ -108,7 +108,7 @@ return uv * _ScreenSize.xy; } - + // Adapt old remap functions to their new name float2 RemapFoveatedRenderingResolve(float2 uv) { return RemapFoveatedRenderingLinearToNonUniform(uv); } float2 RemapFoveatedRenderingPrevFrameResolve(float2 uv) {return RemapFoveatedRenderingPrevFrameLinearToNonUniform(uv); } @@ -116,6 +116,6 @@ float2 RemapFoveatedRenderingPrevFrameDistort(float2 uv) { return RemapFoveatedRenderingPrevFrameNonUniformToLinear(uv); } int2 RemapFoveatedRenderingDistortCS(int2 positionCS, bool yflip) { return RemapFoveatedRenderingNonUniformToLinearCS(positionCS, yflip); } -#endif // SHADER_API_METAL && _FOVEATED_RENDERING_NON_UNIFORM_RASTER && !UNITY_COMPILER_DXC +#endif #endif // UNITY_FOVEATED_RENDERING_METAL_INCLUDED diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl index 1a98bb5c08f..6c4031107c6 100644 --- a/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl @@ -1,13 +1,18 @@ #ifndef UNITY_FOVEATED_RENDERING_INCLUDED #define UNITY_FOVEATED_RENDERING_INCLUDED -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) -# if defined(SHADER_API_PS5) -# include "Packages/com.unity.render-pipelines.ps5/ShaderLibrary/API/FoveatedRendering_PSSL.hlsl" -# endif -# if defined(SHADER_API_METAL) -# include "Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl" -# endif +#if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || \ + defined(SHADER_API_PS5) + +#define SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER 1 + +#if defined(SHADER_API_PS5) + #include "Packages/com.unity.render-pipelines.ps5/ShaderLibrary/API/FoveatedRendering_PSSL.hlsl" #endif +#if defined(SHADER_API_METAL) + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/API/FoveatedRendering_Metal.hlsl" +#endif + +#endif #endif // UNITY_FOVEATED_RENDERING_INCLUDED diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl new file mode 100644 index 00000000000..eb0d4625042 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl @@ -0,0 +1,18 @@ +#ifndef UNITY_FOVEATED_RENDERING_KEYWORDS_INCLUDED +#define UNITY_FOVEATED_RENDERING_KEYWORDS_INCLUDED + +#if (!defined(UNITY_COMPILER_DXC) && (defined(UNITY_PLATFORM_OSX) || defined(UNITY_PLATFORM_IOS))) || \ + defined(SHADER_API_PS5) + +#define SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER 1 + +// On Metal Foveated Rendering is currently not supported with DXC +#pragma warning (disable : 3568) // unknown pragma ignored + +#pragma never_use_dxc metal +#pragma dynamic_branch _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER + +#pragma warning (default : 3568) // restore unknown pragma ignored + +#endif +#endif // UNITY_FOVEATED_RENDERING_KEYWORDS_INCLUDED diff --git a/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl.meta b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl.meta new file mode 100644 index 00000000000..ba7efe2c969 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c32bc6ee3c5a47b5829b4db408c79d3b +timeCreated: 1688113951 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl index 587e7885997..7822eec0f6c 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPassDecal.hlsl @@ -55,9 +55,7 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/NormalReconstruction.hlsl" #endif -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" -#endif void MeshDecalsPositionZBias(inout Varyings input) { @@ -248,8 +246,11 @@ void Frag(PackedVaryings packedInput, float2 positionSS = input.positionCS.xy * _ScreenSize.zw; -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - positionSS = RemapFoveatedRenderingNonUniformToLinearCS(input.positionCS.xy, true) * _ScreenSize.zw; +#if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + positionSS = RemapFoveatedRenderingNonUniformToLinearCS(input.positionCS.xy, true) * _ScreenSize.zw; + } #endif #ifdef DECAL_PROJECTOR diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs index a54196840d4..45ab7c5e5b1 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalDecalSubTarget.cs @@ -974,7 +974,6 @@ static class Descriptors public static KeywordCollection DBufferProjector = new KeywordCollection { { CoreKeywordDescriptors.DBuffer }, - { CoreKeywordDescriptors.FoveatedRendering }, { Descriptors.DecalLayers }, }; @@ -1020,7 +1019,6 @@ static class Descriptors { CoreKeywordDescriptors.ShadowsSoftMedium }, { CoreKeywordDescriptors.ShadowsSoftHigh }, { CoreKeywordDescriptors.ForwardPlus }, - { CoreKeywordDescriptors.FoveatedRendering }, { CoreKeywordDescriptors.DebugDisplay }, { Descriptors.DecalsNormalBlend }, { Descriptors.DecalLayers }, diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs index 7260f8fbcd5..74cf739ed27 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -1663,6 +1663,8 @@ static class CoreIncludes const string kDBuffer = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"; const string kSelectionPickingPass = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/SelectionPickingPass.hlsl"; const string kLODCrossFade = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl"; + const string kFoveatedRenderingKeywords = "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"; + const string kFoveatedRendering = "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"; // Files that are included with #include_with_pragmas const string kDOTS = "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"; @@ -1677,6 +1679,8 @@ static class CoreIncludes { kLighting, IncludeLocation.Pregraph }, { kInput, IncludeLocation.Pregraph }, { kTextureStack, IncludeLocation.Pregraph }, // TODO: put this on a conditional + { kFoveatedRenderingKeywords, IncludeLocation.Pregraph, true }, + { kFoveatedRendering, IncludeLocation.Pregraph }, }; public static readonly IncludeCollection DOTSPregraph = new IncludeCollection @@ -2158,16 +2162,6 @@ static class CoreKeywordDescriptors stages = KeywordShaderStage.Fragment, }; - public static readonly KeywordDescriptor FoveatedRendering = new KeywordDescriptor() - { - displayName = "Foveated Rendering Non Uniform Raster", - referenceName = "_FOVEATED_RENDERING_NON_UNIFORM_RASTER", - type = KeywordType.Boolean, - definition = KeywordDefinition.MultiCompile, - scope = KeywordScope.Global, - stages = KeywordShaderStage.Fragment, - }; - public static readonly KeywordDescriptor SceneSelectionPass = new KeywordDescriptor() { displayName = "Scene Selection Pass", diff --git a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassDBuffer.template b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassDBuffer.template index b524a5d2377..ed90bd03231 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassDBuffer.template +++ b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassDBuffer.template @@ -27,13 +27,14 @@ // Keywords #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #pragma multi_compile _ _DECAL_LAYERS ${VFXIncludeRP("VFXDecalVaryings.template")} #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" struct ps_input { diff --git a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassScreenSpace.template b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassScreenSpace.template index e672bb3b204..efd75a08ca4 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassScreenSpace.template +++ b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/Templates/URPDecal/PassScreenSpace.template @@ -25,13 +25,14 @@ #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile _ _FORWARD_PLUS - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH #pragma multi_compile _ _DECAL_LAYERS ${VFXIncludeRP("VFXDecalVaryings.template")} #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" struct ps_input { diff --git a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template index c49e0e8892d..d590711f849 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template +++ b/Packages/com.unity.render-pipelines.universal/Editor/VFXGraph/Shaders/VFXPasses.template @@ -32,6 +32,7 @@ ${VFXBegin:VFXPassForwardLitAdditionalPragma} #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _LIGHT_LAYERS #pragma multi_compile _ _FORWARD_PLUS +#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" #pragma multi_compile_fog #pragma multi_compile _ DEBUG_DISPLAY @@ -59,6 +60,7 @@ ${VFXBegin:VFXShaderGraphFunctionsInclude} #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/EntityLighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" ${VFXEnd} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs index 19be2bf01d2..96e9ad850e1 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs @@ -107,8 +107,10 @@ public override void Execute(ScriptableRenderContext context, ref RenderingData m_PassData.lutBuilderHdr = m_LutBuilderHdr; m_PassData.allowColorGradingACESHDR = m_AllowColorGradingACESHDR; +#if ENABLE_VR && ENABLE_XR_MODULE if (renderingData.cameraData.xr.supportsFoveatedRendering) renderingData.commandBuffer.SetFoveatedRenderingMode(FoveatedRenderingMode.Disabled); +#endif CoreUtils.SetRenderTarget(renderingData.commandBuffer, m_InternalLut, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, ClearFlag.None, Color.clear); ExecutePass(CommandBufferHelpers.GetRasterCommandBuffer(renderingData.commandBuffer), m_PassData, ref renderingData, m_InternalLut); diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Clustering.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Clustering.hlsl index 0cff205c7a0..04727089ccb 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Clustering.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Clustering.hlsl @@ -4,6 +4,8 @@ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" #if USE_FORWARD_PLUS +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + // Debug switches for disabling parts of the algorithm. Not implemented for mobile. #define URP_FP_DISABLE_ZBINNING 0 @@ -24,6 +26,21 @@ ClusterIterator ClusterInit(float2 normalizedScreenSpaceUV, float3 positionWS, i { ClusterIterator state = (ClusterIterator)0; +#if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { +#if UNITY_UV_STARTS_AT_TOP + // RemapFoveatedRenderingNonUniformToLinear expects the UV coordinate to be non-flipped, so we un-flip it before + // the call, and then flip it back afterwards. + normalizedScreenSpaceUV.y = 1.0 - normalizedScreenSpaceUV.y; +#endif + normalizedScreenSpaceUV = RemapFoveatedRenderingNonUniformToLinear(normalizedScreenSpaceUV); +#if UNITY_UV_STARTS_AT_TOP + normalizedScreenSpaceUV.y = 1.0 - normalizedScreenSpaceUV.y; +#endif + } +#endif // SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER + uint2 tileId = uint2(normalizedScreenSpaceUV * URP_FP_TILE_SCALE); state.tileOffset = tileId.y * URP_FP_TILE_COUNT_X + tileId.x; #if defined(USING_STEREO_MATRICES) diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl index 748fa9689aa..430441169da 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl @@ -1,6 +1,8 @@ #ifndef UNIVERSAL_PIPELINE_MOTIONVECTORSCOMMON_INCLUDED #define UNIVERSAL_PIPELINE_MOTIONVECTORSCOMMON_INCLUDED +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + // This is required to avoid artifacts ("gaps" in the _MotionVectorTexture) on some platform void ApplyMotionVectorZBias(inout float4 positionCS) { @@ -11,10 +13,6 @@ void ApplyMotionVectorZBias(inout float4 positionCS) #endif } -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" -#endif - float2 CalcNdcMotionVectorFromCsPositions(float4 posCS, float4 prevPosCS) { // Note: unity_MotionVectorsParams.y is 0 is forceNoMotion is enabled @@ -27,28 +25,34 @@ float2 CalcNdcMotionVectorFromCsPositions(float4 posCS, float4 prevPosCS) float2 posNDC = posCS.xy * rcp(posCS.w); float2 prevPosNDC = prevPosCS.xy * rcp(prevPosCS.w); - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - // Convert velocity from NDC space (-1..1) to screen UV 0..1 space since FoveatedRendering remap needs that range. - float2 posUV = RemapFoveatedRenderingResolve(posNDC * 0.5 + 0.5); - float2 prevPosUV = RemapFoveatedRenderingPrevFrameLinearToNonUniform(prevPosNDC * 0.5 + 0.5); - - // Calculate forward velocity - float2 velocity = (posUV - prevPosUV); - #if UNITY_UV_STARTS_AT_TOP - velocity.y = -velocity.y; - #endif - #else - // Calculate forward velocity - float2 velocity = (posNDC.xy - prevPosNDC.xy); - #if UNITY_UV_STARTS_AT_TOP - velocity.y = -velocity.y; - #endif - - // Convert velocity from NDC space (-1..1) to UV 0..1 space - // Note: It doesn't mean we don't have negative values, we store negative or positive offset in UV space. - // Note: ((posNDC * 0.5 + 0.5) - (prevPosNDC * 0.5 + 0.5)) = (velocity * 0.5) - velocity.xy *= 0.5; + float2 velocity; + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + // Convert velocity from NDC space (-1..1) to screen UV 0..1 space since FoveatedRendering remap needs that range. + float2 posUV = RemapFoveatedRenderingResolve(posNDC * 0.5 + 0.5); + float2 prevPosUV = RemapFoveatedRenderingPrevFrameLinearToNonUniform(prevPosNDC * 0.5 + 0.5); + + // Calculate forward velocity + velocity = (posUV - prevPosUV); + #if UNITY_UV_STARTS_AT_TOP + velocity.y = -velocity.y; + #endif + } + else #endif + { + // Calculate forward velocity + velocity = (posNDC.xy - prevPosNDC.xy); + #if UNITY_UV_STARTS_AT_TOP + velocity.y = -velocity.y; + #endif + + // Convert velocity from NDC space (-1..1) to UV 0..1 space + // Note: It doesn't mean we don't have negative values, we store negative or positive offset in UV space. + // Note: ((posNDC * 0.5 + 0.5) - (prevPosNDC * 0.5 + 0.5)) = (velocity * 0.5) + velocity.xy *= 0.5; + } return velocity; } diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl index f144854d5c3..2b8a772d3a5 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl @@ -11,12 +11,9 @@ #pragma multi_compile_instancing #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" -//-------------------------------------- +//------------------------------------- // Other pragmas -#pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER -// Marc-André Loyer: Metal's Foveated Rendering code relies on shader compiler changes to be able to set the needed data -// for "non-uniform <==> Linear rasterizer" UV-space transformations, but this is not currently supported with DXC. -#pragma never_use_dxc metal +#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- // Includes diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl index c1232cd3b41..df73a1642d8 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl @@ -234,8 +234,11 @@ float SampleAndGetLinearEyeDepth(float2 uv) // This returns a vector in world unit (not a position), from camera to the given point described by uv screen coordinate and depth (in absolute world unit). half3 ReconstructViewPos(float2 uv, float linearDepth) { - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { uv = RemapFoveatedRenderingNonUniformToLinear(uv); + } #endif // Screen is y-inverted. @@ -354,11 +357,17 @@ half4 SSAO(Varyings input) : SV_Target if (halfLinearDepth_o > FALLOFF) return PackAONormal(HALF_ZERO, HALF_ZERO); - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - float2 pixelDensity = RemapFoveatedRenderingDensity(RemapFoveatedRenderingNonUniformToLinear(uv)); - #else - float2 pixelDensity = float2(1.0f, 1.0f); + float2 pixelDensity; + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + pixelDensity = RemapFoveatedRenderingDensity(RemapFoveatedRenderingNonUniformToLinear(uv)); + } + else #endif + { + pixelDensity = float2(1.0f, 1.0f); + } // Normal for this fragment half3 normal_o = SampleNormal(uv, linearDepth_o, pixelDensity); @@ -395,8 +404,11 @@ half4 SSAO(Varyings input) : SV_Target half2 uv_s1_01 = saturate(half2(spos_s1 * rcp(zDist) + HALF_ONE) * HALF_HALF); #endif - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { uv_s1_01 = RemapFoveatedRenderingLinearToNonUniform(uv_s1_01); + } #endif // Relative depth of the sample point diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/CameraMotionVectors.shader b/Packages/com.unity.render-pipelines.universal/Shaders/CameraMotionVectors.shader index f0403a0adcd..a502240305b 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/CameraMotionVectors.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/CameraMotionVectors.shader @@ -10,9 +10,6 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" ZWrite On HLSLPROGRAM - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER - #pragma never_use_dxc metal - #pragma target 3.5 #pragma vertex vert @@ -23,9 +20,8 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityInput.hlsl" - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" - #endif + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" // ------------------------------------- // Structs @@ -69,9 +65,12 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" depth = lerp(UNITY_NEAR_CLIP_VALUE, 1, SampleSceneDepth(uv).x); #endif - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - // Get the UVs from non-unifrom space to linear space to determine the right world-space position - uv = RemapFoveatedRenderingNonUniformToLinear(uv); + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + // Get the UVs from non-unifrom space to linear space to determine the right world-space position + uv = RemapFoveatedRenderingNonUniformToLinear(uv); + } #endif // Reconstruct world position @@ -86,7 +85,10 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" float2 posNDC = posCS.xy * rcp(posCS.w); float2 prevPosNDC = prevPosCS.xy * rcp(prevPosCS.w); - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + float2 velocity; + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { // Convert velocity from NDC space (-1..1) to screen UV 0..1 space since FoveatedRendering remap needs that range. // Also return both position in non-uniform UV space to get the right velocity vector @@ -94,13 +96,16 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" float2 prevPosUV = RemapFoveatedRenderingPrevFrameLinearToNonUniform(prevPosNDC * 0.5f + 0.5f); // Calculate forward velocity - float2 velocity = (posUV - prevPosUV); + velocity = (posUV - prevPosUV); #if UNITY_UV_STARTS_AT_TOP velocity.y = -velocity.y; #endif - #else + } + else + #endif + { // Calculate forward velocity - float2 velocity = (posNDC - prevPosNDC); + velocity = (posNDC - prevPosNDC); // TODO: test that velocity.y is correct #if UNITY_UV_STARTS_AT_TOP @@ -111,7 +116,8 @@ Shader "Hidden/Universal Render Pipeline/CameraMotionVectors" // Note: It doesn't mean we don't have negative values, we store negative or positive offset in the UV space. // Note: ((posNDC * 0.5 + 0.5) - (prevPosNDC * 0.5 + 0.5)) = (velocity * 0.5) velocity.xy *= 0.5; - #endif + } + return float4(velocity, 0, 0); } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader index c34b2d311b7..e461bc0735b 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/ComplexLit.shader @@ -147,6 +147,7 @@ Shader "Universal Render Pipeline/Complex Lit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Lit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Lit.shader index 9388c656c72..0ed412fe08e 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Lit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Lit.shader @@ -146,6 +146,7 @@ Shader "Universal Render Pipeline/Lit" #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _LIGHT_LAYERS #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader index fac4db52fd2..b2fbe43dfff 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7.shader @@ -49,6 +49,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree7" #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _LIGHT_LAYERS #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" #pragma multi_compile_fog diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Billboard.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Billboard.shader index 8847d7c7df5..c406ebf5dc2 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Billboard.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Billboard.shader @@ -38,6 +38,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree7 Billboard" #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #pragma multi_compile __ BILLBOARD_FACE_CAMERA_POS #pragma multi_compile __ LOD_FADE_CROSSFADE #pragma multi_compile_fragment _ _LIGHT_COOKIES diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader index 9b761214a9a..6effb83ba1b 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8.shader @@ -65,6 +65,7 @@ Shader "Universal Render Pipeline/Nature/SpeedTree8" #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" #pragma multi_compile_fog diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesLit.shader index 2e187d3034e..ba36b999538 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesLit.shader @@ -143,6 +143,7 @@ Shader "Universal Render Pipeline/Particles/Lit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" // ------------------------------------- diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLit.shader index 35c20edee7c..3b74e3630e6 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLit.shader @@ -144,6 +144,7 @@ Shader "Universal Render Pipeline/Particles/Simple Lit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" // ------------------------------------- diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Bloom.shader b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Bloom.shader index 4fd17d2e4fa..1c5c1eb43b1 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Bloom.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Bloom.shader @@ -53,8 +53,11 @@ Shader "Hidden/Universal Render Pipeline/Bloom" UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); float2 uv = UnityStereoTransformScreenSpaceTex(input.texcoord); -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - uv = RemapFoveatedRenderingLinearToNonUniform(uv); +#if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + uv = RemapFoveatedRenderingLinearToNonUniform(uv); + } #endif #if _BLOOM_HQ @@ -181,9 +184,7 @@ Shader "Hidden/Universal Render Pipeline/Bloom" #pragma vertex Vert #pragma fragment FragPrefilter #pragma multi_compile_local _ _BLOOM_HQ - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER - // Foveated rendering currently not supported in dxc on metal - #pragma never_use_dxc metal + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" ENDHLSL } @@ -194,6 +195,7 @@ Shader "Hidden/Universal Render Pipeline/Bloom" HLSLPROGRAM #pragma vertex Vert #pragma fragment FragBlurH + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" ENDHLSL } @@ -204,6 +206,7 @@ Shader "Hidden/Universal Render Pipeline/Bloom" HLSLPROGRAM #pragma vertex Vert #pragma fragment FragBlurV + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" ENDHLSL } @@ -215,6 +218,7 @@ Shader "Hidden/Universal Render Pipeline/Bloom" #pragma vertex Vert #pragma fragment FragUpsample #pragma multi_compile_local _ _BLOOM_HQ + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" ENDHLSL } } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader index b9dcb4b8d07..d299ed5c870 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader @@ -9,9 +9,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #pragma multi_compile_local_fragment _ _DITHERING #pragma multi_compile_local_fragment _ _GAMMA_20 _LINEAR_TO_SRGB_CONVERSION #pragma multi_compile_local_fragment _ _USE_FAST_SRGB_LINEAR_CONVERSION - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER - // Foveated rendering currently not supported in dxc on metal - #pragma never_use_dxc metal + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile_fragment _ SCREEN_COORD_OVERRIDE #pragma multi_compile_local_fragment _ HDR_INPUT HDR_ENCODING @@ -182,8 +180,11 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #if defined(BLOOM) { float2 uvBloom = ClampUVForBilinear(uvDistorted, _BloomTexture_TexelSize.xy); - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { uvBloom = RemapFoveatedRenderingNonUniformToLinear(uvBloom); + } #endif #if _BLOOM_HQ diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader index 67e316878a7..150743f2bdb 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/SimpleLit.shader @@ -112,6 +112,7 @@ Shader "Universal Render Pipeline/Simple Lit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLit.shader index 714eab5abb4..4fba765d8b6 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLit.shader @@ -28,6 +28,7 @@ Shader "Hidden/TerrainEngine/Details/UniversalPipeline/Vertexlit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- // Unity defined keywords diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader index 754ccde7ee5..eab45adba74 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLit.shader @@ -77,6 +77,7 @@ Shader "Universal Render Pipeline/Terrain/Lit" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" // ------------------------------------- diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader index 7f65be3839e..9b69b641c2f 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitAdd.shader @@ -70,6 +70,7 @@ Shader "Hidden/Universal Render Pipeline/Terrain/Lit (Add Pass)" #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- // Unity defined keywords diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader index becdfb9ba1c..29bc68b4fd3 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitBase.shader @@ -49,6 +49,7 @@ Shader "Hidden/Universal Render Pipeline/Terrain/Lit (Base Pass)" #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- // Unity defined keywords diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrass.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrass.shader index 13620543e29..7d1565706e7 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrass.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrass.shader @@ -33,6 +33,7 @@ Shader "Hidden/TerrainEngine/Details/UniversalPipeline/WavingDoublePass" #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _LIGHT_COOKIES + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" // ------------------------------------- diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassBillboard.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassBillboard.shader index 32201af0c4e..5850a14e541 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassBillboard.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassBillboard.shader @@ -30,6 +30,7 @@ Shader "Hidden/TerrainEngine/Details/UniversalPipeline/BillboardWavingDoublePass #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING #pragma multi_compile _ SHADOWS_SHADOWMASK #pragma multi_compile _ _FORWARD_PLUS + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- // Unity defined keywords diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceAmbientOcclusion.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceAmbientOcclusion.shader index e5e72a094c2..93a7544a73c 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceAmbientOcclusion.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceAmbientOcclusion.shader @@ -38,8 +38,8 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" #pragma multi_compile_local_fragment _SOURCE_DEPTH_LOW _SOURCE_DEPTH_MEDIUM _SOURCE_DEPTH_HIGH _SOURCE_DEPTH_NORMALS #pragma multi_compile_local_fragment _ _ORTHOGRAPHIC #pragma multi_compile_local_fragment _SAMPLE_COUNT_LOW _SAMPLE_COUNT_MEDIUM _SAMPLE_COUNT_HIGH - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -56,6 +56,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment HorizontalBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -68,6 +69,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment VerticalBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -80,6 +82,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment FinalBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -99,6 +102,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" #pragma vertex Vert #pragma fragment FragBilateralAfterOpaque + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" half4 FragBilateralAfterOpaque(Varyings input) : SV_Target @@ -122,6 +126,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment HorizontalGaussianBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -134,6 +139,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment VerticalGaussianBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -153,6 +159,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" #pragma vertex Vert #pragma fragment FragGaussianAfterOpaque + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" half4 FragGaussianAfterOpaque(Varyings input) : SV_Target @@ -176,6 +183,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" HLSLPROGRAM #pragma vertex Vert #pragma fragment KawaseBlur + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" ENDHLSL } @@ -195,6 +203,7 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceAmbientOcclusion" #pragma vertex Vert #pragma fragment FragKawaseAfterOpaque + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SSAO.hlsl" half4 FragKawaseAfterOpaque(Varyings input) : SV_Target diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl index f5d7a1c6e50..9fb358e01fe 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.hlsl @@ -5,7 +5,7 @@ #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Deferred.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DynamicScaling.hlsl" -#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" +#include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" struct Attributes { @@ -239,9 +239,12 @@ half4 DeferredShading(Varyings input) : SV_Target float2 screen_uv = (input.screenUV.xy / input.screenUV.z); -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - float2 undistorted_screen_uv = screen_uv; - screen_uv = input.positionCS.xy * _ScreenSize.zw; +#if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + float2 undistorted_screen_uv = screen_uv; + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + screen_uv = input.positionCS.xy * _ScreenSize.zw; + } #endif half4 shadowMask = 1.0; @@ -278,8 +281,11 @@ half4 DeferredShading(Varyings input) : SV_Target return half4(color, alpha); // Cannot discard because stencil must be updated. #endif - #if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - input.positionCS.xy = undistorted_screen_uv * _ScreenSize.xy; + #if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + input.positionCS.xy = undistorted_screen_uv * _ScreenSize.xy; + } #endif #if defined(USING_STEREO_MATRICES) diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader index 118683cc7d3..cc4f7226a01 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader @@ -108,7 +108,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" HLSLPROGRAM #pragma target 4.5 - #pragma never_use_dxc metal // Foveated rendering currently not supported in dxc on metal // Deferred Rendering Path does not support the OpenGL-based graphics API: // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. @@ -135,7 +134,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER #pragma multi_compile _ _LIGHT_LAYERS // ------------------------------------- @@ -173,7 +171,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" HLSLPROGRAM #pragma target 4.5 - #pragma never_use_dxc metal // Foveated rendering currently not supported in dxc on metal // Deferred Rendering Path does not support the OpenGL-based graphics API: // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. @@ -200,7 +197,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER #pragma multi_compile _ _LIGHT_LAYERS // ------------------------------------- @@ -237,7 +233,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" HLSLPROGRAM #pragma target 4.5 - #pragma never_use_dxc metal // Foveated rendering currently not supported in dxc on metal // Deferred Rendering Path does not support the OpenGL-based graphics API: // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. @@ -267,7 +262,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER #pragma multi_compile _ _LIGHT_LAYERS // ------------------------------------- @@ -304,7 +298,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" HLSLPROGRAM #pragma target 4.5 - #pragma never_use_dxc metal // Foveated rendering currently not supported in dxc on metal // Deferred Rendering Path does not support the OpenGL-based graphics API: // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0. @@ -335,7 +328,6 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER // ------------------------------------- // Includes diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.hlsl index dcc3ccff4d0..28a2bc9c7bb 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.hlsl @@ -52,13 +52,16 @@ float4 FragBilinear(Varyings input) : SV_Target float4 outColor; float2 uv = input.texcoord.xy; -#if defined(_FOVEATED_RENDERING_NON_UNIFORM_RASTER) - // We use stereo eye index to sample the correct slice when resolving foveated targets. - // Since MirrorView is not a stereo shader we have to populate unity_StereoEyeIndex ourselves. - unity_StereoEyeIndex = _SourceTexArraySlice; - - uv = RemapFoveatedRenderingLinearToNonUniform(input.texcoord.xy); -#endif // _FOVEATED_RENDERING_NON_UNIFORM_RASTER +#if defined(SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + if (_FOVEATED_RENDERING_NON_UNIFORM_RASTER) + { + // We use stereo eye index to sample the correct slice when resolving foveated targets. + // Since MirrorView is not a stereo shader we have to populate unity_StereoEyeIndex ourselves. + unity_StereoEyeIndex = _SourceTexArraySlice; + + uv = RemapFoveatedRenderingLinearToNonUniform(input.texcoord.xy); + } +#endif // SUPPORTS_FOVEATED_RENDERING_NON_UNIFORM_RASTER #if SRC_TEXTURE2D_X_ARRAY outColor = SAMPLE_TEXTURE2D_ARRAY(_SourceTex, sampler_LinearClamp, uv, _SourceTexArraySlice); diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.shader b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.shader index e93869bdeb4..00d260510a9 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.shader @@ -16,7 +16,6 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMirrorView" HLSLPROGRAM #pragma vertex VertQuad #pragma fragment FragBilinear - #pragma multi_compile_fragment _ _FOVEATED_RENDERING_NON_UNIFORM_RASTER #pragma multi_compile_local_fragment _ HDR_COLORSPACE_CONVERSION_AND_ENCODING #pragma multi_compile_fragment _ DISABLE_TEXTURE2D_X_ARRAY @@ -25,6 +24,7 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMirrorView" #else #define SRC_TEXTURE2D_X_ARRAY 1 #endif + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMirrorView.hlsl" ENDHLSL } From e917ebaa86f17c8cc0c320c082fae3e2f18b551a Mon Sep 17 00:00:00 2001 From: Soufiane Khiat Date: Wed, 30 Aug 2023 16:09:46 +0000 Subject: [PATCH 03/13] Fix LensFlareSRP disable with culling mask and the game objects layer Replicate: https://github.com/Unity-Technologies/Graphics/pull/7932 And add the disable for Rendering. --- .../PostProcessing/LensFlareCommonSRP.cs | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareCommonSRP.cs b/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareCommonSRP.cs index dc5335452b3..26bbc84584a 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareCommonSRP.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareCommonSRP.cs @@ -373,6 +373,21 @@ static public float ShapeAttenuationAreaDiscLight(Vector3 forward, Vector3 wo) return ShapeAttenuateForwardLight(forward, wo); } + static bool IsLensFlareSRPHidden(Camera cam, LensFlareComponentSRP comp, LensFlareDataSRP data) + { + if (!comp.enabled || + !comp.gameObject.activeSelf || + !comp.gameObject.activeInHierarchy || + data == null || + data.elements == null || + data.elements.Length == 0 || + comp.intensity <= 0.0f || + ((cam.cullingMask & (1 << comp.gameObject.layer)) == 0)) + return true; + + return false; + } + /// /// Compute internal parameters needed to render single flare /// @@ -502,15 +517,9 @@ static public bool IsCloudLayerOpacityNeeded(Camera cam) LensFlareComponentSRP comp = info.comp; LensFlareDataSRP data = comp.lensFlareData; - if (!comp.enabled || - !comp.gameObject.activeSelf || - !comp.gameObject.activeInHierarchy || - data == null || - data.elements == null || - data.elements.Length == 0 || + if (IsLensFlareSRPHidden(cam, comp, data) || !comp.useOcclusion || - (comp.useOcclusion && comp.sampleCount == 0) || - comp.intensity <= 0.0f) + (comp.useOcclusion && comp.sampleCount == 0)) continue; if (comp.useBackgroundCloudOcclusion) @@ -729,13 +738,7 @@ static public void ComputeOcclusion(Material lensFlareShader, Camera cam, LensFlareComponentSRP comp = info.comp; LensFlareDataSRP data = comp.lensFlareData; - if (!comp.enabled || - !comp.gameObject.activeSelf || - !comp.gameObject.activeInHierarchy || - data == null || - data.elements == null || - data.elements.Length == 0 || - comp.intensity <= 0.0f || + if (IsLensFlareSRPHidden(cam, comp, data) || !comp.useOcclusion || (comp.useOcclusion && comp.sampleCount == 0)) continue; @@ -1026,13 +1029,7 @@ static public void DoLensFlareDataDrivenCommon(Material lensFlareShader, Camera LensFlareComponentSRP comp = info.comp; LensFlareDataSRP data = comp.lensFlareData; - if (!comp.enabled || - !comp.gameObject.activeSelf || - !comp.gameObject.activeInHierarchy || - data == null || - data.elements == null || - data.elements.Length == 0 || - comp.intensity <= 0.0f) + if (IsLensFlareSRPHidden(cam, comp, data)) continue; #if UNITY_EDITOR From 2b274d105a83af21e1fbf5f453febcb7e65a64b6 Mon Sep 17 00:00:00 2001 From: Adrien de Tocqueville Date: Wed, 30 Aug 2023 16:09:53 +0000 Subject: [PATCH 04/13] [APV] Fix virtual offset requiring physics JIRA: https://jira.unity3d.com/browse/HDRP-3019 Virtual offset is very slow to compute because it relies on physics raycasts. Additionally it's not really precise because it assumes all objects are convex. This PR replaces that by the usage of the light transport team package allowing to have a compute fallback for raytracing. Virtual offset computation is now much faster (see below) and has more accurate results as tracing is done agains individual triangles Note: you have to add a reference to the light transport package in the manifest.json of your project "com.unity.rendering.light-transport": "file:C:/UNITY/trunk/Packages/com.unity.rendering.light-transport" --- .../ProbeGIBaking.VirtualOffset.cs | 849 ++++++------------ .../Lighting/ProbeVolume/ProbeGIBaking.cs | 106 +-- .../ProbeVolumeBakingProcessSettingsDrawer.cs | 3 - .../ProbeVolume/ProbeVolumeBakingSetEditor.cs | 8 +- .../ProbeVolume/ProbeVolumeLightingTab.cs | 9 +- .../ProbeVolume/ProbeVolumeUI.Drawer.cs | 9 - .../Lighting/ProbeVolume/VirtualOffset.meta | 8 + .../VirtualOffset/TraceVirtualOffset.compute | 24 + .../TraceVirtualOffset.compute.meta | 7 + .../VirtualOffset/TraceVirtualOffset.hlsl | 112 +++ .../TraceVirtualOffset.hlsl.meta | 7 + .../VirtualOffset/TraceVirtualOffset.raytrace | 22 + .../TraceVirtualOffset.raytrace.meta | 7 + .../Unity.RenderPipelines.Core.Editor.asmdef | 3 +- .../ProbeVolume/ProbeReferenceVolume.cs | 34 +- .../ProbeVolumeBakingProcessSettings.cs | 2 - .../package.json | 3 +- .../Documentation~/probevolumes-settings.md | 4 - .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../HDRP_DXR_Tests/Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../HDRP_RuntimeTests/Packages/manifest.json | 1 + .../Scenes/2x_Lighting/2120_APV_Baking.unity | 154 +++- .../2x_Lighting/2120_APV_Baking/Default.asset | 36 +- .../2120_APV_Baking/LightingData.asset | Bin 18816 -> 255640 bytes .../HDRP_Tests/Packages/manifest.json | 2 +- .../MultipleSRP_Tests/Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../SRP_SmokeTest/Packages/manifest.json | 1 + .../ShaderGraph/Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + .../Packages/manifest.json | 1 + 43 files changed, 689 insertions(+), 741 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace.meta diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs index b6eb6c330ac..e4223169ebb 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs @@ -1,157 +1,323 @@ -#define USE_JOBS -#if HAS_BURST -#define USE_BURST -#endif -//#define VERBOSE - +using System; using System.Collections.Generic; +using System.Runtime.InteropServices; using UnityEditor; - -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using Unity.Jobs; -#if USE_BURST -using Unity.Burst; -#endif +using UnityEngine.Rendering.UnifiedRayTracing; namespace UnityEngine.Rendering { partial class ProbeGIBaking { - // limit memory usage to ~200 MB (run multiple batches to keep below limit) - const int kMaxMemoryUsage = 200 * 1024 * 1024; + static int k_MaxProbeCountPerBatch = 65535; - const int kMinCommandsPerJob = 512; - const int kRayDirectionsPerPosition = 3 * 3 * 3 - 1; + static RayTracingContext m_RayTracingContext; + static IRayTracingAccelStruct m_RayTracingAccelerationStructure; + static IRayTracingShader m_RayTracingShader; - static List s_AddedOccluders; - static List s_ExcludedColliders; - static List s_ExcludedRigidBodies; + static int _Probes, _Offsets; - static void ApplyVirtualOffsets(Vector3[] positions, out Vector3[] offsets) + static void BuildAccelerationStructure(GIContributors? contribs, int mask) { - var cellToVolumes = GetTouchupsPerCell(out bool hasAppliers); + var contributors = contribs.HasValue ? contribs.Value : GIContributors.Find(GIContributors.ContributorFilter.All); - var voSettings = m_BakingSet.settings.virtualOffsetSettings; - if (!voSettings.useVirtualOffset) + foreach (var renderer in contributors.renderers) { - offsets = null; - return; - } - - ModifyPhysicsComponentsForBaking(); + int layerMask = 1 << renderer.component.gameObject.layer; + if ((layerMask & mask) == 0) + continue; - var queriesHitBackBefore = Physics.queriesHitBackfaces; - try - { - if (!queriesHitBackBefore) - Physics.queriesHitBackfaces = true; + var mesh = renderer.component.GetComponent().sharedMesh; + if (mesh == null) + continue; - AddOccluders(); - DoApplyVirtualOffsets(positions, out offsets, voSettings, cellToVolumes); + int subMeshCount = mesh.subMeshCount; + for (int i = 0; i < subMeshCount; ++i) + { + m_RayTracingAccelerationStructure.AddInstance(new MeshInstanceDesc(mesh, i) + { + localToWorldMatrix = renderer.component.transform.localToWorldMatrix, + enableTriangleCulling = false + }); + } } - finally + + foreach (var terrain in contributors.terrains) { - if (!queriesHitBackBefore) - Physics.queriesHitBackfaces = false; - - // We need to restore even if we are going to modify again because removing colliders from a volume component might lead to changes - // in rendering while baking is in process and this is undesirable. If we re-enable now the enabling/disabling all happen in a single frame. - RestorePhysicsComponentsAfterBaking(); - // We cleanup occluders here in case bake is cancelled by the user. We have to add them again later when the validity masks are processed. - CleanupOccluders(); + int layerMask = 1 << terrain.component.gameObject.layer; + if ((layerMask & mask) == 0) + continue; + + m_RayTracingAccelerationStructure.AddTerrain(new TerrainDesc(terrain.component) + { + localToWorldMatrix = terrain.component.transform.localToWorldMatrix, + enableTriangleCulling = false + }); } } - static void GeneratePhysicsComponentToModList() + static void CreateRayTracingResources() { - s_ExcludedColliders = new List(); - s_ExcludedRigidBodies = new List(); + if (m_RayTracingContext != null) + return; + + var backend = RayTracingContext.IsBackendSupported(RayTracingBackend.Hardware) ? RayTracingBackend.Compute : RayTracingBackend.Compute; + + var resources = ScriptableObject.CreateInstance(); + ResourceReloader.ReloadAllNullIn(resources, "Packages/com.unity.rendering.light-transport"); + Func fileLoader = (filename, type) => AssetDatabase.LoadAssetAtPath("Packages/com.unity.render-pipelines.core/" + filename, type); + + m_RayTracingContext = new RayTracingContext(backend, resources); + m_RayTracingShader = m_RayTracingContext.CreateRayTracingShader("Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset", fileLoader); + m_RayTracingAccelerationStructure = m_RayTracingContext.CreateAccelerationStructure(new AccelerationStructureOptions()); - // Scene may contain unwanted colliders (like Volumes for example) - // So we disable any collider not attached to a MeshRenderer before doing the baking. Otherwise it will mess up with virtual offset and validity. - var colliderObjects = Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.InstanceID); - foreach (var collider in colliderObjects) + _Probes = Shader.PropertyToID("_Probes"); + _Offsets = Shader.PropertyToID("_Offsets"); + } + + // Duplicated in HLSL + struct ProbeData + { + public Vector3 position; + public float originBias; + public float tMax; + public float geometryBias; + public int probeIndex; + internal float _; + }; + + static void ApplyVirtualOffsets(GIContributors? contributors, Vector3[] positions, out Vector3[] offsets) + { + var voSettings = m_BakingSet.settings.virtualOffsetSettings; + if (!voSettings.useVirtualOffset) { - if (collider.enabled && (!GIContributors.ContributesGI(collider.gameObject) || !collider.TryGetComponent(out var _))) - s_ExcludedColliders.Add(collider); + offsets = null; + return; } - // Because we need to trigger physics update to update the physics search tree when adding new occluders - // rigid bodies might end up triggering the simulation, which is something we do not want. Therefore we force - // them to be kinematic and therefore blocking the forces for being applied. - var rigidbodies = Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.InstanceID); - foreach (var rigidBody in rigidbodies) + var cellToVolumes = GetTouchupsPerCell(out bool hasAppliers); + offsets = new Vector3[positions.Length]; + + var scaleForSearchDist = voSettings.searchMultiplier; + if (scaleForSearchDist == 0.0f) { - if (!rigidBody.isKinematic) - s_ExcludedRigidBodies.Add(rigidBody); + if (hasAppliers) + DoApplyVirtualOffsetsFromAdjustmentVolumes(positions, offsets, cellToVolumes); + return; } - } + var computeBufferTarget = GraphicsBuffer.Target.CopyDestination | GraphicsBuffer.Target.CopySource + | GraphicsBuffer.Target.Structured | GraphicsBuffer.Target.Raw; + + // Allocate shared data + CreateRayTracingResources(); + BuildAccelerationStructure(contributors, voSettings.collisionMask); + + var cmd = new CommandBuffer(); + var probeData = new ProbeData[k_MaxProbeCountPerBatch]; + var batchResult = new Vector3[k_MaxProbeCountPerBatch]; + using var probeBuffer = new GraphicsBuffer(computeBufferTarget, k_MaxProbeCountPerBatch, Marshal.SizeOf()); + using var offsetBuffer = new GraphicsBuffer(computeBufferTarget, k_MaxProbeCountPerBatch, Marshal.SizeOf()); + using var scratchBuffer = RayTracingHelper.CreateScratchBufferForBuildAndDispatch(m_RayTracingAccelerationStructure, m_RayTracingShader, + (uint)k_MaxProbeCountPerBatch, 1, 1); + + // Setup RT structure + m_RayTracingAccelerationStructure.Build(cmd, scratchBuffer); + m_RayTracingShader.SetAccelerationStructure(cmd, "_AccelStruct", m_RayTracingAccelerationStructure); + m_RayTracingShader.SetBufferParam(cmd, _Probes, probeBuffer); + m_RayTracingShader.SetBufferParam(cmd, _Offsets, offsetBuffer); + + // Run virtual offset in batches + int batchPosIdx = 0; + float cellSize = m_ProfileInfo.cellSizeInMeters; + while (batchPosIdx < positions.Length) + { + // Prepare batch + int probeCountInBatch = 0; + var batchPosStart = batchPosIdx; + do + { + float rayOriginBias = voSettings.rayOriginBias; + float geometryBias = voSettings.outOfGeoOffset; - static void ModifyPhysicsComponentsForBaking() - { - foreach (var collider in s_ExcludedColliders) - collider.enabled = false; + int subdivLevel = m_BakingBatch.GetSubdivLevelAt(positions[batchPosIdx]); + var brickSize = ProbeReferenceVolume.CellSize(subdivLevel); + var searchDistance = (brickSize * m_ProfileInfo.minBrickSize) / ProbeBrickPool.kBrickCellCount; + var distanceSearch = scaleForSearchDist * searchDistance; + + int cellIndex = PosToIndex(Vector3Int.FloorToInt(positions[batchPosIdx] / cellSize)); + if (cellToVolumes.TryGetValue(cellIndex, out var volumes)) + { + bool adjusted = false; + foreach (var (touchup, obb, center, offset) in volumes.appliers) + { + if (touchup.ContainsPoint(obb, center, positions[batchPosIdx])) + { + positions[batchPosIdx] += offset; + offsets[batchPosIdx] = offset; + adjusted = true; + break; + } + } - foreach (var rigidBody in s_ExcludedRigidBodies) - rigidBody.isKinematic = true; + if (adjusted) + continue; + + foreach (var (touchup, obb, center) in volumes.overriders) + { + if (touchup.ContainsPoint(obb, center, positions[batchPosIdx])) + { + rayOriginBias = touchup.rayOriginBias; + geometryBias = touchup.geometryBias; + break; + } + } + } + + probeData[probeCountInBatch++] = new ProbeData + { + position = positions[batchPosIdx], + originBias = rayOriginBias, + tMax = distanceSearch, + geometryBias = geometryBias, + probeIndex = batchPosIdx, + }; + } + while (++batchPosIdx < positions.Length && probeCountInBatch < k_MaxProbeCountPerBatch); + + // Execute job + cmd.SetBufferData(probeBuffer, probeData); + m_RayTracingShader.Dispatch(cmd, scratchBuffer, (uint)probeCountInBatch, 1, 1); + + Graphics.ExecuteCommandBuffer(cmd); + cmd.Clear(); + + offsetBuffer.GetData(batchResult); + for (int i = 0; i < probeCountInBatch; i++) + { + positions[probeData[i].probeIndex] += batchResult[i]; + offsets[probeData[i].probeIndex] = batchResult[i]; + } + } + + m_RayTracingAccelerationStructure.ClearInstances(); + cmd.Dispose(); + + // If bake is triggered from the lighting pannel, we don't Dispose buffers now + if (ProbeVolumeLightingTab.instance == null) + Dispose(); } - static void RestorePhysicsComponentsAfterBaking() + static internal void Dispose() { - foreach (var collider in s_ExcludedColliders) - collider.enabled = true; - - foreach (var rigidBody in s_ExcludedRigidBodies) - rigidBody.isKinematic = false; + m_RayTracingAccelerationStructure?.Dispose(); + m_RayTracingAccelerationStructure = null; + m_RayTracingContext?.Dispose(); + m_RayTracingContext = null; } - static void AddOccluders() + static internal void RecomputeVOForDebugOnly() { - s_AddedOccluders = new List(); + var prv = ProbeReferenceVolume.instance; + if (prv.perSceneDataList.Count == 0) + return; - for (int sceneIndex = 0; sceneIndex < SceneManagement.SceneManager.sceneCount; ++sceneIndex) + var contributors = GIContributors.Find(GIContributors.ContributorFilter.All); + SetBakingContext(prv.perSceneDataList); + + if (!m_BakingSet.HasBeenBaked()) + return; + + globalBounds = prv.globalBounds; + CellCountInDirections(out minCellPosition, out maxCellPosition, prv.MaxBrickSize()); + cellCount = maxCellPosition + Vector3Int.one - minCellPosition; + + m_BakingBatch = new BakingBatch(128, cellCount); + m_ProfileInfo = new ProbeVolumeProfileInfo(); + ModifyProfileFromLoadedData(m_BakingSet); + + List positionList = new(); + Dictionary positionToIndex = new(); + foreach (var cell in ProbeReferenceVolume.instance.cells.Values) { - SceneManagement.Scene scene = SceneManagement.SceneManager.GetSceneAt(sceneIndex); - if (!scene.isLoaded) - continue; + var bakingCell = ConvertCellToBakingCell(cell.desc, cell.data); + + int numProbes = bakingCell.probePositions.Length; + int uniqueIndex = positionToIndex.Count; + var indices = new int[numProbes]; - GameObject[] gameObjects = scene.GetRootGameObjects(); - foreach (GameObject gameObject in gameObjects) + // DeduplicateProbePositions + for (int i = 0; i < numProbes; i++) { - MeshRenderer[] renderComponents = gameObject.GetComponentsInChildren(); - foreach (MeshRenderer mr in renderComponents) - { - if (GIContributors.ContributesGI(mr.gameObject) && !mr.gameObject.TryGetComponent(out _)) - { - var meshCollider = mr.gameObject.AddComponent(); - meshCollider.hideFlags |= HideFlags.DontSaveInEditor | HideFlags.DontSaveInBuild; + var pos = bakingCell.probePositions[i]; + int brickSubdiv = bakingCell.bricks[i / 64].subdivisionLevel; + int probeHash = m_BakingBatch.GetProbePositionHash(pos); - s_AddedOccluders.Add(meshCollider); - } + if (positionToIndex.TryGetValue(probeHash, out var index)) + { + indices[i] = index; + int oldBrickLevel = m_BakingBatch.uniqueBrickSubdiv[probeHash]; + if (brickSubdiv < oldBrickLevel) + m_BakingBatch.uniqueBrickSubdiv[probeHash] = brickSubdiv; + } + else + { + positionToIndex[probeHash] = uniqueIndex; + indices[i] = uniqueIndex; + m_BakingBatch.uniqueBrickSubdiv[probeHash] = brickSubdiv; + positionList.Add(pos); + uniqueIndex++; } } + + bakingCell.probeIndices = indices; + m_BakingBatch.cells.Add(bakingCell); + + // We need to force rebuild debug stuff. + cell.debugProbes = null; } - var autoSimState = Physics.simulationMode; - try + ApplyVirtualOffsets(contributors, positionList.ToArray(), out m_BakingBatch.virtualOffsets); + + foreach (var cell in m_BakingBatch.cells) { - Physics.simulationMode = SimulationMode.Script; - // We call this only to update the search tree with the newly added occluders. - Physics.Simulate(1e-4f); + int numProbes = cell.probePositions.Length; + for (int i = 0; i < numProbes; ++i) + { + int j = cell.probeIndices[i]; + cell.offsetVectors[i] = m_BakingBatch.virtualOffsets[j]; + } } - finally + + // Unload it all as we are gonna load back with newly written cells. + foreach (var sceneData in prv.perSceneDataList) + prv.AddPendingSceneRemoval(sceneData.sceneGUID); + + // Make sure unloading happens. + prv.PerformPendingOperations(); + + // Write back the assets. + WriteBakingCells(m_BakingBatch.cells.ToArray()); + + foreach (var data in prv.perSceneDataList) + data.ResolveCellData(); + + // We can now finally reload. + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + m_BakingBatch = null; + + foreach (var sceneData in prv.perSceneDataList) { - Physics.simulationMode = autoSimState; + prv.AddPendingSceneLoading(sceneData.sceneGUID); } - } - private static void CleanupOccluders() - { - s_AddedOccluders?.ForEach(Object.DestroyImmediate); + prv.PerformPendingOperations(); } + } + partial class ProbeGIBaking + { struct TouchupsPerCell { public List<(ProbeTouchupVolume touchup, ProbeReferenceVolume.Volume obb, Vector3 center, Vector3 offset)> appliers; @@ -198,10 +364,9 @@ static Dictionary GetTouchupsPerCell(out bool hasAppliers) return cellToVolumes; } - static Vector3[] DoApplyVirtualOffsetsFromAdjustmentVolumes(Vector3[] positions, Dictionary cellToVolumes) + static Vector3[] DoApplyVirtualOffsetsFromAdjustmentVolumes(Vector3[] positions, Vector3[] offsets, Dictionary cellToVolumes) { float cellSize = m_ProfileInfo.cellSizeInMeters; - var offsets = new Vector3[positions.Length]; for (int i = 0; i < positions.Length; i++) { int cellIndex = PosToIndex(Vector3Int.FloorToInt(positions[i] / cellSize)); @@ -220,481 +385,5 @@ static Vector3[] DoApplyVirtualOffsetsFromAdjustmentVolumes(Vector3[] positions, } return offsets; } - - static void DoApplyVirtualOffsets(Vector3[] probePositions, out Vector3[] probeOffsets, VirtualOffsetSettings voSettings, Dictionary cellToVolumes) - { - var scaleForSearchDist = voSettings.searchMultiplier; - float rayOriginBias = voSettings.rayOriginBias; - float geometryBias = voSettings.outOfGeoOffset; - - if (scaleForSearchDist == 0.0f) - { - probeOffsets = DoApplyVirtualOffsetsFromAdjustmentVolumes(probePositions, cellToVolumes); - return; - } - - // Limit memory usage based on ray cast / hit structures (of which there are lots per position) - int maxPositionsPerBatch; - { - var rayCastBytesPerPosition = UnsafeUtility.SizeOf() * kRayDirectionsPerPosition; - var rayHitBytesPerPosition = UnsafeUtility.SizeOf() * kRayDirectionsPerPosition * voSettings.maxHitsPerRay; - var rayDataBytesPerPosition = rayCastBytesPerPosition + rayHitBytesPerPosition; - maxPositionsPerBatch = (kMaxMemoryUsage / 2) / rayDataBytesPerPosition; - -#if VERBOSE - Debug.Log($"Running virtual offset over {(probePositions.Length + maxPositionsPerBatch - 1)/maxPositionsPerBatch} batches."); -#endif - } - - // This data is shared across all jobs - var positions = new NativeArray(probePositions, Allocator.TempJob); - var offsets = new NativeArray(probePositions.Length, Allocator.TempJob, NativeArrayOptions.ClearMemory); - var searchDistanceForPosition = new NativeArray(positions.Length, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - var rayOriginBiasForPosition = new NativeArray(positions.Length, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - var geometryBiasForPosition = new NativeArray(positions.Length, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - var positionIndex = new NativeArray(positions.Length, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - - // Allocate ray cast/hit data - var raycastCommands = new[] - { - new NativeArray(maxPositionsPerBatch * kRayDirectionsPerPosition, Allocator.TempJob, NativeArrayOptions.UninitializedMemory), - new NativeArray(maxPositionsPerBatch * kRayDirectionsPerPosition, Allocator.TempJob, NativeArrayOptions.UninitializedMemory) - }; - { - // We need to set a known per-ray maxHits up-front since raycast command schedule reads this at schedule time. This is a bit annoying but it's a - // price we'll have to pay right now to be able to create commands from a job. - QueryParameters queryParams = new QueryParameters(); - queryParams.hitBackfaces = true; - queryParams.layerMask = 0; - var defaultRaycastCommand = new RaycastCommand(Vector3.zero, Vector3.zero, queryParams, 0f); - for (var i = 0; i < maxPositionsPerBatch * kRayDirectionsPerPosition; ++i) - raycastCommands[0][i] = raycastCommands[1][i] = defaultRaycastCommand; - } - var raycastHits = new[] - { - new NativeArray(maxPositionsPerBatch * kRayDirectionsPerPosition * voSettings.maxHitsPerRay, Allocator.TempJob, NativeArrayOptions.UninitializedMemory), - new NativeArray(maxPositionsPerBatch * kRayDirectionsPerPosition * voSettings.maxHitsPerRay,Allocator.TempJob, NativeArrayOptions.UninitializedMemory) - }; - - // Create job data - var createRayCastCommandsJob = new CreateRayCastCommandsJob - { - voSettings = voSettings, - positions = positions, - positionIndex = positionIndex, - searchDistanceForPosition = searchDistanceForPosition, - rayOriginBiasForPosition = rayOriginBiasForPosition, - queryParams = new QueryParameters(voSettings.collisionMask, true, QueryTriggerInteraction.UseGlobal, true), - }; - var pushOutGeometryJob = new PushOutGeometryJob - { - voSettings = voSettings, - positions = positions, - offsets = offsets, - geometryBiasForPosition = geometryBiasForPosition, - positionIndex = positionIndex, - }; - var jobHandles = new JobHandle[2]; - - try - { -#if VERBOSE - var positionsWithColliders = 0; -#endif - - int nextBatchIdx = 1; - int batchPosIdx = 0; - float cellSize = m_ProfileInfo.cellSizeInMeters; - while (batchPosIdx < positions.Length) - { - // Run a quick overlap check for each search box before setting up rays for the position - int overlapCount = 0; - var batchPosStart = batchPosIdx; - do { - int subdivLevel = m_BakingBatch.GetSubdivLevelAt(positions[batchPosIdx]); - var brickSize = ProbeReferenceVolume.CellSize(subdivLevel); - var searchDistance = (brickSize * m_ProfileInfo.minBrickSize) / ProbeBrickPool.kBrickCellCount; - var distanceSearch = scaleForSearchDist * searchDistance; - - int cellIndex = PosToIndex(Vector3Int.FloorToInt(positions[batchPosIdx] / cellSize)); - bool hasTouchups = cellToVolumes.TryGetValue(cellIndex, out var volumes), adjusted = false; - if (hasTouchups) - { - foreach (var (touchup, obb, center, offset) in volumes.appliers) - { - if (touchup.ContainsPoint(obb, center, positions[batchPosIdx])) - { - positions[batchPosIdx] += offset; - offsets[batchPosIdx] = offset; - adjusted = true; - break; - } - } - } - - if (!adjusted && Physics.CheckBox(positions[batchPosIdx], new Vector3(distanceSearch, distanceSearch, distanceSearch), Quaternion.identity, voSettings.collisionMask)) - { - if (hasTouchups) - { - foreach (var (touchup, obb, center) in volumes.overriders) - { - if (touchup.ContainsPoint(obb, center, positions[batchPosIdx])) - { - rayOriginBias = touchup.rayOriginBias; - geometryBias = touchup.geometryBias; - break; - } - } - } - - positionIndex[batchPosStart + overlapCount] = batchPosIdx; - searchDistanceForPosition[batchPosStart + overlapCount] = distanceSearch; - rayOriginBiasForPosition[batchPosStart + overlapCount] = rayOriginBias; - geometryBiasForPosition[batchPosStart + overlapCount] = geometryBias; - ++overlapCount; - } - } - while (++batchPosIdx < positions.Length && overlapCount < maxPositionsPerBatch); - - // Swap buffers and sync any already running job at that slot - nextBatchIdx = 1 - nextBatchIdx; - jobHandles[nextBatchIdx].Complete(); - - var raycastCommandsSub = raycastCommands[nextBatchIdx].GetSubArray(0, overlapCount * kRayDirectionsPerPosition); - var raycastHitsSub = raycastHits[nextBatchIdx].GetSubArray(0, overlapCount * kRayDirectionsPerPosition * voSettings.maxHitsPerRay); - - // Assign ranges and ray/hit arrays - createRayCastCommandsJob.startIdx = batchPosStart; - createRayCastCommandsJob.raycastCommands = raycastCommandsSub; - createRayCastCommandsJob.raycastHits = raycastHitsSub; - - pushOutGeometryJob.startIdx = batchPosStart; - pushOutGeometryJob.raycastCommands = raycastCommandsSub; - pushOutGeometryJob.raycastHits = raycastHitsSub; - -#if VERBOSE - positionsWithColliders += overlapCount; - Debug.Log($"Dispatching batch {batchPosStart} - {batchPosStart+overlapCount} using index {nextBatchIdx} (accumulated colliders {positionsWithColliders})"); -#endif - -#if USE_JOBS - // Kick off jobs immediately - var createRayCastCommandsJobHandle = createRayCastCommandsJob.Schedule(overlapCount, 32); - var raycastCommandsJobHandle = RaycastCommand.ScheduleBatch(raycastCommandsSub, raycastHitsSub, kMinCommandsPerJob, voSettings.maxHitsPerRay, createRayCastCommandsJobHandle); - jobHandles[nextBatchIdx] = pushOutGeometryJob.Schedule(overlapCount, 16, raycastCommandsJobHandle); - JobHandle.ScheduleBatchedJobs(); -#else - // Run jobs in-place for easier debugging - createRayCastCommandsJob.Run(overlapCount); - RaycastCommand.ScheduleBatch(raycastCommandsSub, raycastHitsSub, kMinCommandsPerJob, voSettings.maxHitsPerRay).Complete(); - pushOutGeometryJob.Run(overlapCount); -#endif - } - - // Sync any in-flight jobs (order doesn't matter) - JobHandle.CompleteAll(ref jobHandles[0], ref jobHandles[1]); - - // Copy out result data - positions.CopyTo(probePositions); - probeOffsets = offsets.ToArray(); - -#if VERBOSE - Debug.Log($"Earlied out {positions.Length - positionsWithColliders}/{positions.Length} probe positions from virtual offset."); - Debug.Log($"Working memory used: {(raycastCommands[0].Length * UnsafeUtility.SizeOf() * 2 + raycastHits[0].Length * UnsafeUtility.SizeOf() * 2) / 1024 / 1024} MB"); -#endif - } - catch (System.Exception e) - { - Debug.LogException(e); - JobHandle.CompleteAll(ref jobHandles[0], ref jobHandles[1]); - probeOffsets = null; - } - finally - { - positions.Dispose(); - offsets.Dispose(); - searchDistanceForPosition.Dispose(); - rayOriginBiasForPosition.Dispose(); - geometryBiasForPosition.Dispose(); - positionIndex.Dispose(); - - raycastCommands[0].Dispose(); - raycastCommands[1].Dispose(); - raycastHits[0].Dispose(); - raycastHits[1].Dispose(); - } - } - - // A job that creates raycast commands for any probe position that has passed the initial - // overlap culling test. Rays are created in the directions of a 3d grid around the center - // position. (3^3-1 rays per position) -#if USE_BURST - [BurstCompile] -#endif - struct CreateRayCastCommandsJob : IJobParallelFor - { - [ReadOnly] public VirtualOffsetSettings voSettings; - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray positions; - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray positionIndex; - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray searchDistanceForPosition; - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray rayOriginBiasForPosition; - - [ReadOnly] public int startIdx; - - [NativeDisableContainerSafetyRestriction] - [WriteOnly] public NativeArray raycastCommands; - [NativeDisableContainerSafetyRestriction] - [WriteOnly] public NativeArray raycastHits; - - public QueryParameters queryParams; - - public void Execute(int i) - { - int posIdx = positionIndex[i + startIdx]; - var position = positions[posIdx]; - var searchDistance = searchDistanceForPosition[i + startIdx]; - var rayOriginBias = rayOriginBiasForPosition[i + startIdx]; - - int cmdIdx = i * kRayDirectionsPerPosition; - - // Clear result array because raycast job won't return the actual number of hits :( - for (var j = 0; j < kRayDirectionsPerPosition * voSettings.maxHitsPerRay; ++j) - raycastHits[cmdIdx * voSettings.maxHitsPerRay + j] = default; - for (var j = 0; j < kRayDirectionsPerPosition; ++j) - { - var direction = kRayDirections[j]; - var origin = position + direction * rayOriginBias; - raycastCommands[cmdIdx++] = new RaycastCommand(origin, direction, queryParams, searchDistance); - } - } - - // Typed out in a way Burst understands. - const float k0 = 0, k1 = 1, k2 = (float)0.70710678118654752440084436210485, k3 = (float)0.57735026918962576450914878050196; - static readonly Vector3[] kRayDirections = - { - new(-k3, +k3, -k3), // -1 1 -1 - new( k0, +k2, -k2), // 0 1 -1 - new(+k3, +k3, -k3), // 1 1 -1 - new(-k2, +k2, k0), // -1 1 0 - new( k0, +k1, k0), // 0 1 0 - new(+k2, +k2, k0), // 1 1 0 - new(-k3, +k3, +k3), // -1 1 1 - new( k0, +k2, +k2), // 0 1 1 - new(+k3, +k3, +k3), // 1 1 1 - - new(-k2, k0, -k2), // -1 0 -1 - new( k0, k0, -k1), // 0 0 -1 - new(+k2, k0, -k2), // 1 0 -1 - new(-k1, k0, k0), // -1 0 0 - // k0, k0, k0 - skip center position (which would be a zero-length ray) - new(+k1, k0, k0), // 1 0 0 - new(-k2, k0, +k2), // -1 0 1 - new( k0, k0, +k1), // 0 0 1 - new(+k2, k0, +k2), // 1 0 1 - - new(-k3, -k3, -k3), // -1 -1 -1 - new( k0, -k2, -k2), // 0 -1 -1 - new(+k3, -k3, -k3), // 1 -1 -1 - new(-k2, -k2, k0), // -1 -1 0 - new( k0, -k1, k0), // 0 -1 0 - new(+k2, -k2, k0), // 1 -1 0 - new(-k3, -k3, +k3), // -1 -1 1 - new( k0, -k2, +k2), // 0 -1 1 - new(+k3, -k3, +k3), // 1 -1 1 - }; - } - - // A job that pushes probe positions out of geometry based on raycast results. -#if USE_BURST - [BurstCompile] -#endif - struct PushOutGeometryJob : IJobParallelFor - { - [ReadOnly] public VirtualOffsetSettings voSettings; - - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray positionIndex; - - [ReadOnly] public int startIdx; - - [ReadOnly] public NativeArray raycastCommands; - [ReadOnly] public NativeArray raycastHits; - - [NativeDisableContainerSafetyRestriction] - public NativeArray positions; - - [NativeDisableContainerSafetyRestriction] - [WriteOnly] public NativeArray offsets; - - [NativeDisableContainerSafetyRestriction] - [ReadOnly] public NativeArray geometryBiasForPosition; - - public void Execute(int i) - { - int cmdIdx = i * kRayDirectionsPerPosition; - int posIdx = positionIndex[i + startIdx]; - float geometryBias = geometryBiasForPosition[i + startIdx]; - var offset = PushOutOfGeometry(cmdIdx, geometryBias, voSettings.maxHitsPerRay); - positions[posIdx] += offset; - offsets[posIdx] = offset; - } - - static bool IsNewBestHit(float newDistance, float oldDistance, float newDot, float oldDot) - { - const float kDistanceThreshold = 5e-5f; - const float kDotThreshold = 1e-2f; - - var distanceDiff = newDistance - oldDistance; - - // If new distance is smaller by at least kDistanceThreshold, we accept it as our new best ray. - var newBestHit = distanceDiff < -kDistanceThreshold; - - // If new distance is larger but by no more than kDistanceThreshold, and ray is at least kDotThreshold more colinear with normal, accept it as new best ray - if (!newBestHit && distanceDiff < kDistanceThreshold && newDot - oldDot > kDotThreshold) - newBestHit = true; - - return newBestHit; - } - - void GetClosestColliderHit(int hitIdx, Vector3 outRay, int maxHitsPerRay, out float distance, out float dotSurface) - { - distance = float.MaxValue; - dotSurface = -1f; - - for (var n = hitIdx + maxHitsPerRay; hitIdx < n; ++hitIdx) - { - var hit = raycastHits[hitIdx]; - if (hit.colliderInstanceID == 0) - break; - - var dotRaySurface = Vector3.Dot(outRay, hit.normal); - if (IsNewBestHit(hit.distance, distance, dotRaySurface, dotSurface)) - { - distance = hit.distance; - dotSurface = dotRaySurface; - } - } - } - - Vector3 PushOutOfGeometry(int cmdIdx, float biasOutGeo, int maxHitsPerRay) - { - var minDist = float.MaxValue; - var maxDotSurface = -1f; - var outDirection = Vector3.zero; - - var hitIdx = cmdIdx * maxHitsPerRay; - for (var i = 0; i < kRayDirectionsPerPosition; ++i, hitIdx += maxHitsPerRay) - { - var outBoundRay = raycastCommands[cmdIdx++]; - GetClosestColliderHit(hitIdx, outBoundRay.direction, maxHitsPerRay, out var distanceForDir, out var dotSurface); - - if (distanceForDir < float.MaxValue) - { - // If any of the closest hit is outside, we are not inside geometry so we don't want to virtual offset. - // TO VERIFY: Is this too harsh? Should we allow some level of hit of a front face? - if (dotSurface < 0f) return Vector3.zero; - - if (IsNewBestHit(distanceForDir, minDist, dotSurface, maxDotSurface)) - { - outDirection = outBoundRay.direction; - minDist = distanceForDir; - maxDotSurface = dotSurface; - } - } - } - - if (minDist < float.MaxValue) - return outDirection * (minDist * 1.05f + biasOutGeo); - - return Vector3.zero; - } - } - - static internal void RecomputeVOForDebugOnly() - { - var prv = ProbeReferenceVolume.instance; - GeneratePhysicsComponentToModList(); - if (prv.perSceneDataList.Count > 0) - { - SetBakingContext(prv.perSceneDataList); - } - else return; - - - globalBounds = prv.globalBounds; - CellCountInDirections(out minCellPosition, out maxCellPosition, prv.MaxBrickSize()); - cellCount = maxCellPosition + Vector3Int.one - minCellPosition; - - m_BakingBatch = new BakingBatch(128, cellCount); - - List bakingCells = new List(); - - foreach (var cell in ProbeReferenceVolume.instance.cells.Values) - { - var bakingCell = ConvertCellToBakingCell(cell.desc, cell.data); - var positions = bakingCell.probePositions; - - for (int i = 0; i < positions.Length; ++i) - { - int probeHash = m_BakingBatch.GetProbePositionHash(positions[i]); - int subdivLevel = bakingCell.bricks[i / 64].subdivisionLevel; - if (m_BakingBatch.uniqueBrickSubdiv.TryGetValue(probeHash, out int currSubdiv)) - { - subdivLevel = Mathf.Min(subdivLevel, currSubdiv); - } - m_BakingBatch.uniqueBrickSubdiv[probeHash] = subdivLevel; - } - - ApplyVirtualOffsets(bakingCell.probePositions, out Vector3[] newOffsets); - - // Remove offsets before handing it over for debug - for (int i = 0; i < positions.Length; ++i) - { - bakingCell.probePositions[i] -= newOffsets[i]; - } - - bakingCell.offsetVectors = newOffsets; - - // We need to force rebuild debug stuff. - cell.debugProbes = null; - - bakingCells.Add(bakingCell); - } - - RestorePhysicsComponentsAfterBaking(); - CleanupOccluders(); - - // Unload it all as we are gonna load back with newly written cells. - foreach (var sceneData in prv.perSceneDataList) - { - prv.AddPendingSceneRemoval(sceneData.sceneGUID); - } - - // Make sure unloading happens. - prv.PerformPendingOperations(); - - // Write back the assets. - WriteBakingCells(bakingCells.ToArray()); - - foreach (var data in prv.perSceneDataList) - { - data.ResolveCellData(); - } - - // We can now finally reload. - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - - foreach (var sceneData in prv.perSceneDataList) - { - prv.AddPendingSceneLoading(sceneData.sceneGUID); - } - - prv.PerformPendingOperations(); - } } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs index 5b6619be534..e9c14547a4e 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.cs @@ -158,7 +158,8 @@ public BakingProfiling(T stage, ref T currentStage) currentStage = stage; UpdateProgressBar(stage); - Profiling.Profiler.BeginSample(stage.ToString()); + if (LogFile != null) + Profiling.Profiler.BeginSample(stage.ToString()); } public void OnDispose(ref T currentStage) @@ -166,7 +167,8 @@ public void OnDispose(ref T currentStage) if (disposed) return; disposed = true; - Profiling.Profiler.EndSample(); + if (LogFile != null) + Profiling.Profiler.EndSample(); UpdateProgressBar(prevStage); currentStage = prevStage; @@ -185,6 +187,7 @@ public class BakingSetupProfiling : BakingProfiling public enum Stages { + OnBakeStarted, PrepareWorldSubdivision, EnsurePerSceneDataInOpenScenes, FindWorldBounds, @@ -209,7 +212,6 @@ public class BakingCompleteProfiling : BakingProfiling RemapBakedCells(bool isBakingSubset) newCells.Add(oldIndex, cell); } } - } + } return oldToNewCellRemapping; } @@ -1012,11 +1014,6 @@ static public void ApplyPostBakeOperations(NativeArray sh, } } - using (new BakingCompleteProfiling(BakingCompleteProfiling.Stages.AddOccluders)) - AddOccluders(); - - ModifyPhysicsComponentsForBaking(); - // Fetch results of all cells using var fetchScope = new BakingCompleteProfiling(BakingCompleteProfiling.Stages.FetchResults); BakingCompleteProfiling.GetProgressRange(out float progress0, out float progress1); @@ -1186,9 +1183,6 @@ static public void ApplyPostBakeOperations(NativeArray sh, } fetchScope.Dispose(); - RestorePhysicsComponentsAfterBaking(); - CleanupOccluders(); - m_BakingBatchIndex = 0; // Force maximum sh bands to perform baking, we need to store what sh bands was selected from the settings as we need to restore it after. @@ -1475,44 +1469,54 @@ static BakingCell ConvertCellToBakingCell(CellDesc cellDesc, CellData cellData) // Runtime data layout is for GPU consumption. // We need to convert it back to a linear layout for the baking cell. - int brickCount = probeCount / ProbeBrickPool.kBrickProbeCountTotal; int probeIndex = 0; + int chunkOffsetInProbes = 0; + var chunksCount = cellDesc.shChunkCount; var chunkSizeInProbes = ProbeBrickPool.GetChunkSizeInProbeCount(); Vector3Int locSize = ProbeBrickPool.ProbeCountToDataLocSize(chunkSizeInProbes); var blackSH = GetBlackSH(); - for (int brickIndex = 0; brickIndex < brickCount; ++brickIndex) + for (int chunkIndex = 0; chunkIndex < chunksCount; ++chunkIndex) { - int chunkIndex = brickIndex / ProbeBrickPool.GetChunkSizeInBrickCount(); var cellChunkData = GetCellChunkData(cellData, chunkIndex); - for (int z = 0; z < ProbeBrickPool.kBrickProbeCountPerDim; z++) + for (int brickIndex = 0; brickIndex < m_BakingSet.chunkSizeInBricks; ++brickIndex) { - for (int y = 0; y < ProbeBrickPool.kBrickProbeCountPerDim; y++) + if (probeIndex >= probeCount) + break; + + for (int z = 0; z < ProbeBrickPool.kBrickProbeCountPerDim; z++) { - for (int x = 0; x < ProbeBrickPool.kBrickProbeCountPerDim; x++) + for (int y = 0; y < ProbeBrickPool.kBrickProbeCountPerDim; y++) { - var remappedIndex = GetProbeGPUIndex(brickIndex, x, y, z, locSize); + for (int x = 0; x < ProbeBrickPool.kBrickProbeCountPerDim; x++) + { + var remappedIndex = GetProbeGPUIndex(brickIndex, x, y, z, locSize); - // Scenario data can be invalid due to partially baking the set. - if (cellChunkData.scenarioValid) - ReadFullFromShaderCoeffsL0L1L2(ref bc.sh[probeIndex], cellChunkData.shL0L1RxData, cellChunkData.shL1GL1RyData, cellChunkData.shL1BL1RzData, - cellChunkData.shL2Data_0, cellChunkData.shL2Data_1, cellChunkData.shL2Data_2, cellChunkData.shL2Data_3, remappedIndex); - else - bc.sh[probeIndex] = blackSH; + // Scenario data can be invalid due to partially baking the set. + if (cellChunkData.scenarioValid) + ReadFullFromShaderCoeffsL0L1L2(ref bc.sh[probeIndex], cellChunkData.shL0L1RxData, cellChunkData.shL1GL1RyData, cellChunkData.shL1BL1RzData, + cellChunkData.shL2Data_0, cellChunkData.shL2Data_1, cellChunkData.shL2Data_2, cellChunkData.shL2Data_3, remappedIndex); + else + bc.sh[probeIndex] = blackSH; + + bc.validityNeighbourMask[probeIndex] = cellChunkData.validityNeighMaskData[remappedIndex]; - bc.probePositions[probeIndex] = cellData.probePositions[remappedIndex]; - bc.validity[probeIndex] = cellData.validity[remappedIndex]; - bc.validityNeighbourMask[probeIndex] = cellChunkData.validityNeighMaskData[remappedIndex]; - bc.touchupVolumeInteraction[probeIndex] = cellData.touchupVolumeInteraction[remappedIndex]; - if (hasVirtualOffsets) - bc.offsetVectors[probeIndex] = cellData.offsetVectors[remappedIndex]; + remappedIndex += chunkOffsetInProbes; + bc.probePositions[probeIndex] = cellData.probePositions[remappedIndex]; + bc.validity[probeIndex] = cellData.validity[remappedIndex]; + bc.touchupVolumeInteraction[probeIndex] = cellData.touchupVolumeInteraction[remappedIndex]; + if (hasVirtualOffsets) + bc.offsetVectors[probeIndex] = cellData.offsetVectors[remappedIndex]; - probeIndex++; + probeIndex++; + } } } } + + chunkOffsetInProbes += chunkSizeInProbes; } return bc; @@ -1685,10 +1689,9 @@ unsafe static void WriteBakingCells(BakingCell[] bakingCells) for (var i = 0; i < bakingCells.Length; ++i) { + AnalyzeBrickForIndirectionEntries(ref bakingCells[i]); var bakingCell = bakingCells[i]; - AnalyzeBrickForIndirectionEntries(ref bakingCell); - m_BakingSet.cellDescs.Add(bakingCell.index, new CellDesc { position = bakingCell.position, @@ -1841,7 +1844,7 @@ unsafe static void WriteBakingCells(BakingCell[] bakingCells) positionsChunkTarget[index] = Vector3.zero; touchupVolumeInteractionChunkTarget[index] = 0.0f; if (hasVirtualOffsets) - offsetChunkTarget[index] = Vector3.zero; + offsetChunkTarget[index] = Vector3.zero; } else { @@ -2064,16 +2067,9 @@ public static void OnBakeCompletedCleanup() UnityEditor.Experimental.Lightmapping.additionalBakedProbesCompleted -= OnAdditionalProbesBakeCompleted; if (m_BakingBatch != null) UnityEditor.Experimental.Lightmapping.SetAdditionalBakedProbes(m_BakingBatch.index, null); - - RestorePhysicsComponentsAfterBaking(); - CleanupOccluders(); } } - s_ExcludedColliders = null; - s_ExcludedRigidBodies = null; - s_AddedOccluders = null; - // We need to reset that view ProbeReferenceVolume.instance.ResetDebugViewToMaxSubdiv(); } @@ -2083,6 +2079,7 @@ public static Vector3[] RunPlacement() ClearBakingBatch(); ProbeSubdivisionResult result; + GIContributors? contributors = null; float prevBrickSize = ProbeReferenceVolume.instance.MinBrickSize(); int prevMaxSubdiv = ProbeReferenceVolume.instance.GetMaxSubdivision(); @@ -2096,6 +2093,7 @@ public static Vector3[] RunPlacement() else { var ctx = PrepareProbeSubdivisionContext(); + contributors = ctx.contributors; // Subdivide the scene and place the bricks using (new BakingSetupProfiling(BakingSetupProfiling.Stages.BakeBricks)) @@ -2108,7 +2106,7 @@ public static Vector3[] RunPlacement() { float brickSize = m_ProfileInfo.minBrickSize; Matrix4x4 newRefToWS = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(brickSize, brickSize, brickSize)); - ApplySubdivisionResults(result, newRefToWS, out positions); + ApplySubdivisionResults(result, contributors, newRefToWS, out positions); } // Restore loaded asset settings @@ -2228,11 +2226,14 @@ public static void ModifyProfileFromLoadedData(ProbeVolumeBakingSet bakingSet) } // Converts brick information into positional data at kBrickProbeCountPerDim * kBrickProbeCountPerDim * kBrickProbeCountPerDim resolution - internal static void ConvertBricksToPositions(ref BakingCell cell, Brick[] bricks, Vector3[] outProbePositions, int[] outBrickSubdiv) + internal static void ConvertBricksToPositions(Brick[] bricks, out Vector3[] outProbePositions, out int[] outBrickSubdiv) { int posIdx = 0; float scale = ProbeReferenceVolume.instance.MinBrickSize() / ProbeBrickPool.kBrickCellCount; + outProbePositions = new Vector3[bricks.Length * ProbeBrickPool.kBrickProbeCountTotal]; + outBrickSubdiv = new int[bricks.Length * ProbeBrickPool.kBrickProbeCountTotal]; + foreach (var b in bricks) { int brickSize = ProbeReferenceVolume.CellSize(b.subdivisionLevel); @@ -2248,6 +2249,7 @@ internal static void ConvertBricksToPositions(ref BakingCell cell, Brick[] brick outProbePositions[posIdx] = (Vector3)probeOffset * scale; outBrickSubdiv[posIdx] = b.subdivisionLevel; + posIdx++; } } @@ -2261,7 +2263,7 @@ static int PosToIndex(Vector3Int pos) return normalizedPos.z * (cellCount.x * cellCount.y) + normalizedPos.y * cellCount.x + normalizedPos.x; } - public static void ApplySubdivisionResults(ProbeSubdivisionResult results, Matrix4x4 refToWS, out Vector3[] positions) + public static void ApplySubdivisionResults(ProbeSubdivisionResult results, GIContributors? contributors, Matrix4x4 refToWS, out Vector3[] positions) { // For now we just have one baking batch. Later we'll have more than one for a set of scenes. // All probes need to be baked only once for the whole batch and not once per cell @@ -2278,8 +2280,8 @@ public static void ApplySubdivisionResults(ProbeSubdivisionResult results, Matri if (++i % 10 == 0) EditorUtility.DisplayProgressBar("Baking Probe Volumes", $"({i} of {results.cells.Count}) Subdivide Cell", Mathf.Lerp(progress0, progress1, i / (float)results.cells.Count)); - var probePositions = new Vector3[bricks.Length * ProbeBrickPool.kBrickProbeCountTotal]; - var brickSubdivLevels = new int[bricks.Length * ProbeBrickPool.kBrickProbeCountTotal]; + ConvertBricksToPositions(bricks, out var probePositions, out var brickSubdivLevels); + DeduplicateProbePositions(in probePositions, in brickSubdivLevels, positionToIndex, m_BakingBatch, positionList, out var probeIndices); BakingCell cell = new BakingCell() { @@ -2288,11 +2290,9 @@ public static void ApplySubdivisionResults(ProbeSubdivisionResult results, Matri bounds = bounds, bricks = bricks, probePositions = probePositions, + probeIndices = probeIndices, }; - ConvertBricksToPositions(ref cell, bricks, probePositions, brickSubdivLevels); - DeduplicateProbePositions(in probePositions, in brickSubdivLevels, positionToIndex, m_BakingBatch, positionList, out cell.probeIndices); - m_BakingBatch.cells.Add(cell); m_BakingBatch.cellIndex2SceneReferences[cell.index] = new HashSet(results.scenesPerCells[cell.position]); } @@ -2301,7 +2301,7 @@ public static void ApplySubdivisionResults(ProbeSubdivisionResult results, Matri // Virtually offset positions before passing them to lightmapper using (new BakingSetupProfiling(BakingSetupProfiling.Stages.ApplyVirtualOffsets)) - ApplyVirtualOffsets(positions, out m_BakingBatch.virtualOffsets); + ApplyVirtualOffsets(contributors, positions, out m_BakingBatch.virtualOffsets); } } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettingsDrawer.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettingsDrawer.cs index 26e6a273cb4..6caff94d806 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettingsDrawer.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettingsDrawer.cs @@ -17,7 +17,6 @@ static class Styles public static readonly GUIContent virtualOffsetSearchMultiplier = EditorGUIUtility.TrTextContent("Search Distance Multiplier", "Determines the length of the sampling ray Unity uses to search for valid probe positions."); public static readonly GUIContent virtualOffsetBiasOutGeometry = EditorGUIUtility.TrTextContent("Geometry Bias", "Determines how far Unity pushes a probe out of geometry after a ray hit."); public static readonly GUIContent virtualOffsetRayOriginBias = EditorGUIUtility.TrTextContent("Ray Origin Bias", "Distance from the probe position used to determine the origin of the sampling ray."); - public static readonly GUIContent virtualOffsetMaxHitsPerRay = EditorGUIUtility.TrTextContent("Max Ray Hits", "How many collisions to allow per ray before determining the Virtual Offset probe position."); public static readonly GUIContent virtualOffsetCollisionMask = EditorGUIUtility.TrTextContent("Layer Mask", "Layers to include in collision calculations for Virtual Offset."); public static readonly GUIContent dilationSettingsTitle = EditorGUIUtility.TrTextContent("Probe Dilation Settings"); @@ -94,13 +93,11 @@ void DrawVirtualOffsetSettings(SerializedProperty virtualOffsetSettings) var virtualOffsetGeometrySearchMultiplier = virtualOffsetSettings.FindPropertyRelative("searchMultiplier"); var virtualOffsetBiasOutOfGeometry = virtualOffsetSettings.FindPropertyRelative("outOfGeoOffset"); var virtualOffsetRayOriginBias = virtualOffsetSettings.FindPropertyRelative("rayOriginBias"); - var virtualOffsetMaxHitsPerRay = virtualOffsetSettings.FindPropertyRelative("maxHitsPerRay"); var virtualOffsetCollisionMask = virtualOffsetSettings.FindPropertyRelative("collisionMask"); EditorGUILayout.PropertyField(virtualOffsetGeometrySearchMultiplier, Styles.virtualOffsetSearchMultiplier); EditorGUILayout.PropertyField(virtualOffsetBiasOutOfGeometry, Styles.virtualOffsetBiasOutGeometry); EditorGUILayout.PropertyField(virtualOffsetRayOriginBias, Styles.virtualOffsetRayOriginBias); - EditorGUILayout.PropertyField(virtualOffsetMaxHitsPerRay, Styles.virtualOffsetMaxHitsPerRay); EditorGUILayout.PropertyField(virtualOffsetCollisionMask, Styles.virtualOffsetCollisionMask); GUILayout.BeginHorizontal(); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingSetEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingSetEditor.cs index a48fbd3fda3..d1029073253 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingSetEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBakingSetEditor.cs @@ -39,7 +39,7 @@ static class Styles public static readonly string msgProbeFreeze = "Some scene(s) in this Baking Set are not currently loaded in the Hierarchy. Set Probe Positions to Don't Recalculate to not break compatibility with already baked scenarios."; public static readonly GUIContent maxDistanceBetweenProbes = new GUIContent("Max Probe Spacing", "Maximum distance between probes, in meters. Determines the number of bricks in a streamable unit."); public static readonly GUIContent minDistanceBetweenProbes = new GUIContent("Min Probe Spacing", "Minimum distance between probes, in meters."); - public static readonly string simplificationLevelsHighWarning = "High simplification levels have a big memory overhead, they are not recommended except for testing purposes."; + public static readonly string simplificationLevelsHighWarning = "A high number of brick size causes a big memory overhead, this is not recommended except for testing purposes."; public static readonly GUIContent indexDimensions = new GUIContent("Index Dimensions", "The dimensions of the index buffer."); public static readonly GUIContent minRendererVolumeSize = new GUIContent("Min Renderer Size", "The smallest Renderer size to consider when placing probes."); public static readonly GUIContent renderersLayerMask = new GUIContent("Layer Mask", "Specify Layers to use when generating probe positions."); @@ -157,10 +157,10 @@ void ProbePlacementGUI() SimplificationLevelsSlider(); - int levels = m_SimplificationLevels.intValue + 1; + int levels = ProbeVolumeBakingSet.GetMaxSubdivision(m_SimplificationLevels.intValue); MessageType helpBoxType = MessageType.Info; - string helpBoxText = $"Probe Volumes can use a maximum of {levels} subdivision levels."; - if (levels == 5) + string helpBoxText = $"Baked data will contain up to {levels} different size of bricks."; + if (levels == 6) { helpBoxType = MessageType.Warning; helpBoxText += "\n" + Styles.simplificationLevelsHighWarning; diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs index 7bb89b2d556..10892331c21 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs @@ -28,7 +28,7 @@ static class Styles { public static readonly GUIContent helpIcon = EditorGUIUtility.IconContent("_Help"); public static readonly GUIContent settingsIcon = EditorGUIUtility.IconContent("_Popup"); - public static readonly GUIContent debugIcon = EditorGUIUtility.IconContent("DebuggerEnabled"); + public static readonly GUIContent debugIcon = EditorGUIUtility.IconContent("d_debug"); public static readonly GUIContent lightingSettings = new GUIContent("Lighting Settings Asset"); public static readonly GUIContent bakingTitle = new GUIContent("Baking"); @@ -209,6 +209,8 @@ public override void OnDisable() Undo.undoRedoEvent -= OnUndoRedo; EditorSceneManager.sceneOpened -= OnSceneOpened; + + ProbeGIBaking.Dispose(); } void OnUndoRedo(in UndoRedoInfo info) @@ -272,6 +274,11 @@ public override void OnHeaderSettingsGUI() var rect = GUILayoutUtility.GetRect(iconSize.x, iconSize.y); if (EditorGUI.DropdownButton(rect, Styles.settingsIcon, FocusType.Passive, EditorStyles.iconButton)) EditorUtility.DisplayCustomMenu(rect, new[] { EditorGUIUtility.TrTextContent("Open Debug Window") }, -1, OpenProbeVolumeDebugPanel, null); + + //var style = new GUIStyle(EditorStyles.iconButton); + //style.padding = new RectOffset(1, 1, 1, 1); + //if (GUI.Button(rect, Styles.debugIcon, style)) + // OpenProbeVolumeDebugPanel(null, null, 0); } void OpenProbeVolumeDebugPanel(object userData, string[] options, int selected) diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeUI.Drawer.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeUI.Drawer.cs index e19bc6d162b..3d2e2b9b432 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeUI.Drawer.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeUI.Drawer.cs @@ -146,15 +146,6 @@ static void Drawer_VolumeContent(SerializedProbeVolume serialized, Editor owner) EditorGUILayout.LabelField("Subdivision Override", EditorStyles.boldLabel); SubdivisionRange(serialized, maxSubdiv, minDistance); - if (hasProfile) - { - int minSubdivInVolume = serialized.overridesSubdivision.boolValue ? serialized.lowestSubdivisionLevelOverride.intValue : 0; - int maxSubdivInVolume = serialized.overridesSubdivision.boolValue ? serialized.highestSubdivisionLevelOverride.intValue : maxSubdiv; - - EditorGUILayout.HelpBox($"Number of simplification levels will vary between {maxSubdiv - maxSubdivInVolume} and {maxSubdiv - minSubdivInVolume}", MessageType.Info); - } - - EditorGUILayout.Space(); } EditorGUI.EndDisabledGroup(); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset.meta b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset.meta new file mode 100644 index 00000000000..85442358b97 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfcc0fb5ecf4d6c4e8654b6853578ceb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute new file mode 100644 index 00000000000..40cb66736c4 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute @@ -0,0 +1,24 @@ +#define RAYTRACING_BACKEND_COMPUTE +#define GROUP_SIZE_X 16 +#define GROUP_SIZE_Y 1 +#define RAYTRACING_GROUP_SIZE (GROUP_SIZE_X*GROUP_SIZE_Y) + +#include "TraceVirtualOffset.hlsl" + +int g_DispatchWidth; +int g_DispatchHeight; +int g_DispatchDepth; + +#pragma kernel MainRayGenShader + +[numthreads(GROUP_SIZE_X, GROUP_SIZE_Y, 1)] +void MainRayGenShader(uint3 gidx : SV_DispatchThreadID, uint lidx : SV_GroupIndex) +{ + UnifiedRT::DispatchInfo dispatchInfo; + dispatchInfo.dispatchThreadID = gidx; + dispatchInfo.dispatchDimensionsInThreads = int3(g_DispatchWidth, g_DispatchHeight, g_DispatchDepth); + dispatchInfo.localThreadIndex = lidx; + dispatchInfo.globalThreadIndex = gidx.x + gidx.y * g_DispatchWidth + gidx.z * (g_DispatchWidth* g_DispatchHeight); + + RayGenExecute(dispatchInfo); +} diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute.meta b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute.meta new file mode 100644 index 00000000000..bddf368997e --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.compute.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 805f10d263aac4b4098c0279cd37a4f3 +ComputeShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl new file mode 100644 index 00000000000..b091bae65ee --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl @@ -0,0 +1,112 @@ +#include "Packages/com.unity.rendering.light-transport/Runtime/UnifiedRayTracing/FetchGeometry.hlsl" +#include "Packages/com.unity.rendering.light-transport/Runtime/UnifiedRayTracing/TraceRay.hlsl" + +#undef FLT_MAX // fix redefinition warning + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Sampling/Sampling.hlsl" + +#define SAMPLE_COUNT (3*3*3 - 1) + +static const float k0 = 0, k1 = 1, k2 = 0.70710678118654752440084436210485f, k3 = 0.57735026918962576450914878050196f; +static const float3 k_RayDirections[SAMPLE_COUNT] = { + float3(-k3, +k3, -k3), // -1 1 -1 + float3( k0, +k2, -k2), // 0 1 -1 + float3(+k3, +k3, -k3), // 1 1 -1 + float3(-k2, +k2, k0), // -1 1 0 + float3( k0, +k1, k0), // 0 1 0 + float3(+k2, +k2, k0), // 1 1 0 + float3(-k3, +k3, +k3), // -1 1 1 + float3( k0, +k2, +k2), // 0 1 1 + float3(+k3, +k3, +k3), // 1 1 1 + + float3(-k2, k0, -k2), // -1 0 -1 + float3( k0, k0, -k1), // 0 0 -1 + float3(+k2, k0, -k2), // 1 0 -1 + float3(-k1, k0, k0), // -1 0 0 + // k0, k0, k0 - skip center position (which would be a zero-length ray) + float3(+k1, k0, k0), // 1 0 0 + float3(-k2, k0, +k2), // -1 0 1 + float3( k0, k0, +k1), // 0 0 1 + float3(+k2, k0, +k2), // 1 0 1 + + float3(-k3, -k3, -k3), // -1 -1 -1 + float3( k0, -k2, -k2), // 0 -1 -1 + float3(+k3, -k3, -k3), // 1 -1 -1 + float3(-k2, -k2, k0), // -1 -1 0 + float3( k0, -k1, k0), // 0 -1 0 + float3(+k2, -k2, k0), // 1 -1 0 + float3(-k3, -k3, +k3), // -1 -1 1 + float3( k0, -k2, +k2), // 0 -1 1 + float3(+k3, -k3, +k3), // 1 -1 1; +}; + +UNITY_DECLARE_RT_ACCEL_STRUCT(_AccelStruct); + +struct ProbeData +{ + float3 position; + float originBias; + float tMax; + float geometryBias; + float padding2; + float padding3; +}; + +StructuredBuffer _Probes; +RWStructuredBuffer _Offsets; + +void RayGenExecute(UnifiedRT::DispatchInfo dispatchInfo) +{ + ProbeData probe = _Probes[dispatchInfo.globalThreadIndex]; + float3 outDirection = 0.0f; + float maxDotSurface = -1; + float minDist = FLT_MAX; + + UnifiedRT::Ray ray; + ray.tMax = probe.tMax; + ray.tMin = 0.0f; + + UnifiedRT::RayTracingAccelStruct accelStruct = UNITY_GET_RT_ACCEL_STRUCT(_AccelStruct); + + for (uint i = 0; i < SAMPLE_COUNT; ++i) + { + ray.direction = k_RayDirections[i]; + ray.origin = probe.position + probe.originBias * ray.direction; + + UnifiedRT::Hit hit = UnifiedRT::TraceRayClosestHit(dispatchInfo, accelStruct, 0xFFFFFFFF, ray, 0); + + float kDistanceThreshold = 5e-5f; + float kDotThreshold = 1e-2f; + + float distanceDiff = hit.hitDistance - minDist; + if (hit.IsValid() && distanceDiff < kDistanceThreshold) + { + //accelStruct.instanceList[hit.instanceIndex].userMaterialID; + + // If any of the closest hit is outside, we are not inside geometry so we don't want to virtual offset. + // TO VERIFY: Is this too harsh? Should we allow some level of hit of a front face? + if (hit.isFrontFace) + { + outDirection = 0.0f; + break; + } + + UnifiedRT::HitGeomAttributes attributes = UnifiedRT::FetchHitGeomAttributes(accelStruct, hit, UnifiedRT::kGeomAttribFaceNormal); + float dotSurface = dot(ray.direction, attributes.faceNormal); + + // If new distance is smaller by at least kDistanceThreshold, or if ray is at least kDotThreshold more colinear with normal + if (distanceDiff < -kDistanceThreshold || dotSurface - maxDotSurface > kDotThreshold) + { + outDirection = ray.direction; + maxDotSurface = dotSurface; + minDist = hit.hitDistance; + } + } + } + + if (minDist == FLT_MAX) + minDist = 0.0f; + + _Offsets[dispatchInfo.globalThreadIndex] = (minDist * 1.05f + probe.geometryBias) * outDirection; +} diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl.meta b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl.meta new file mode 100644 index 00000000000..c47112a7bb1 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e27d9e40febc1dc47833236fa205216a +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace new file mode 100644 index 00000000000..98a68c09c88 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace @@ -0,0 +1,22 @@ +#define RAYTRACING_BACKEND_HARDWARE +#include "TraceVirtualOffset.hlsl" + +#pragma max_recursion_depth 1 + +[shader("raygeneration")] +void MainRayGenShader() +{ + UnifiedRT::DispatchInfo dispatchInfo; + dispatchInfo.dispatchThreadID = DispatchRaysIndex(); + dispatchInfo.dispatchDimensionsInThreads = DispatchRaysDimensions(); + dispatchInfo.localThreadIndex = 0; + dispatchInfo.globalThreadIndex = DispatchRaysIndex().x + DispatchRaysIndex().y * DispatchRaysDimensions().x + DispatchRaysIndex().z * (DispatchRaysDimensions().x * DispatchRaysDimensions().y); + + RayGenExecute(dispatchInfo); +} + +[shader("miss")] +void MainMissShader0(inout UnifiedRT::Hit hit : SV_RayPayload) +{ + hit.instanceIndex = -1; +} diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace.meta b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace.meta new file mode 100644 index 00000000000..fed2be30f87 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/VirtualOffset/TraceVirtualOffset.raytrace.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b60511f4aa1443f4d8c0b18f4fec92f4 +RayTracingShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Unity.RenderPipelines.Core.Editor.asmdef b/Packages/com.unity.render-pipelines.core/Editor/Unity.RenderPipelines.Core.Editor.asmdef index 8799c2794bd..21a4a1ba1a1 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Unity.RenderPipelines.Core.Editor.asmdef +++ b/Packages/com.unity.render-pipelines.core/Editor/Unity.RenderPipelines.Core.Editor.asmdef @@ -4,7 +4,8 @@ "references": [ "GUID:df380645f10b7bc4b97d4f5eb6303d95", "GUID:2665a8d13d1b3f18800f46e256720795", - "GUID:d8b63aba1907145bea998dd612889d6b" + "GUID:d8b63aba1907145bea998dd612889d6b", + "GUID:214c0945bb158c940aada223f3223ee8" ], "includePlatforms": [ "Editor" diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs index af492c0e8c9..4185b897ac3 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs @@ -1349,11 +1349,6 @@ void PerformPendingLoading() void PerformPendingDeletion() { - if (!m_ProbeReferenceVolumeInit) - { - m_PendingScenesToBeUnloaded.Clear(); // If we are not init, we have not loaded yet. - } - foreach (var unloadRequest in m_PendingScenesToBeUnloaded) { RemovePendingScene(unloadRequest.Key, unloadRequest.Value); @@ -1575,17 +1570,22 @@ internal void Clear() { if (m_ProbeReferenceVolumeInit) { - // Need to do that first because some assets may be in the process of being removed. - PerformPendingOperations(); - - UnloadAllCells(); - m_Pool.Clear(); - m_BlendingPool.Clear(); - m_Index.Clear(); - cells.Clear(); - - Debug.Assert(m_ToBeLoadedCells.size == 0); - Debug.Assert(m_LoadedCells.size == 0); + try + { + // Need to do that first because some assets may be in the process of being removed. + PerformPendingOperations(); + } + finally + { + UnloadAllCells(); + m_Pool.Clear(); + m_BlendingPool.Clear(); + m_Index.Clear(); + cells.Clear(); + + Debug.Assert(m_ToBeLoadedCells.size == 0); + Debug.Assert(m_LoadedCells.size == 0); + } } if (clearAssetsOnVolumeClear) @@ -1914,6 +1914,8 @@ void DeinitProbeReferenceVolume() ClearDebugData(); m_ProbeReferenceVolumeInit = false; + m_PendingScenesToBeUnloaded.Clear(); + m_ActiveScenes.Clear(); } /// diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettings.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettings.cs index 7db4a38421d..7004437ce4e 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettings.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingProcessSettings.cs @@ -28,7 +28,6 @@ internal struct VirtualOffsetSettings [Range(0f, 1f)] public float outOfGeoOffset; [Range(0f, 2f)] public float searchMultiplier; [Range(-0.05f, 0f)] public float rayOriginBias; - [Range(4, 24)] public int maxHitsPerRay; public LayerMask collisionMask; internal void SetDefaults() @@ -44,7 +43,6 @@ internal void UpgradeFromTo(ProbeVolumeBakingProcessSettings.SettingsVersion fro if (from < ProbeVolumeBakingProcessSettings.SettingsVersion.ThreadedVirtualOffset && to >= ProbeVolumeBakingProcessSettings.SettingsVersion.ThreadedVirtualOffset) { rayOriginBias = -0.001f; - maxHitsPerRay = 10; collisionMask = Physics.DefaultRaycastLayers; } } diff --git a/Packages/com.unity.render-pipelines.core/package.json b/Packages/com.unity.render-pipelines.core/package.json index 3723fbcab59..0c70dbf05ca 100644 --- a/Packages/com.unity.render-pipelines.core/package.json +++ b/Packages/com.unity.render-pipelines.core/package.json @@ -9,6 +9,7 @@ "com.unity.ugui": "2.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.terrain": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.rendering.light-transport": "1.0.0" } } \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-settings.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-settings.md index 3a0a8dc6ab2..6c2c94d4742 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-settings.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-settings.md @@ -147,10 +147,6 @@ This section appears only if you enable **Lighting Scenarios** under **Light Pro Ray Origin bias Set the distance between a probe's center and the point HDRP uses to determine the origin of that probe's sampling ray. High values may cause unwanted results, such as sampling from an area of the scene with dissimilar lighting. - - Max Ray Hits - Set how many times a sampling ray hits geometry before HDRP determines the position of the probe where that ray originated. - Layer Mask Specify which layers HDRP includes in collision calculations for [Virtual Offset](probevolumes-fixissues.html). diff --git a/Tests/SRPTests/Projects/BatchRendererGroup_HDRP/Packages/manifest.json b/Tests/SRPTests/Projects/BatchRendererGroup_HDRP/Packages/manifest.json index d46f2c8d35f..740a0573ce8 100644 --- a/Tests/SRPTests/Projects/BatchRendererGroup_HDRP/Packages/manifest.json +++ b/Tests/SRPTests/Projects/BatchRendererGroup_HDRP/Packages/manifest.json @@ -13,6 +13,7 @@ "com.unity.ide.visualstudio": "2.0.1", "com.unity.mathematics": "1.2.1", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.high-definition": "file:../../../../../Packages/com.unity.render-pipelines.high-definition", "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", diff --git a/Tests/SRPTests/Projects/BatchRendererGroup_URP/Packages/manifest.json b/Tests/SRPTests/Projects/BatchRendererGroup_URP/Packages/manifest.json index 1301f1a5f3a..77281bd3c11 100644 --- a/Tests/SRPTests/Projects/BatchRendererGroup_URP/Packages/manifest.json +++ b/Tests/SRPTests/Projects/BatchRendererGroup_URP/Packages/manifest.json @@ -13,6 +13,7 @@ "com.unity.ide.visualstudio": "2.0.17", "com.unity.mathematics": "1.2.1", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", "local.utf.references": "file:../../../Packages/local.utf.references", diff --git a/Tests/SRPTests/Projects/BuiltInGraphicsTest_Foundation/Packages/manifest.json b/Tests/SRPTests/Projects/BuiltInGraphicsTest_Foundation/Packages/manifest.json index 8e5ad6187a4..4f4d2511cf7 100644 --- a/Tests/SRPTests/Projects/BuiltInGraphicsTest_Foundation/Packages/manifest.json +++ b/Tests/SRPTests/Projects/BuiltInGraphicsTest_Foundation/Packages/manifest.json @@ -9,6 +9,7 @@ "com.unity.ide.vscode": "1.1.3", "com.unity.nuget.newtonsoft-json": "2.0.1-preview.1", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", "local.utf.references": "file:../../../Packages/local.utf.references", diff --git a/Tests/SRPTests/Projects/BuiltInGraphicsTest_Lighting/Packages/manifest.json b/Tests/SRPTests/Projects/BuiltInGraphicsTest_Lighting/Packages/manifest.json index 8e5ad6187a4..4f4d2511cf7 100644 --- a/Tests/SRPTests/Projects/BuiltInGraphicsTest_Lighting/Packages/manifest.json +++ b/Tests/SRPTests/Projects/BuiltInGraphicsTest_Lighting/Packages/manifest.json @@ -9,6 +9,7 @@ "com.unity.ide.vscode": "1.1.3", "com.unity.nuget.newtonsoft-json": "2.0.1-preview.1", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", "local.utf.references": "file:../../../Packages/local.utf.references", diff --git a/Tests/SRPTests/Projects/HDRP_DXR_Tests/Packages/manifest.json b/Tests/SRPTests/Projects/HDRP_DXR_Tests/Packages/manifest.json index ddde972eb85..ba39e357216 100644 --- a/Tests/SRPTests/Projects/HDRP_DXR_Tests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/HDRP_DXR_Tests/Packages/manifest.json @@ -4,6 +4,7 @@ "dependencies": { "com.unity.ide.visualstudio": "2.0.0", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.high-definition": "file:../../../../../Packages/com.unity.render-pipelines.high-definition", "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.rendering.denoising": "1.0.4", diff --git a/Tests/SRPTests/Projects/HDRP_PerformanceTests/Packages/manifest.json b/Tests/SRPTests/Projects/HDRP_PerformanceTests/Packages/manifest.json index 8d88445f7b7..e7b446a8086 100644 --- a/Tests/SRPTests/Projects/HDRP_PerformanceTests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/HDRP_PerformanceTests/Packages/manifest.json @@ -4,6 +4,7 @@ "com.unity.ide.visualstudio": "2.0.0", "com.unity.ide.vscode": "1.2.0", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.high-definition": "file:../../../../../Packages/com.unity.render-pipelines.high-definition", "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.shaderanalysis": "file:../../../../../Packages/com.unity.shaderanalysis", diff --git a/Tests/SRPTests/Projects/HDRP_RuntimeTests/Packages/manifest.json b/Tests/SRPTests/Projects/HDRP_RuntimeTests/Packages/manifest.json index 414511e6c90..63a3c46022a 100644 --- a/Tests/SRPTests/Projects/HDRP_RuntimeTests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/HDRP_RuntimeTests/Packages/manifest.json @@ -4,6 +4,7 @@ "com.unity.ide.visualstudio": "2.0.0", "com.unity.ide.vscode": "1.1.3", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.high-definition": "file:../../../../../Packages/com.unity.render-pipelines.high-definition", "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking.unity b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking.unity index edc271df6f1..766a2b8ca06 100644 --- a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking.unity +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 9 + serializedVersion: 10 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -44,7 +44,6 @@ RenderSettings: LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 12 - m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -95,8 +94,7 @@ LightmapSettings: m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 112000004, guid: 58bd66709360b2847b07fe7404fd3f44, - type: 2} + m_LightingDataAsset: {fileID: 0} m_LightingSettings: {fileID: 4890085278179872738, guid: 83c11cb8eb865774787cad42d3095123, type: 2} --- !u!196 &4 @@ -158,6 +156,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -198,13 +198,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 15395105} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2.25, y: 5.25, z: 2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &174787484 GameObject: @@ -229,6 +229,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 174787484} + serializedVersion: 2 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} @@ -237,7 +238,6 @@ Transform: - {fileID: 1725355994} - {fileID: 1088673094} m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &213545934 GameObject: @@ -274,6 +274,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -314,13 +316,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 213545934} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.75, y: 2.25, z: -0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &339303381 GameObject: @@ -357,6 +359,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -397,13 +401,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 339303381} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.75, y: 2.25, z: -0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &421175317 GameObject: @@ -440,6 +444,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -480,13 +486,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 421175317} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2.25, y: 3.75, z: 0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &445915072 GameObject: @@ -523,6 +529,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -563,13 +571,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 445915072} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2.25, y: 3.75, z: 0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &491812818 GameObject: @@ -606,6 +614,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -646,13 +656,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 491812818} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2.25, y: 0.75, z: -2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &594045504 GameObject: @@ -689,6 +699,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -729,13 +741,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 594045504} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.75, y: 0.75, z: -2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &703353110 PrefabInstance: @@ -1145,7 +1157,7 @@ MonoBehaviour: falloffMode: 0 maskMode: 0 materialMask: {fileID: 0} - m_Version: 2 + m_Version: 3 --- !u!4 &878726706 Transform: m_ObjectHideFlags: 0 @@ -1153,13 +1165,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 878726704} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3, z: 1.2759334} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &900459071 GameObject: @@ -1190,11 +1202,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a83d2f7ae04ab6f4f99b0d85377be998, type: 3} m_Name: m_EditorClassIdentifier: - asset: {fileID: 0} - sceneGUID: - cellSharedDataAsset: {fileID: 0} - cellSupportDataAsset: {fileID: 0} - serializedScenarios: + bakingSet: {fileID: 0} + sceneGUID: fc784678bf952de4482e78aea61ccdc8 + obsoleteAsset: {fileID: 0} + obsoleteCellSharedDataAsset: {fileID: 0} + obsoleteCellSupportDataAsset: {fileID: 0} + obsoleteSerializedScenarios: - scenario: Default data: sceneHash: -739037272 @@ -1207,13 +1220,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 900459071} + serializedVersion: 2 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_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &993487583 GameObject: @@ -1240,13 +1253,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 993487583} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.75, y: 3.75, z: 0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &993487585 MeshRenderer: @@ -1265,6 +1278,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1337,7 +1352,7 @@ MonoBehaviour: lowestSubdivLevelOverride: 0 highestSubdivLevelOverride: 0 overridesSubdivLevels: 0 - mightNeedRebaking: 0 + mightNeedRebaking: 1 cachedTransform: e00: 1 e01: 0 @@ -1355,7 +1370,7 @@ MonoBehaviour: e31: 0 e32: 0 e33: 1 - cachedHashCode: 2097291330 + cachedHashCode: -1098303298 fillEmptySpaces: 0 version: 1 globalVolume: 1 @@ -1366,13 +1381,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1032115242} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3.2024999, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1061647958 GameObject: @@ -1409,6 +1424,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1449,13 +1466,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1061647958} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.75, y: 0.75, z: -2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1088673093 GameObject: @@ -1482,13 +1499,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1088673093} + serializedVersion: 2 m_LocalRotation: {x: 0.7071065, y: -0, z: -0, w: 0.7071072} m_LocalPosition: {x: 0, y: 5.326, z: -2.04} m_LocalScale: {x: 2.4, y: 1, z: 0.95999986} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 174787485} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 0} --- !u!23 &1088673095 MeshRenderer: @@ -1507,6 +1524,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1575,6 +1594,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1615,13 +1636,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1178675243} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2.25, y: 5.25, z: 2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1306547388 GameObject: @@ -1658,6 +1679,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1698,13 +1721,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1306547388} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.75, y: 5.25, z: 2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1331608283 GameObject: @@ -1736,6 +1759,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} m_Name: m_EditorClassIdentifier: + m_PointlightHDType: 1 + m_SpotLightShape: 0 + m_AreaLightShape: 0 m_Intensity: 200 m_EnableSpotReflector: 0 m_LuxAtDistance: 1 @@ -1767,9 +1793,17 @@ MonoBehaviour: m_UseScreenSpaceShadows: 0 m_InteractsWithSky: 1 m_AngularDiameter: 0 + m_DiameterMultiplerMode: 1 + m_DiameterMultiplier: 1 + m_DiameterOverride: 0.5 + m_EmissiveLightSource: 1 m_FlareSize: 2 m_FlareTint: {r: 1, g: 1, b: 1, a: 1} m_FlareFalloff: 4 + m_AutomaticMoonPhase: 1 + m_MoonPhase: 0.2 + m_MoonPhaseRotation: 0 + m_Earthshine: 1 m_SurfaceTexture: {fileID: 0} m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1} m_Distance: 150000000 @@ -1792,6 +1826,14 @@ MonoBehaviour: m_BlockerSampleCount: 24 m_FilterSampleCount: 32 m_MinFilterSize: 0.01 + m_DirLightPCSSBlockerSampleCount: 24 + m_DirLightPCSSFilterSampleCount: 16 + m_DirLightPCSSMaxBlockerDistance: 64 + m_DirLightPCSSMaxSamplingDistance: 0.5 + m_DirLightPCSSMinFilterSizeTexels: 1.5 + m_DirLightPCSSMinFilterMaxAngularDiameter: 10 + m_DirLightPCSSBlockerSearchAngularDiameter: 12 + m_DirLightPCSSBlockerSamplingClumpExponent: 2 m_KernelSize: 5 m_LightAngle: 1 m_MaxDepthBias: 0.001 @@ -1838,14 +1880,11 @@ MonoBehaviour: m_AreaLightEmissiveMeshShadowCastingMode: 0 m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 m_AreaLightEmissiveMeshLayer: -1 - m_Version: 11 + m_Version: 12 m_ObsoleteShadowResolutionTier: 1 m_ObsoleteUseShadowQualitySettings: 0 m_ObsoleteCustomShadowResolution: 512 m_ObsoleteContactShadows: 0 - m_PointlightHDType: 1 - m_SpotLightShape: 0 - m_AreaLightShape: 0 --- !u!108 &1331608286 Light: m_ObjectHideFlags: 0 @@ -1854,9 +1893,8 @@ Light: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1331608283} m_Enabled: 1 - serializedVersion: 10 - m_Type: 2 - m_Shape: 0 + serializedVersion: 11 + m_Type: 3 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 7.0735526 m_Range: 10 @@ -1915,13 +1953,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1331608283} + serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 6.171, z: 0} m_LocalScale: {x: 0.6, y: 0.6, z: 0.6} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} --- !u!1 &1368634317 GameObject: @@ -1958,6 +1996,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -1998,13 +2038,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1368634317} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.75, y: 5.25, z: 2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1378461305 GameObject: @@ -2047,13 +2087,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1378461305} + serializedVersion: 2 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_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1443910206 GameObject: @@ -2090,6 +2130,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2130,13 +2172,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1443910206} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.75, y: 3.75, z: 0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1492081487 GameObject: @@ -2173,6 +2215,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2213,13 +2257,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1492081487} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2.25, y: 2.25, z: -0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1644068431 GameObject: @@ -2256,6 +2300,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2296,13 +2342,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1644068431} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2.25, y: 0.75, z: -2.25} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1700685542 GameObject: @@ -2327,6 +2373,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1700685542} + serializedVersion: 2 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} @@ -2349,7 +2396,6 @@ Transform: - {fileID: 1368634321} - {fileID: 15395109} m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1725026262 GameObject: @@ -2387,13 +2433,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1725026262} + serializedVersion: 2 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_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1725355993 GameObject: @@ -2420,13 +2466,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1725355993} + serializedVersion: 2 m_LocalRotation: {x: 0.38268322, y: -0, z: -0, w: 0.9238797} m_LocalPosition: {x: 0, y: 1.5, z: 1.5} m_LocalScale: {x: 1.5, y: 1, z: 1.4999999} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 174787485} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 45.000004, y: 0, z: 0} --- !u!23 &1725355995 MeshRenderer: @@ -2445,6 +2491,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2513,6 +2561,8 @@ MeshRenderer: m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 m_RenderingLayerMask: 4294967295 m_RendererPriority: 0 m_Materials: @@ -2553,13 +2603,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1816145187} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2.25, y: 2.25, z: -0.75} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1700685543} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &2077743424 PrefabInstance: @@ -2611,3 +2661,17 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9c31666db73c94448ad9133b2aeff0e5, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 703353110} + - {fileID: 2077743424} + - {fileID: 1032115244} + - {fileID: 1331608287} + - {fileID: 1700685543} + - {fileID: 174787485} + - {fileID: 878726706} + - {fileID: 1378461307} + - {fileID: 900459073} + - {fileID: 1725026264} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/Default.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/Default.asset index 02532d841e5..eb347fb6400 100644 --- a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/Default.asset +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/Default.asset @@ -24,50 +24,46 @@ MonoBehaviour: virtualOffsetSettings: useVirtualOffset: 1 outOfGeoOffset: 0.01 - searchMultiplier: 0.2 + searchMultiplier: 0.3 rayOriginBias: -0.001 - maxHitsPerRay: 10 collisionMask: serializedVersion: 2 m_Bits: 4294967291 m_SceneGUIDs: - fc784678bf952de4482e78aea61ccdc8 scenesToNotBake: [] - lightingScenarios: + m_LightingScenarios: - Default cellDescs: m_Keys: m_Values: [] - cellCounts: - m_Keys: - m_Values: [] m_SerializedPerSceneCellList: - sceneGUID: fc784678bf952de4482e78aea61ccdc8 cellList: cellSharedDataAsset: - assetGUID: - streamableAssetPath: - streamableCellDescs: + m_AssetGUID: + m_StreamableAssetPath: + m_ElementSize: 0 + m_StreamableCellDescs: m_Keys: m_Values: [] - elementSize: 0 scenarios: m_Keys: [] m_Values: [] cellBricksDataAsset: - assetGUID: - streamableAssetPath: - streamableCellDescs: + m_AssetGUID: + m_StreamableAssetPath: + m_ElementSize: 0 + m_StreamableCellDescs: m_Keys: m_Values: [] - elementSize: 0 cellSupportDataAsset: - assetGUID: - streamableAssetPath: - streamableCellDescs: + m_AssetGUID: + m_StreamableAssetPath: + m_ElementSize: 0 + m_StreamableCellDescs: m_Keys: m_Values: [] - elementSize: 0 chunkSizeInBricks: 128 maxCellPosition: {x: 0, y: 0, z: 0} minCellPosition: {x: -1, y: -1, z: -1} @@ -76,6 +72,7 @@ MonoBehaviour: m_Extent: {x: 81, y: 81, z: 81} bakedSimplificationLevels: 3 bakedMinDistanceBetweenProbes: 1 + maxSHChunkCount: 1 L0ChunkSize: 65536 L1ChunkSize: 32768 L2TextureChunkSize: 32768 @@ -85,9 +82,6 @@ MonoBehaviour: supportTouchupChunkSize: 32768 supportOffsetsChunkSize: 98304 supportDataChunkSize: 262144 - totalCellCounts: - bricksCount: 64 - chunksCount: 8 lightingScenario: Default version: 0 freezePlacement: 0 diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/LightingData.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking/LightingData.asset index 847da00d497591bf73bfe145571e2218dece3a46..6fa060cf84033b2cb6dec6f6ae29fa4ff4178968 100644 GIT binary patch literal 255640 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 *bzF!5X)z>RVU0<+u?vJdW3?CN7&Vy6+rHrSM4 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 Jk8bu3{~M$0I6D9U diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Packages/manifest.json b/Tests/SRPTests/Projects/HDRP_Tests/Packages/manifest.json index 67aa388d312..db114505645 100644 --- a/Tests/SRPTests/Projects/HDRP_Tests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/HDRP_Tests/Packages/manifest.json @@ -5,8 +5,8 @@ "com.unity.formats.alembic": "2.3.0", "com.unity.ide.rider": "3.0.16", "com.unity.ide.visualstudio": "2.0.0", - "com.unity.ide.vscode": "1.1.3", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.render-pipelines.high-definition": "file:../../../../../Packages/com.unity.render-pipelines.high-definition", "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", diff --git a/Tests/SRPTests/Projects/MultipleSRP_Tests/Packages/manifest.json b/Tests/SRPTests/Projects/MultipleSRP_Tests/Packages/manifest.json index 1400a6cb34b..31bd740819e 100644 --- a/Tests/SRPTests/Projects/MultipleSRP_Tests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/MultipleSRP_Tests/Packages/manifest.json @@ -8,6 +8,7 @@ "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", "com.unity.timeline": "1.8.0", diff --git a/Tests/SRPTests/Projects/RPCore_PerformanceTests/Packages/manifest.json b/Tests/SRPTests/Projects/RPCore_PerformanceTests/Packages/manifest.json index ef1773c01d2..84ba611c8c1 100644 --- a/Tests/SRPTests/Projects/RPCore_PerformanceTests/Packages/manifest.json +++ b/Tests/SRPTests/Projects/RPCore_PerformanceTests/Packages/manifest.json @@ -4,6 +4,7 @@ "dependencies": { "com.unity.feature.development": "1.0.2", "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.test-framework.performance": "3.0.2", "com.unity.ugui": "2.0.0", "local.utf.references": "file:../../../Packages/local.utf.references", diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Packages/manifest.json b/Tests/SRPTests/Projects/SRP_SmokeTest/Packages/manifest.json index 878448a8a3c..399ae795c60 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/Packages/manifest.json +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Packages/manifest.json @@ -11,6 +11,7 @@ "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", diff --git a/Tests/SRPTests/Projects/ShaderGraph/Packages/manifest.json b/Tests/SRPTests/Projects/ShaderGraph/Packages/manifest.json index 6c01a8f1dfe..05d60844a30 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Packages/manifest.json +++ b/Tests/SRPTests/Projects/ShaderGraph/Packages/manifest.json @@ -5,6 +5,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.visualeffectgraph": "file:../../../../../Packages/com.unity.visualeffectgraph", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", diff --git a/Tests/SRPTests/Projects/ShaderGraphUniversalStereo/Packages/manifest.json b/Tests/SRPTests/Projects/ShaderGraphUniversalStereo/Packages/manifest.json index 91fcc303702..d66f38db6f8 100644 --- a/Tests/SRPTests/Projects/ShaderGraphUniversalStereo/Packages/manifest.json +++ b/Tests/SRPTests/Projects/ShaderGraphUniversalStereo/Packages/manifest.json @@ -7,6 +7,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", "com.unity.ugui": "2.0.0", diff --git a/Tests/SRPTests/Projects/UniversalGfxTestStereo/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGfxTestStereo/Packages/manifest.json index 91fcc303702..d66f38db6f8 100644 --- a/Tests/SRPTests/Projects/UniversalGfxTestStereo/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGfxTestStereo/Packages/manifest.json @@ -7,6 +7,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", "com.unity.ugui": "2.0.0", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Packages/manifest.json index cb06930cc32..4757972ab6f 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Packages/manifest.json @@ -11,6 +11,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.testing.urp": "file:../../../Packages/com.unity.testing.urp", "com.unity.visualeffectgraph": "file:../../../../../Packages/com.unity.visualeffectgraph", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json index ac6c158cf94..b86afa50a00 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json @@ -12,6 +12,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Lighting/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_Lighting/Packages/manifest.json index 909dfc9f893..75baa3c5324 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Lighting/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Lighting/Packages/manifest.json @@ -11,6 +11,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Packages/manifest.json index e330cc69c88..a93dc70ba24 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_PostPro/Packages/manifest.json @@ -12,6 +12,7 @@ "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.testing.hdr-faking": "file:../../../Packages/com.unity.testing.hdr-faking", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Terrain/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_Terrain/Packages/manifest.json index 0a742fff631..74ef81c6fe7 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Terrain/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Terrain/Packages/manifest.json @@ -11,6 +11,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.code.coverage.references": "file:../../../Packages/local.code.coverage.references", "local.utf.references": "file:../../../Packages/local.utf.references", "local.gtf.references": "file:../../../Packages/local.gtf.references", diff --git a/Tests/SRPTests/Projects/UniversalUpgradeTest/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalUpgradeTest/Packages/manifest.json index b6dcf8ab904..d39602b3bfb 100644 --- a/Tests/SRPTests/Projects/UniversalUpgradeTest/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalUpgradeTest/Packages/manifest.json @@ -8,6 +8,7 @@ "com.unity.render-pipelines.core": "file:../../../../../Packages/com.unity.render-pipelines.core", "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "local.utf.references": "file:../../../Packages/local.utf.references", "com.unity.timeline": "1.6.0-pre.3", "com.unity.ugui": "2.0.0", diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_HDRP/Packages/manifest.json b/Tests/SRPTests/Projects/VisualEffectGraph_HDRP/Packages/manifest.json index 749f608501c..8924d77cf7e 100644 --- a/Tests/SRPTests/Projects/VisualEffectGraph_HDRP/Packages/manifest.json +++ b/Tests/SRPTests/Projects/VisualEffectGraph_HDRP/Packages/manifest.json @@ -11,6 +11,7 @@ "com.unity.render-pipelines.high-definition-config": "file:../../../../../Packages/com.unity.render-pipelines.high-definition-config", "com.unity.shaderanalysis": "file:../../../../../Packages/com.unity.shaderanalysis", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.testing.graphics-performance": "file:../../../Packages/com.unity.testing.graphics-performance", "com.unity.testing.visualeffectgraph": "file:../../../Packages/com.unity.testing.visualeffectgraph", "com.unity.testing.xr": "file:../../../Packages/com.unity.testing.xr", diff --git a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Packages/manifest.json b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Packages/manifest.json index 23c1549c886..0c1559cfd2a 100644 --- a/Tests/SRPTests/Projects/VisualEffectGraph_URP/Packages/manifest.json +++ b/Tests/SRPTests/Projects/VisualEffectGraph_URP/Packages/manifest.json @@ -9,6 +9,7 @@ "com.unity.render-pipelines.universal": "file:../../../../../Packages/com.unity.render-pipelines.universal", "com.unity.shaderanalysis": "file:../../../../../Packages/com.unity.shaderanalysis", "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", + "com.unity.rendering.light-transport": "file:../../../../../Packages/com.unity.rendering.light-transport", "com.unity.testing.graphics-performance": "file:../../../Packages/com.unity.testing.graphics-performance", "com.unity.testing.visualeffectgraph": "file:../../../Packages/com.unity.testing.visualeffectgraph", "com.unity.testing.xr": "file:../../../Packages/com.unity.testing.xr", From 3a5005b2e9755e50724fee4b381fff3b23005f44 Mon Sep 17 00:00:00 2001 From: Adrien de Tocqueville Date: Wed, 30 Aug 2023 16:10:07 +0000 Subject: [PATCH 05/13] [APV][URP] Fix shader stripper URP strips the LIGHTMAP_ON variants when apv is enabled, which prevents having both at the same time. Additionally, i changed a message type from error to warning as discussed here https://unity.slack.com/archives/C0108P9UH6H/p1692089553002919 --- .../Lighting/ProbeVolume/ProbeVolumeEditor.cs | 7 ++-- .../Editor/ShaderScriptableStripper.cs | 14 ------- .../Editor/ShaderScriptableStripperTests.cs | 42 ------------------- 3 files changed, 4 insertions(+), 59 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs index e0e4c578acc..de1272ab611 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeEditor.cs @@ -35,6 +35,7 @@ internal static void APVDisabledHelpBox() { string apvDisabledErrorMsg = "Probe Volumes are not enabled."; var renderPipelineAssetType = GraphicsSettings.currentRenderPipelineAssetType; + var messageType = MessageType.Warning; // HDRP if (renderPipelineAssetType != null && renderPipelineAssetType.Name == "HDRenderPipelineAsset") @@ -52,7 +53,7 @@ internal static void APVDisabledHelpBox() var k_QualitySettingsHelpBox = Type.GetType("UnityEditor.Rendering.HighDefinition.HDEditorUtils,Unity.RenderPipelines.HighDefinition.Editor") .GetMethod("QualitySettingsHelpBoxForReflection", BindingFlags.Static | BindingFlags.NonPublic); - k_QualitySettingsHelpBox.Invoke(null, new object[] { apvDisabledErrorMsg, MessageType.Error, lightingGroup, probeVolume, "m_RenderPipelineSettings.lightProbeSystem" }); + k_QualitySettingsHelpBox.Invoke(null, new object[] { apvDisabledErrorMsg, messageType, lightingGroup, probeVolume, "m_RenderPipelineSettings.lightProbeSystem" }); } // URP @@ -63,13 +64,13 @@ internal static void APVDisabledHelpBox() var k_QualitySettingsHelpBox = Type.GetType("UnityEditor.Rendering.Universal.EditorUtils,Unity.RenderPipelines.Universal.Editor") .GetMethod("QualitySettingsHelpBox", BindingFlags.Static | BindingFlags.NonPublic); - k_QualitySettingsHelpBox.Invoke(null, new object[] { apvDisabledErrorMsg, MessageType.Error, "m_LightProbeSystem" }); + k_QualitySettingsHelpBox.Invoke(null, new object[] { apvDisabledErrorMsg, messageType, "m_LightProbeSystem" }); } // Custom pipelines else { - EditorGUILayout.HelpBox(apvDisabledErrorMsg, MessageType.Error); + EditorGUILayout.HelpBox(apvDisabledErrorMsg, messageType); } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs index 3435f7127ee..4f492c3e087 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderScriptableStripper.cs @@ -809,16 +809,6 @@ internal bool StripUnsupportedVariants_DirectionalLightmap(ref IShaderScriptable return false; } - internal bool StripUnsupportedVariants_LightmapProbes(ref IShaderScriptableStrippingData strippingData) - { - // We can strip shaders where both lightmaps and probe volumes are enabled - if ((strippingData.IsKeywordEnabled(m_Lightmap) || strippingData.IsKeywordEnabled(m_DynamicLightmap)) - && (strippingData.IsKeywordEnabled(m_ProbeVolumesL1) || strippingData.IsKeywordEnabled(m_ProbeVolumesL2))) - return true; - - return false; - } - internal bool StripUnsupportedVariants_EditorVisualization(ref IShaderScriptableStrippingData strippingData) { // Editor visualization is only used in scene view debug modes. @@ -834,10 +824,6 @@ internal bool StripUnsupportedVariants(ref IShaderScriptableStrippingData stripp if (StripUnsupportedVariants_DirectionalLightmap(ref strippingData)) return true; - // We can strip shaders where both lightmaps and probe volumes are enabled - if (StripUnsupportedVariants_LightmapProbes(ref strippingData)) - return true; - if (StripUnsupportedVariants_EditorVisualization(ref strippingData)) return true; diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderScriptableStripperTests.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderScriptableStripperTests.cs index 8a6d33ab3c5..cd2fc2196ca 100644 --- a/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderScriptableStripperTests.cs +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/ShaderScriptableStripperTests.cs @@ -587,7 +587,6 @@ public void TestStripUnsupportedVariants(string shaderName, bool expectedDirLigh Shader shader = Shader.Find(shaderName); StripUnsupportedVariants_DirectionalLightmap(shader, expectedDirLightmap); - StripUnsupportedVariants_LightmapProbes(shader, expectedLightmapProbes); StripUnsupportedVariants_EditorVisualization(shader, expectedEditorVizualization); } @@ -615,47 +614,6 @@ public void StripUnsupportedVariants_DirectionalLightmap(Shader shader, bool exp helper.IsFalse(helper.stripper.StripUnsupportedVariants(ref helper.data)); } - public void StripUnsupportedVariants_LightmapProbes(Shader shader, bool expectedLightmapProbes) - { - TestHelper helper; - - helper = new TestHelper(shader, ShaderFeatures.None); - helper.IsFalse(helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.IsFalse(helper.stripper.StripUnsupportedVariants(ref helper.data)); - - // Lightmap - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.LIGHTMAP_ON}; - helper.IsFalse(helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.IsFalse(helper.stripper.StripUnsupportedVariants(ref helper.data)); - - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.LIGHTMAP_ON, ShaderKeywordStrings.ProbeVolumeL1}; - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants(ref helper.data)); - - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.LIGHTMAP_ON, ShaderKeywordStrings.ProbeVolumeL2}; - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants(ref helper.data)); - - // Dynamic Lightmap - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.DYNAMICLIGHTMAP_ON}; - helper.IsFalse(helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.IsFalse(helper.stripper.StripUnsupportedVariants(ref helper.data)); - - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.DYNAMICLIGHTMAP_ON, ShaderKeywordStrings.ProbeVolumeL1}; - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants(ref helper.data)); - - helper = new TestHelper(shader, ShaderFeatures.None); - TestHelper.s_EnabledKeywords = new List{ShaderKeywordStrings.DYNAMICLIGHTMAP_ON, ShaderKeywordStrings.ProbeVolumeL2}; - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants_LightmapProbes(ref helper.data)); - helper.AreEqual(expectedLightmapProbes, helper.stripper.StripUnsupportedVariants(ref helper.data)); - } - public void StripUnsupportedVariants_EditorVisualization(Shader shader, bool expectedEditorVizualization) { TestHelper helper; From 835c6a228eb37a6beb04ae8b513023c749503dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvar=20=C3=96rn=20Unn=C3=BE=C3=B3rsson?= Date: Wed, 30 Aug 2023 16:10:33 +0000 Subject: [PATCH 06/13] [URP[[2023.3] Fixing rendering layers not updated when opening a project. (UUM-44741) Fixes UUM-44741. The issue was that the property for getting rendering layers didn't update until the user clicked on a renderer in a scene. The fix is to make sure the property checks if it has been initialized when retrieving it. --- .../Runtime/UniversalRenderPipelineGlobalSettings.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs index 769350f1413..d7fe9f60174 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineGlobalSettings.cs @@ -200,7 +200,15 @@ string[] prefixedRenderingLayerNames [SerializeField] uint m_ValidRenderingLayers; /// Valid rendering layers that can be used by graphics. - public uint validRenderingLayers => m_ValidRenderingLayers; + public uint validRenderingLayers { + get + { + if (m_PrefixedRenderingLayerNames == null) + UpdateRenderingLayerNames(); + + return m_ValidRenderingLayers; + } + } /// Regenerate Rendering Layer names and their prefixed versions. internal void UpdateRenderingLayerNames() From 66dd6af702934f3efa327a65965965ea6f7bcb0b Mon Sep 17 00:00:00 2001 From: Kristin Lague Date: Wed, 30 Aug 2023 23:00:20 +0000 Subject: [PATCH 07/13] [SRP] Simplifying Light Probe Group UI Warning image - Implementing suggested changes from https://github.cds.internal.unity3d.com/unity/unity/pull/33908 - Simplifying warning messages to use one for both Pipeline (Text Approved by @davidl ) --- .../Runtime/RenderPipeline/HDRenderPipeline.cs | 1 - .../Runtime/UniversalRenderPipeline.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index 7ddbbe21e63..3ca6e791258 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -624,7 +624,6 @@ public HDRenderPipeline(HDRenderPipelineAsset asset) supportGPUStreaming = m_Asset.currentPlatformRenderPipelineSettings.supportProbeVolumeGPUStreaming }); RegisterRetrieveOfProbeVolumeExtraDataAction(); - SupportedRenderingFeatures.active.overridesLightProbeSystemWarningMessage = "This Light Probe system is not active because the pipeline uses Probe Volumes and the systems cannot co-exist. To disable Probe Volumes make sure the feature is disabled in the lighting section of the active HDRP Asset."; } m_SkyManager.Build(asset, runtimeResources, m_IBLFilterArray); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 2a5827a1407..26b36bf6946 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -272,7 +272,6 @@ public UniversalRenderPipeline(UniversalRenderPipelineAsset asset) supportDiskStreaming = false, supportScenarios = false }); - SupportedRenderingFeatures.active.overridesLightProbeSystemWarningMessage = "This Light Probe system is not active because the pipeline uses Probe Volumes and the systems cannot co-exist.\nTo disable Probe Volumes make sure the feature is disabled in the lighting section of the active URP Asset."; } } From 0897cc5aefa87403d6fbb882783bb83c8f904347 Mon Sep 17 00:00:00 2001 From: Adrien de Tocqueville Date: Wed, 30 Aug 2023 23:00:24 +0000 Subject: [PATCH 08/13] [Water] Fix crash on OSX local builds due to buffer format Fixed crash on OSX due to buffer format --- .../Runtime/Water/HDRenderPipeline.WaterSystem.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs index 58c48745241..8dc3a16bcea 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs @@ -1074,8 +1074,7 @@ WaterGBuffer RenderWaterGBuffer(RenderGraph renderGraph, CullingResults cull, HD { colorFormat = GraphicsFormat.R8G8B8A8_UNorm, enableRandomWrite = true, name = "Water GBuffer 3", fallBackToBlackTexture = true }); BufferHandle indirectBuffer = renderGraph.CreateBuffer(new BufferDesc((WaterConsts.k_NumWaterVariants + 1) * 3, sizeof(uint), GraphicsBuffer.Target.IndirectArguments) { name = "Water Deferred Indirect" }); - BufferHandle tileBuffer = renderGraph.CreateBuffer(new BufferDesc((WaterConsts.k_NumWaterVariants + 1) * numTiles * m_MaxViewCount, - sizeof(uint), GraphicsBuffer.Target.Append) { name = "Water Deferred Tiles" }); + BufferHandle tileBuffer = renderGraph.CreateBuffer(new BufferDesc((WaterConsts.k_NumWaterVariants + 1) * numTiles * m_MaxViewCount, sizeof(uint)) { name = "Water Deferred Tiles" }); // Set the textures handles for the water gbuffer outputGBuffer.waterGBuffer0 = WaterGbuffer0; From 21a4bc73d53ea8f8a46d6a53555a95ebf97f0949 Mon Sep 17 00:00:00 2001 From: Joseph Savell Date: Wed, 30 Aug 2023 23:00:25 +0000 Subject: [PATCH 09/13] [UUM-46770] Fix performance regression when adding new nodes *[See [this document](https://docs.google.com/document/d/1C4Vc7dOKgoZ2mNqMdugHDg-w6iN7iUYdlBQMGDmVS3E/edit) for details on what can land in 2023.3.]* This PR fixes https://jira.unity3d.com/browse/UUM-46770, improving graph edit times in the attached customer project. While initially thought to be caused by Linq usage, a bisection revealed https://github.cds.internal.unity3d.com/unity/unity/pull/26421 to be causing excessive updates. --- .../Editor/Data/Nodes/AbstractMaterialNode.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/AbstractMaterialNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/AbstractMaterialNode.cs index 7d00d55a920..e6ad83a1c60 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/AbstractMaterialNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/AbstractMaterialNode.cs @@ -75,6 +75,10 @@ public void UnregisterCallback(OnNodeModified callback) public void Dirty(ModificationScope scope) { + // Calling m_OnModified immediately upon dirtying the node can result in a lot of churn. For example, + // nodes can cause cascading view updates *multiple times* per operation. + // If this call causes future performance issues, we should investigate some kind of deferral or early out + // until all of the dirty nodes have been identified. if (m_OnModified != null) m_OnModified(this, scope); NodeValidation.HandleValidationExtensions(this); @@ -731,7 +735,6 @@ public virtual void Concretize() UpdatePrecision(inputSlots); EvaluateDynamicMaterialSlots(inputSlots, outputSlots); - Dirty(ModificationScope.Topological); } } From 0fdd0f40a58cc14c41229dcc8bd2a07f205a472b Mon Sep 17 00:00:00 2001 From: Julien Ignace Date: Wed, 30 Aug 2023 23:00:32 +0000 Subject: [PATCH 10/13] Fixed Screenshots and shader variant list for some HDRP Tests Fixed Screenshots and shader variant list for some HDRP Tests --- .../Default.shadervariantlist | 385 ++++++++++-------- 1 file changed, 219 insertions(+), 166 deletions(-) diff --git a/Tests/SRPTests/Projects/HDRP_DXR_Tests/Assets/ShaderVariantLists/Default.shadervariantlist b/Tests/SRPTests/Projects/HDRP_DXR_Tests/Assets/ShaderVariantLists/Default.shadervariantlist index 79890a7ca5a..a57187c83b5 100644 --- a/Tests/SRPTests/Projects/HDRP_DXR_Tests/Assets/ShaderVariantLists/Default.shadervariantlist +++ b/Tests/SRPTests/Projects/HDRP_DXR_Tests/Assets/ShaderVariantLists/Default.shadervariantlist @@ -645,11 +645,19 @@ Compiled shader: HDRP/3DSMaxPhysicalMaterial/PhysicalMaterial3DsMax, pass: PathT Compiled shader: HDRP/3DSMaxPhysicalMaterial/PhysicalMaterial3DsMax, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/3DSMaxPhysicalMaterial/PhysicalMaterial3DsMax, pass: ShadowCaster, stage: vertex, keywords Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords DECALS_3RT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO _MATERIAL_AFFECTS_MASKMAP _MATERIAL_AFFECTS_NORMAL +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MASKMAP _MATERIAL_AFFECTS_MASKMAP _NORMALMAP +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_ALBEDO Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_ALBEDO _MATERIAL_AFFECTS_MASKMAP _MATERIAL_AFFECTS_NORMAL +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_NORMAL _NORMALMAP Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords INSTANCING_ON +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: all, keywords INSTANCING_ON _NORMALMAP Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_3RT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO _MATERIAL_AFFECTS_MASKMAP _MATERIAL_AFFECTS_NORMAL +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MASKMAP _MATERIAL_AFFECTS_MASKMAP _NORMALMAP +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_ALBEDO Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_ALBEDO _MATERIAL_AFFECTS_MASKMAP _MATERIAL_AFFECTS_NORMAL +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _COLORMAP _MATERIAL_AFFECTS_NORMAL _NORMALMAP Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: vertex, keywords INSTANCING_ON +Compiled shader: HDRP/Decal, pass: DBufferProjector, stage: vertex, keywords INSTANCING_ON _NORMALMAP Compiled shader: HDRP/LayeredLit, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER Compiled shader: HDRP/LayeredLit, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER _ALPHATEST_ON _ENABLE_GEOMETRIC_SPECULAR_AA _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLit, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER _ALPHATEST_ON _LAYEREDLIT_3_LAYERS @@ -672,10 +680,10 @@ Compiled shader: HDRP/LayeredLit, pass: DepthOnly, stage: vertex, keywords WRITE Compiled shader: HDRP/LayeredLit, pass: DepthOnly, stage: vertex, keywords WRITE_NORMAL_BUFFER Compiled shader: HDRP/LayeredLit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLit, pass: Forward, stage: vertex, keywords -Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords _ALPHATEST_ON _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: all, keywords _ALPHATEST_ON _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: all, keywords _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: all, keywords @@ -694,12 +702,12 @@ Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: pixel, keywords DECALS_4 Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: vertex, keywords _ALPHATEST_ON _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: vertex, keywords _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLit, pass: GBuffer, stage: vertex, keywords -Compiled shader: HDRP/LayeredLit, pass: GBufferDXR, stage: raytracing, keywords _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 -Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLit, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _ENABLE_GEOMETRIC_SPECULAR_AA _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLit, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _LAYEREDLIT_3_LAYERS _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 @@ -730,7 +738,7 @@ Compiled shader: HDRP/LayeredLitTessellation, pass: DepthOnly, stage: domain, ke Compiled shader: HDRP/LayeredLitTessellation, pass: DepthOnly, stage: hull, keywords WRITE_DECAL_BUFFER _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLitTessellation, pass: DepthOnly, stage: pixel, keywords WRITE_DECAL_BUFFER _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLitTessellation, pass: DepthOnly, stage: vertex, keywords WRITE_DECAL_BUFFER _LAYEREDLIT_3_LAYERS -Compiled shader: HDRP/LayeredLitTessellation, pass: ForwardDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLitTessellation, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: all, keywords _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: all, keywords _LAYEREDLIT_3_LAYERS _TESSELLATION_PHONG Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 @@ -738,7 +746,7 @@ Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: domain, keyw Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: hull, keywords _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLitTessellation, pass: GBuffer, stage: vertex, keywords _LAYEREDLIT_3_LAYERS -Compiled shader: HDRP/LayeredLitTessellation, pass: IndirectDXR, stage: raytracing, keywords _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 +Compiled shader: HDRP/LayeredLitTessellation, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLitTessellation, pass: ShadowCaster, stage: all, keywords _LAYEREDLIT_3_LAYERS Compiled shader: HDRP/LayeredLitTessellation, pass: ShadowCaster, stage: all, keywords _LAYEREDLIT_3_LAYERS _NORMALMAP_TANGENT_SPACE0 _NORMALMAP_TANGENT_SPACE1 _NORMALMAP_TANGENT_SPACE2 _NORMALMAP_TANGENT_SPACE3 Compiled shader: HDRP/LayeredLitTessellation, pass: ShadowCaster, stage: all, keywords _LAYEREDLIT_3_LAYERS _TESSELLATION_PHONG @@ -809,12 +817,11 @@ Compiled shader: HDRP/Lit, pass: DepthOnly, stage: vertex, keywords WRITE_NORMAL Compiled shader: HDRP/Lit, pass: DepthOnly, stage: vertex, keywords WRITE_NORMAL_BUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT @@ -823,14 +830,13 @@ Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIU Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT -Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: all, keywords DEBUG_DISPLAY _SURFACE_TYPE_TRANSPARENT @@ -845,6 +851,7 @@ Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MED Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT @@ -864,23 +871,24 @@ Compiled shader: HDRP/Lit, pass: Forward, stage: vertex, keywords DEBUG_DISPLAY Compiled shader: HDRP/Lit, pass: Forward, stage: vertex, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: vertex, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: Forward, stage: vertex, keywords DEBUG_DISPLAY _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _IRIDESCENCE_THICKNESSMAP _MATERIAL_FEATURE_IRIDESCENCE _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE _SPECULARCOLORMAP -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _IRIDESCENCE_THICKNESSMAP _MATERIAL_FEATURE_IRIDESCENCE _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE _SPECULARCOLORMAP +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: GBuffer, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/Lit, pass: GBuffer, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/Lit, pass: GBuffer, stage: all, keywords _DISABLE_SSR_TRANSPARENT _HEIGHTMAP @@ -950,48 +958,55 @@ Compiled shader: HDRP/Lit, pass: GBuffer, stage: vertex, keywords _DISABLE_SSR_T Compiled shader: HDRP/Lit, pass: GBuffer, stage: vertex, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/Lit, pass: GBuffer, stage: vertex, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP Compiled shader: HDRP/Lit, pass: GBuffer, stage: vertex, keywords DIRLIGHTMAP_COMBINED LIGHTMAP_ON _DISABLE_SSR_TRANSPARENT -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DEBUG_DISPLAY MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DEBUG_DISPLAY MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _EMISSIVE_COLOR_MAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _IRIDESCENCE_THICKNESSMAP _MATERIAL_FEATURE_IRIDESCENCE _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE _SPECULARCOLORMAP -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY MULTI_BOUNCE_INDIRECT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DIRLIGHTMAP_COMBINED LIGHTMAP_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE -Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_3RT MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_3RT MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_3RT MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _EMISSIVE_COLOR_MAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_3RT MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_3RT MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MINIMAL_GBUFFER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_3RT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _IRIDESCENCE_THICKNESSMAP _MATERIAL_FEATURE_IRIDESCENCE _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE _SPECULARCOLORMAP +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT DIRLIGHTMAP_COMBINED LIGHTMAP_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_ANISOTROPY _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SPECULAR_COLOR _NORMALMAP_TANGENT_SPACE +Compiled shader: HDRP/Lit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/Lit, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE @@ -1041,6 +1056,8 @@ Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT @@ -1115,14 +1132,18 @@ Compiled shader: HDRP/Lit, pass: SubSurfaceDXR, stage: raytracing, keywords _DIS Compiled shader: HDRP/Lit, pass: SubSurfaceDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _MATERIAL_FEATURE_SUBSURFACE_SCATTERING _MATERIAL_FEATURE_TRANSMISSION _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: SubSurfaceDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: pixel, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: pixel, keywords _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT +Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: vertex, keywords _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: vertex, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: vertex, keywords _DOUBLESIDED_ON _SURFACE_TYPE_TRANSPARENT Compiled shader: HDRP/Lit, pass: TransparentDepthPrepass, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT @@ -1156,16 +1177,16 @@ Compiled shader: HDRP/LitTessellation, pass: Forward, stage: domain, keywords _D Compiled shader: HDRP/LitTessellation, pass: Forward, stage: hull, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _ENABLE_FOG_ON_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: Forward, stage: vertex, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE -Compiled shader: HDRP/LitTessellation, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE -Compiled shader: HDRP/LitTessellation, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE +Compiled shader: HDRP/LitTessellation, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE +Compiled shader: HDRP/LitTessellation, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: domain, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: hull, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: GBuffer, stage: vertex, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE -Compiled shader: HDRP/LitTessellation, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE -Compiled shader: HDRP/LitTessellation, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE +Compiled shader: HDRP/LitTessellation, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE +Compiled shader: HDRP/LitTessellation, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _ENABLE_FOG_ON_TRANSPARENT _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _NORMALMAP_TANGENT_SPACE _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE Compiled shader: HDRP/LitTessellation, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _DISPLACEMENT_LOCK_TILING_SCALE _HEIGHTMAP _SURFACE_TYPE_TRANSPARENT _TESSELLATION_DISPLACEMENT _VERTEX_DISPLACEMENT_LOCK_OBJECT_SCALE @@ -1189,7 +1210,7 @@ Compiled shader: HDRP/SG_Eye, pass: ForwardOnly, stage: all, keywords -Compiled shader: HDRP/SG_Eye, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: HDRP/SG_Eye, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/SG_Eye, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: HDRP/SG_Eye, pass: ShadowCaster, stage: all, keywords Compiled shader: HDRP/SG_Eye, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1200,7 +1221,7 @@ Compiled shader: HDRP/TerrainLit, pass: DepthOnly, stage: pixel, keywords WRITE_ Compiled shader: HDRP/TerrainLit, pass: DepthOnly, stage: pixel, keywords WRITE_DECAL_BUFFER _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: DepthOnly, stage: vertex, keywords WRITE_DECAL_BUFFER _MASKMAP _NORMALMAP Compiled shader: HDRP/TerrainLit, pass: DepthOnly, stage: vertex, keywords WRITE_DECAL_BUFFER _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL -Compiled shader: HDRP/TerrainLit, pass: ForwardDXR, stage: raytracing, keywords _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL +Compiled shader: HDRP/TerrainLit, pass: ForwardDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: all, keywords _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: pixel, keywords DECALS_4RT _MASKMAP _NORMALMAP @@ -1209,8 +1230,8 @@ Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: pixel, keywords DECALS_4 Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: vertex, keywords _MASKMAP _NORMALMAP Compiled shader: HDRP/TerrainLit, pass: GBuffer, stage: vertex, keywords _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL -Compiled shader: HDRP/TerrainLit, pass: GBufferDXR, stage: raytracing, keywords _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL -Compiled shader: HDRP/TerrainLit, pass: IndirectDXR, stage: raytracing, keywords _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL +Compiled shader: HDRP/TerrainLit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL +Compiled shader: HDRP/TerrainLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT _MASKMAP _NORMALMAP Compiled shader: HDRP/TerrainLit, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT _MASKMAP _NORMALMAP _TERRAIN_INSTANCED_PERPIXEL_NORMAL Compiled shader: HDRP/TerrainLit, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MASKMAP _NORMALMAP @@ -1311,7 +1332,10 @@ Compiled shader: Hidden/HDRP/Blit, pass: BilinearCubeToOctahedralPadding, stage: Compiled shader: Hidden/HDRP/Blit, pass: BilinearCubeToOctahedralPadding, stage: pixel, keywords DISABLE_TEXTURE2D_X_ARRAY Compiled shader: Hidden/HDRP/Blit, pass: BilinearCubeToOctahedralPadding, stage: vertex, keywords Compiled shader: Hidden/HDRP/Blit, pass: BilinearCubeToOctahedralPadding, stage: vertex, keywords DISABLE_TEXTURE2D_X_ARRAY +Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuad, stage: all, keywords DISABLE_TEXTURE2D_X_ARRAY +Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuad, stage: pixel, keywords Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuad, stage: pixel, keywords DISABLE_TEXTURE2D_X_ARRAY +Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuad, stage: vertex, keywords Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuad, stage: vertex, keywords DISABLE_TEXTURE2D_X_ARRAY Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuadPadding, stage: all, keywords DISABLE_TEXTURE2D_X_ARRAY Compiled shader: Hidden/HDRP/Blit, pass: BilinearQuadPadding, stage: pixel, keywords @@ -1343,10 +1367,8 @@ Compiled shader: Hidden/HDRP/CopyDepthBuffer, pass: Copy Depth, stage: vertex, k Compiled shader: Hidden/HDRP/DebugFullScreen, pass: , stage: all, keywords Compiled shader: Hidden/HDRP/DebugFullScreen, pass: , stage: pixel, keywords Compiled shader: Hidden/HDRP/DebugFullScreen, pass: , stage: vertex, keywords -Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: all, keywords Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: pixel, keywords Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: vertex, keywords -Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: all, keywords Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: pixel, keywords Compiled shader: Hidden/HDRP/DebugLightCluster, pass: , stage: vertex, keywords Compiled shader: Hidden/HDRP/FinalPass, pass: , stage: all, keywords @@ -1545,7 +1567,7 @@ Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: Forward, stage: vertex, keywords _ALPHATEST_ON _DOUBLESIDED_ON _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT -Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT +Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: IndirectDXR, stage: raytracing, keywords DECALS_3RT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DOUBLESIDED_ON _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Hidden/VFX/RefractiveEye/System/Output Particle Lit Quad, pass: ShadowCaster, stage: all, keywords @@ -1624,7 +1646,7 @@ Compiled shader: Shader Graphs/CheckerBoardSG, pass: GBuffer, stage: all, keywor Compiled shader: Shader Graphs/CheckerBoardSG, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/CheckerBoardSG, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/CheckerBoardSG, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/CheckerBoardSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/CheckerBoardSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/CheckerBoardSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/CheckerBoardSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/CheckerBoardSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -1632,8 +1654,14 @@ Compiled shader: Shader Graphs/CheckerBoardSG, pass: MotionVectors, stage: verte Compiled shader: Shader Graphs/CheckerBoardSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/CheckerBoardSG, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/CheckerBoardSG, pass: ShadowCaster, stage: vertex, keywords +Compiled shader: Shader Graphs/Color Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT _MATERIAL_AFFECTS_ALBEDO +Compiled shader: Shader Graphs/Color Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_ALBEDO Compiled shader: Shader Graphs/Color Decal, pass: AtlasProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_ALBEDO Compiled shader: Shader Graphs/Color Decal, pass: AtlasProjector, stage: vertex, keywords DECALS_4RT _MATERIAL_AFFECTS_ALBEDO +Compiled shader: Shader Graphs/Color Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO +Compiled shader: Shader Graphs/Color Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO +Compiled shader: Shader Graphs/Color Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO +Compiled shader: Shader Graphs/Color Decal, pass: DBufferProjector, stage: vertex, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_ALBEDO Compiled shader: Shader Graphs/ElipseSG, pass: DepthOnly, stage: all, keywords Compiled shader: Shader Graphs/ElipseSG, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER Compiled shader: Shader Graphs/ElipseSG, pass: DepthOnly, stage: pixel, keywords WRITE_DECAL_BUFFER @@ -1642,7 +1670,7 @@ Compiled shader: Shader Graphs/ElipseSG, pass: GBuffer, stage: all, keywords -Compiled shader: Shader Graphs/ElipseSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/ElipseSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/ElipseSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/ElipseSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/ElipseSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -1662,9 +1690,9 @@ Compiled shader: Shader Graphs/EyeSG, pass: ForwardOnly, stage: pixel, keywords Compiled shader: Shader Graphs/EyeSG, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/EyeSG, pass: ForwardOnly, stage: vertex, keywords Compiled shader: Shader Graphs/EyeSG, pass: ForwardOnly, stage: vertex, keywords DEBUG_DISPLAY -Compiled shader: Shader Graphs/EyeSG, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/EyeSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/EyeSG, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/EyeSG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/EyeSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/EyeSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/EyeSG, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/EyeSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/EyeSG, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1683,8 +1711,8 @@ Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ForwardOnly, stage: pixe Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_CottonWool, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Fabric_CottonWool, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_CottonWool, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_CottonWool, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT @@ -1704,7 +1732,7 @@ Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ForwardOnly, s Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ForwardOnly, stage: vertex, keywords _ALPHATEST_ON -Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_AlphaClip, pass: ShadowCaster, stage: pixel, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT @@ -1719,7 +1747,7 @@ Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ForwardOnly, stage: Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Fabric_CottonWool_SSS, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1734,7 +1762,7 @@ Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ForwardOnly Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Fabric_CottonWool_Transmission, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1754,8 +1782,8 @@ Compiled shader: Shader Graphs/Fabric_Silk, pass: ForwardOnly, stage: pixel, key Compiled shader: Shader Graphs/Fabric_Silk, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_Silk, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Fabric_Silk, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_Silk, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_Silk, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT @@ -1775,7 +1803,7 @@ Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ForwardOnly, stag Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ForwardOnly, stage: vertex, keywords _ALPHATEST_ON _DOUBLESIDED_ON -Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON +Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DOUBLESIDED_ON Compiled shader: Shader Graphs/Fabric_Silk_AlphaClip_DS, pass: ShadowCaster, stage: pixel, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON @@ -1790,7 +1818,7 @@ Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ForwardOnly, stage: all, k Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Fabric_Silk_SSS, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1805,7 +1833,7 @@ Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ForwardOnly, stag Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Fabric_Silk_Transmission, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1838,9 +1866,9 @@ Compiled shader: Shader Graphs/FabricSG, pass: ForwardOnly, stage: pixel, keywor Compiled shader: Shader Graphs/FabricSG, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/FabricSG, pass: ForwardOnly, stage: vertex, keywords Compiled shader: Shader Graphs/FabricSG, pass: ForwardOnly, stage: vertex, keywords DEBUG_DISPLAY -Compiled shader: Shader Graphs/FabricSG, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/FabricSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/FabricSG, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/FabricSG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/FabricSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/FabricSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/FabricSG, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/FabricSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/FabricSG, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1851,13 +1879,21 @@ Compiled shader: Shader Graphs/FontShader, pass: ForwardOnly, stage: vertex, key Compiled shader: Shader Graphs/FontShader, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/FontShader, pass: ShadowCaster, stage: pixel, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/FontShader, pass: ShadowCaster, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Ground SG, pass: DepthOnly, stage: all, keywords +Compiled shader: Shader Graphs/Ground SG, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER Compiled shader: Shader Graphs/Ground SG, pass: DepthOnly, stage: pixel, keywords WRITE_DECAL_BUFFER Compiled shader: Shader Graphs/Ground SG, pass: DepthOnly, stage: vertex, keywords +Compiled shader: Shader Graphs/Ground SG, pass: GBuffer, stage: all, keywords +Compiled shader: Shader Graphs/Ground SG, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Ground SG, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Ground SG, pass: GBuffer, stage: vertex, keywords +Compiled shader: Shader Graphs/Ground SG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT +Compiled shader: Shader Graphs/Ground SG, pass: MotionVectors, stage: all, keywords +Compiled shader: Shader Graphs/Ground SG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/Ground SG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/Ground SG, pass: MotionVectors, stage: vertex, keywords Compiled shader: Shader Graphs/Ground SG, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT +Compiled shader: Shader Graphs/Ground SG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Ground SG, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Ground SG, pass: ShadowCaster, stage: vertex, keywords Compiled shader: Shader Graphs/Hair_Standard, pass: DepthForwardOnly, stage: all, keywords @@ -1874,8 +1910,8 @@ Compiled shader: Shader Graphs/Hair_Standard, pass: ForwardOnly, stage: pixel, k Compiled shader: Shader Graphs/Hair_Standard, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/Hair_Standard, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Hair_Standard, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Hair_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Hair_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT @@ -1904,8 +1940,8 @@ Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ForwardOnly, stage Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ForwardOnly, stage: vertex, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ForwardOnly, stage: vertex, keywords _ALPHATEST_ON _DOUBLESIDED_ON -Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON +Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Hair_Standard_AlphaClip, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON _DISABLE_SSR_TRANSPARENT _DOUBLESIDED_ON @@ -1924,8 +1960,8 @@ Compiled shader: Shader Graphs/HairSG, pass: ForwardOnly, stage: all, keywords < Compiled shader: Shader Graphs/HairSG, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/HairSG, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/HairSG, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/HairSG, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/HairSG, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/HairSG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/HairSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/HairSG, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/HairSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/HairSG, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -1938,9 +1974,9 @@ Compiled shader: Shader Graphs/Lit Shader, pass: GBuffer, stage: all, keywords < Compiled shader: Shader Graphs/Lit Shader, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Lit Shader, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Lit Shader, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/Lit Shader, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Lit Shader, pass: GBufferDXR, stage: raytracing, keywords MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/Lit Shader, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Lit Shader, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Lit Shader, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MINIMAL_GBUFFER _DISABLE_SSR _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/Lit Shader, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Lit Shader, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/Lit Shader, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit Shader, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR _DISABLE_SSR_TRANSPARENT @@ -1950,7 +1986,7 @@ Compiled shader: Shader Graphs/Lit_Anisotropy, pass: DepthOnly, stage: all, keyw Compiled shader: Shader Graphs/Lit_Anisotropy, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_Anisotropy, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_Anisotropy, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_Anisotropy, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_Anisotropy, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_Anisotropy, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_Anisotropy, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_Anisotropy, pass: ShadowCaster, stage: vertex, keywords @@ -1960,7 +1996,7 @@ Compiled shader: Shader Graphs/Lit_Iridescence, pass: DepthOnly, stage: all, key Compiled shader: Shader Graphs/Lit_Iridescence, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_Iridescence, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_Iridescence, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_Iridescence, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_Iridescence, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_Iridescence, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_Iridescence, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_Iridescence, pass: ShadowCaster, stage: vertex, keywords @@ -1970,7 +2006,7 @@ Compiled shader: Shader Graphs/Lit_Specular, pass: DepthOnly, stage: all, keywor Compiled shader: Shader Graphs/Lit_Specular, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_Specular, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_Specular, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_Specular, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_Specular, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_Specular, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_Specular, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_Specular, pass: ShadowCaster, stage: vertex, keywords @@ -1980,7 +2016,7 @@ Compiled shader: Shader Graphs/Lit_Standard, pass: DepthOnly, stage: all, keywor Compiled shader: Shader Graphs/Lit_Standard, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_Standard, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_Standard, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_Standard, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_Standard, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_Standard, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_Standard, pass: ShadowCaster, stage: vertex, keywords @@ -1990,7 +2026,7 @@ Compiled shader: Shader Graphs/Lit_SubSurface, pass: DepthOnly, stage: all, keyw Compiled shader: Shader Graphs/Lit_SubSurface, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_SubSurface, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_SubSurface, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_SubSurface, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_SubSurface, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_SubSurface, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_SubSurface, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_SubSurface, pass: ShadowCaster, stage: vertex, keywords @@ -2000,7 +2036,7 @@ Compiled shader: Shader Graphs/Lit_Translucent, pass: DepthOnly, stage: all, key Compiled shader: Shader Graphs/Lit_Translucent, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/Lit_Translucent, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/Lit_Translucent, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/Lit_Translucent, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/Lit_Translucent, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/Lit_Translucent, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/Lit_Translucent, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/Lit_Translucent, pass: ShadowCaster, stage: vertex, keywords @@ -2008,7 +2044,7 @@ Compiled shader: Shader Graphs/Lit_Translucent, pass: VisibilityDXR, stage: rayt Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: Forward, stage: all, keywords _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: ForwardDXR, stage: raytracing, keywords _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: IndirectDXR, stage: raytracing, keywords _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: ShadowCaster, stage: all, keywords _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_PLANE _SURFACE_TYPE_TRANSPARENT @@ -2019,7 +2055,7 @@ Compiled shader: Shader Graphs/Lit_Transparent_Box, pass: VisibilityDXR, stage: Compiled shader: Shader Graphs/Lit_Transparent_None, pass: Forward, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_None, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_None, pass: ForwardDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/Lit_Transparent_None, pass: IndirectDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Lit_Transparent_None, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_None, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_None, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_None, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2030,7 +2066,7 @@ Compiled shader: Shader Graphs/Lit_Transparent_None, pass: VisibilityDXR, stage: Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: Forward, stage: all, keywords _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: ForwardDXR, stage: raytracing, keywords _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: IndirectDXR, stage: raytracing, keywords _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: ShadowCaster, stage: all, keywords _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT @@ -2041,7 +2077,7 @@ Compiled shader: Shader Graphs/Lit_Transparent_Sphere, pass: VisibilityDXR, stag Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: Forward, stage: all, keywords _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: Forward, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: ForwardDXR, stage: raytracing, keywords _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: IndirectDXR, stage: raytracing, keywords _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: ShadowCaster, stage: all, keywords _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/Lit_Transparent_Thin, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_THIN _SURFACE_TYPE_TRANSPARENT @@ -2074,8 +2110,8 @@ Compiled shader: Shader Graphs/LitSG, pass: GBuffer, stage: all, keywords -Compiled shader: Shader Graphs/LitSG, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/LitSG, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/LitSG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/LitSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSG, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/LitSG, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2088,7 +2124,7 @@ Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: GBuffer, stage: al Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/LitSGVariableSmoothness, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2098,13 +2134,25 @@ Compiled shader: Shader Graphs/LitTesselation_Standard, pass: DepthOnly, stage: Compiled shader: Shader Graphs/LitTesselation_Standard, pass: ForwardDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/LitTesselation_Standard, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/LitTesselation_Standard, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT -Compiled shader: Shader Graphs/LitTesselation_Standard, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/LitTesselation_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/LitTesselation_Standard, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/LitTesselation_Standard, pass: VisibilityDXR, stage: raytracing, keywords TRANSPARENT_COLOR_SHADOW +Compiled shader: Shader Graphs/Metal Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Metal Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_MASKMAP Compiled shader: Shader Graphs/Metal Decal, pass: AtlasProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_MASKMAP Compiled shader: Shader Graphs/Metal Decal, pass: AtlasProjector, stage: vertex, keywords DECALS_4RT _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Metal Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Metal Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Metal Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Metal Decal, pass: DBufferProjector, stage: vertex, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Normal Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT _MATERIAL_AFFECTS_NORMAL +Compiled shader: Shader Graphs/Normal Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_NORMAL Compiled shader: Shader Graphs/Normal Decal, pass: AtlasProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_NORMAL Compiled shader: Shader Graphs/Normal Decal, pass: AtlasProjector, stage: vertex, keywords DECALS_4RT _MATERIAL_AFFECTS_NORMAL +Compiled shader: Shader Graphs/Normal Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_NORMAL +Compiled shader: Shader Graphs/Normal Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_NORMAL +Compiled shader: Shader Graphs/Normal Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_NORMAL +Compiled shader: Shader Graphs/Normal Decal, pass: DBufferProjector, stage: vertex, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_NORMAL Compiled shader: Shader Graphs/PolygonSG, pass: DepthOnly, stage: all, keywords Compiled shader: Shader Graphs/PolygonSG, pass: DepthOnly, stage: all, keywords WRITE_DECAL_BUFFER Compiled shader: Shader Graphs/PolygonSG, pass: DepthOnly, stage: pixel, keywords WRITE_DECAL_BUFFER @@ -2113,7 +2161,7 @@ Compiled shader: Shader Graphs/PolygonSG, pass: GBuffer, stage: all, keywords -Compiled shader: Shader Graphs/PolygonSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/PolygonSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/PolygonSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/PolygonSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/PolygonSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -2148,7 +2196,7 @@ Compiled shader: Shader Graphs/RectangleSG, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/RectangleSG, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RectangleSG, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RectangleSG, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/RectangleSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/RectangleSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RectangleSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/RectangleSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/RectangleSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -2164,7 +2212,7 @@ Compiled shader: Shader Graphs/RoundedPolygonSG, pass: GBuffer, stage: all, keyw Compiled shader: Shader Graphs/RoundedPolygonSG, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedPolygonSG, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedPolygonSG, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/RoundedPolygonSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/RoundedPolygonSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedPolygonSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/RoundedPolygonSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/RoundedPolygonSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -2180,7 +2228,7 @@ Compiled shader: Shader Graphs/RoundedRectangleSG, pass: GBuffer, stage: all, ke Compiled shader: Shader Graphs/RoundedRectangleSG, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedRectangleSG, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedRectangleSG, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/RoundedRectangleSG, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/RoundedRectangleSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/RoundedRectangleSG, pass: MotionVectors, stage: all, keywords Compiled shader: Shader Graphs/RoundedRectangleSG, pass: MotionVectors, stage: all, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER Compiled shader: Shader Graphs/RoundedRectangleSG, pass: MotionVectors, stage: pixel, keywords WRITE_DECAL_BUFFER_AND_RENDERING_LAYER @@ -2193,7 +2241,7 @@ Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ForwardOnly, s Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2207,7 +2255,7 @@ Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ForwardOnly, st Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Fabric_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2224,7 +2272,7 @@ Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBuffer, stage: all Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBuffer, stage: all, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBuffer, stage: pixel, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: GBufferDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/SG_GradualRoughSurface, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2234,7 +2282,7 @@ Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ForwardOnly, sta Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2248,7 +2296,7 @@ Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ForwardOnly, stag Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Hair_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2262,7 +2310,7 @@ Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: Forward, stage: a Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: Forward, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: ForwardDXR, stage: raytracing, keywords _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2276,7 +2324,7 @@ Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: Forward, stage: al Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: Forward, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: Forward, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: ForwardDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2293,7 +2341,7 @@ Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: GBuffer, stage: al Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/SG_Lit_SmoothReflection, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2306,7 +2354,7 @@ Compiled shader: Shader Graphs/SG_LitOpaque, pass: GBuffer, stage: all, keywords Compiled shader: Shader Graphs/SG_LitOpaque, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/SG_LitOpaque, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/SG_LitOpaque, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/SG_LitOpaque, pass: IndirectDXR, stage: raytracing, keywords +Compiled shader: Shader Graphs/SG_LitOpaque, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT Compiled shader: Shader Graphs/SG_LitOpaque, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/SG_LitOpaque, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/SG_LitOpaque, pass: ShadowCaster, stage: vertex, keywords @@ -2320,7 +2368,7 @@ Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: GBuffer, stage: all, ke Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: GBuffer, stage: vertex, keywords _ALPHATEST_ON -Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON +Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: ShadowCaster, stage: pixel, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoff, pass: ShadowCaster, stage: vertex, keywords _ALPHATEST_ON @@ -2333,7 +2381,7 @@ Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: GBuffer, stage: a Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: GBuffer, stage: vertex, keywords _ALPHATEST_ON -Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: IndirectDXR, stage: raytracing, keywords _ALPHATEST_ON +Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: ShadowCaster, stage: all, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: ShadowCaster, stage: pixel, keywords _ALPHATEST_ON Compiled shader: Shader Graphs/SG_LitOpaqueCutoffShadow, pass: ShadowCaster, stage: vertex, keywords _ALPHATEST_ON @@ -2348,8 +2396,8 @@ Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: Forward, stage: v Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: Forward, stage: vertex, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: ForwardDXR, stage: raytracing, keywords _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: ForwardDXR, stage: raytracing, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: IndirectDXR, stage: raytracing, keywords _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: RayTracingPrepass, stage: all, keywords _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: RayTracingPrepass, stage: all, keywords _DOUBLESIDED_ON _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_LitRecursiveRendering, pass: RayTracingPrepass, stage: pixel, keywords _DOUBLESIDED_ON _ENABLE_FOG_ON_TRANSPARENT _REFRACTION_SPHERE _SURFACE_TYPE_TRANSPARENT @@ -2420,17 +2468,16 @@ Compiled shader: Shader Graphs/SG_StackLit, pass: DepthForwardOnly, stage: pixel Compiled shader: Shader Graphs/SG_StackLit, pass: DepthForwardOnly, stage: pixel, keywords WRITE_DECAL_BUFFER _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: DepthForwardOnly, stage: vertex, keywords Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: all, keywords -Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: all, keywords DEBUG_DISPLAY Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DEBUG_DISPLAY DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_3RT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: vertex, keywords Compiled shader: Shader Graphs/SG_StackLit, pass: ForwardOnly, stage: vertex, keywords DEBUG_DISPLAY -Compiled shader: Shader Graphs/SG_StackLit, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/SG_StackLit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SG_StackLit, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_3RT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SG_StackLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_3RT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SG_StackLit, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/SG_StackLit, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2441,7 +2488,7 @@ Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ForwardOnly, Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROff, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2455,7 +2502,7 @@ Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ForwardOnly, Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_CLUSTERED_LIGHTLIST _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT -Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: all, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/SG_StackLit_RTRT_OpaqueSSROn, pass: ShadowCaster, stage: pixel, keywords _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2595,7 +2642,7 @@ Compiled shader: Shader Graphs/SGTessellationLit, pass: GBuffer, stage: domain, Compiled shader: Shader Graphs/SGTessellationLit, pass: GBuffer, stage: hull, keywords Compiled shader: Shader Graphs/SGTessellationLit, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationLit, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/SGTessellationLit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SGTessellationLit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationLit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationLit, pass: ShadowCaster, stage: all, keywords _TESSELLATION_PHONG Compiled shader: Shader Graphs/SGTessellationLit, pass: ShadowCaster, stage: all, keywords @@ -2617,7 +2664,7 @@ Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBuffer, stage: domain Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBuffer, stage: hull, keywords Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/SGTessellationUnlit, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationUnlit, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/SGTessellationUnlit, pass: ShadowCaster, stage: all, keywords _TESSELLATION_PHONG Compiled shader: Shader Graphs/SGTessellationUnlit, pass: ShadowCaster, stage: all, keywords @@ -2638,8 +2685,14 @@ Compiled shader: Shader Graphs/ShadowMatteGraphDefault, pass: DepthForwardOnly, Compiled shader: Shader Graphs/ShadowMatteGraphDefault, pass: PathTracingDXR, stage: raytracing, keywords Compiled shader: Shader Graphs/ShadowMatteGraphDefault, pass: ShadowCaster, stage: pixel, keywords Compiled shader: Shader Graphs/ShadowMatteGraphDefault, pass: ShadowCaster, stage: vertex, keywords +Compiled shader: Shader Graphs/Smoothness Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Smoothness Decal, pass: AtlasProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_MASKMAP Compiled shader: Shader Graphs/Smoothness Decal, pass: AtlasProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _MATERIAL_AFFECTS_MASKMAP Compiled shader: Shader Graphs/Smoothness Decal, pass: AtlasProjector, stage: vertex, keywords DECALS_4RT _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Smoothness Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Smoothness Decal, pass: DBufferProjector, stage: all, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Smoothness Decal, pass: DBufferProjector, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP +Compiled shader: Shader Graphs/Smoothness Decal, pass: DBufferProjector, stage: vertex, keywords DECALS_4RT INSTANCING_ON _MATERIAL_AFFECTS_MASKMAP Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: DepthForwardOnly, stage: all, keywords Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: DepthForwardOnly, stage: all, keywords WRITE_DECAL_BUFFER _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: DepthForwardOnly, stage: pixel, keywords WRITE_DECAL_BUFFER _DISABLE_SSR_TRANSPARENT @@ -2649,7 +2702,7 @@ Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ForwardOnly, stage: al Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Anisotropy, pass: ShadowCaster, stage: all, keywords @@ -2665,7 +2718,7 @@ Compiled shader: Shader Graphs/StackLit_Coat, pass: ForwardOnly, stage: all, key Compiled shader: Shader Graphs/StackLit_Coat, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Coat, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Coat, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Coat, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Coat, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Coat, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Coat, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Coat, pass: ShadowCaster, stage: all, keywords @@ -2681,7 +2734,7 @@ Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ForwardOnly, stage: Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe, pass: ShadowCaster, stage: all, keywords @@ -2697,7 +2750,7 @@ Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ForwardOnly, st Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_DualSpecLobe_Hazy, pass: ShadowCaster, stage: all, keywords @@ -2713,7 +2766,7 @@ Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ForwardOnly, stage: a Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Iridescence, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Iridescence, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Iridescence, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Iridescence, pass: ShadowCaster, stage: all, keywords @@ -2729,7 +2782,7 @@ Compiled shader: Shader Graphs/StackLit_Spec, pass: ForwardOnly, stage: all, key Compiled shader: Shader Graphs/StackLit_Spec, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Spec, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Spec, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Spec, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Spec, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Spec, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Spec, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Spec, pass: ShadowCaster, stage: all, keywords @@ -2750,8 +2803,8 @@ Compiled shader: Shader Graphs/StackLit_Standard, pass: ForwardOnly, stage: pixe Compiled shader: Shader Graphs/StackLit_Standard, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Standard, pass: ForwardOnly, stage: vertex, keywords _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Standard, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Standard, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/StackLit_Standard, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Standard, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT _SURFACE_TYPE_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Standard, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Standard, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Standard, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT _ENABLE_FOG_ON_TRANSPARENT _SURFACE_TYPE_TRANSPARENT @@ -2772,7 +2825,7 @@ Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ForwardOnly, stage: al Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_SubSurface, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_SubSurface, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_SubSurface, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_SubSurface, pass: ShadowCaster, stage: all, keywords @@ -2788,7 +2841,7 @@ Compiled shader: Shader Graphs/StackLit_Transmission, pass: ForwardOnly, stage: Compiled shader: Shader Graphs/StackLit_Transmission, pass: ForwardOnly, stage: all, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Transmission, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Transmission, pass: ForwardOnly, stage: vertex, keywords -Compiled shader: Shader Graphs/StackLit_Transmission, pass: IndirectDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLit_Transmission, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Transmission, pass: PathTracingDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Transmission, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLit_Transmission, pass: ShadowCaster, stage: all, keywords @@ -2807,9 +2860,9 @@ Compiled shader: Shader Graphs/StackLitSG, pass: ForwardOnly, stage: pixel, keyw Compiled shader: Shader Graphs/StackLitSG, pass: ForwardOnly, stage: pixel, keywords AREA_SHADOW_MEDIUM DECALS_4RT DECAL_SURFACE_GRADIENT DIRECTIONAL_SHADOW_MEDIUM PUNCTUAL_SHADOW_MEDIUM SCREEN_SPACE_SHADOWS_ON USE_FPTL_LIGHTLIST _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLitSG, pass: ForwardOnly, stage: vertex, keywords Compiled shader: Shader Graphs/StackLitSG, pass: ForwardOnly, stage: vertex, keywords DEBUG_DISPLAY -Compiled shader: Shader Graphs/StackLitSG, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/StackLitSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT -Compiled shader: Shader Graphs/StackLitSG, pass: IndirectDXR, stage: raytracing, keywords MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLitSG, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLitSG, pass: IndirectDXR, stage: raytracing, keywords DEBUG_DISPLAY DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/StackLitSG, pass: IndirectDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT MULTI_BOUNCE_INDIRECT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLitSG, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/StackLitSG, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/StackLitSG, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT @@ -2889,7 +2942,7 @@ Compiled shader: Shader Graphs/VertexColorShader, pass: GBuffer, stage: all, key Compiled shader: Shader Graphs/VertexColorShader, pass: GBuffer, stage: all, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/VertexColorShader, pass: GBuffer, stage: pixel, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/VertexColorShader, pass: GBuffer, stage: vertex, keywords -Compiled shader: Shader Graphs/VertexColorShader, pass: GBufferDXR, stage: raytracing, keywords _DISABLE_SSR_TRANSPARENT +Compiled shader: Shader Graphs/VertexColorShader, pass: GBufferDXR, stage: raytracing, keywords DECALS_4RT DECAL_SURFACE_GRADIENT _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/VertexColorShader, pass: ShadowCaster, stage: all, keywords _DISABLE_SSR_TRANSPARENT Compiled shader: Shader Graphs/VertexColorShader, pass: ShadowCaster, stage: all, keywords Compiled shader: Shader Graphs/VertexColorShader, pass: ShadowCaster, stage: pixel, keywords _DISABLE_SSR_TRANSPARENT From efee9e74a9487ddf362347ceaeabe3313fef1eaa Mon Sep 17 00:00:00 2001 From: Maxime Grange Date: Thu, 31 Aug 2023 16:03:57 +0000 Subject: [PATCH 11/13] Fix camera position when using the light placement tool This PR fixes the camera position when using the light placement tool. Previously, by default, the camera was 2 meters behind the light. This was confusing and problematic when manipulating the light because a mesh could easily end-up between the light and the camera and hiding the view (E.g it was hard to place lights in interior rooms) It also fixes another unwanted behavior. Previously when entering and exiting the tool, the light was slightly offseted, which was really problematic as this is a light placement tool. With this fix, the light stays at the right position when entering and exiting the tool. The camera is restored at it's original position, as expected. --- .../Editor/Lighting/LightPlacementTool.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightPlacementTool.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightPlacementTool.cs index fe9d7214322..8b0c7bf4730 100755 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightPlacementTool.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightPlacementTool.cs @@ -5,7 +5,7 @@ [EditorTool("Light Placement Tool", typeof(Light))] class LightPlacementTool : EditorTool { - private const float k_DefaultZoom = 2f; + private const float k_DefaultZoom = 0.05f; private bool initialPositionSet; private static Vector3 initialPivot; From 64a923e5af73e7355cd35e99cededd0a9c64ec2c Mon Sep 17 00:00:00 2001 From: Robert Jessop Date: Sat, 2 Sep 2023 04:23:33 +0000 Subject: [PATCH 12/13] [content automatically redacted] touching PlatformDependent folder --- .../renderer-features/how-to-custom-effect-render-objects.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-custom-effect-render-objects.md b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-custom-effect-render-objects.md index dd4b1450588..7c7a8ef5446 100644 --- a/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-custom-effect-render-objects.md +++ b/Packages/com.unity.render-pipelines.universal/Documentation~/renderer-features/how-to-custom-effect-render-objects.md @@ -138,5 +138,3 @@ With the extra `Character` Renderer Feature, Unity renders GameObjects as follow 2. The `DrawCharacterBehind` Renderer Feature draws parts of the character that are behind other GameObjects. This happens in the **AfterRenderingOpaques** event. 3. The `Character` Renderer Feature draws parts of the character that are in front of other GameObjects. This happens in the **AfterRenderingOpaques** event, and after executing the `DrawCharacterBehind` Renderer Feature. - -To see another use case of the Render Objects Renderer Feature, refer to the **Object Occlusion** scene in the [Universal Rendering Examples](https://github.com/Unity-Technologies/UniversalRenderingExamples) project. From 98f306e49680ac8702327802405177d0d955ff4b Mon Sep 17 00:00:00 2001 From: Ionut Nedelcu Date: Sat, 2 Sep 2023 04:23:36 +0000 Subject: [PATCH 13/13] [RayTracing] Fix for case UUM-47435. Fix for case UUM-47435. - Fixed static batched geometries not built correctly in acceleration structures causing missing objects in ray tracing effects or using wrong materials. - Removed Static Batching Off requirement in HDRP + DXR Wizard (Static Batching is supported now in Ray Tracing!!!). - Removed "DisableBatching" = "True" shader tag that forced batching to be disabled in graphics tests. --- .../CHANGELOG.md | 1 + .../Editor/Wizard/HDWizard.Configuration.cs | 10 ---------- .../Editor/Wizard/HDWizard.Window.cs | 3 --- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/CHANGELOG.md b/Packages/com.unity.render-pipelines.high-definition/CHANGELOG.md index 5531c448ba8..3e244cdb40f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/Packages/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -15,6 +15,7 @@ This version is compatible with Unity 2023.3.0a1. ### Changed - Stripping or IRenderPipelineGraphicsSettings. +- Removed Static Batching (disabled) requirement from HDRP Wizard. Static Batching is now supported with ray tracing. ### Fixed - Fix leak with Compute Buffer from APV Resources. diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Configuration.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Configuration.cs index 4b07c03b772..239608aa89c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Configuration.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Configuration.cs @@ -198,7 +198,6 @@ Entry[] BuildEntryList() { new Entry(QualityScope.Global, InclusiveMode.DXROptional, Style.dxrAutoGraphicsAPIWarning_WindowsOnly, IsDXRAutoGraphicsAPICorrect_WindowsOnly, FixDXRAutoGraphicsAPI_WindowsOnly), new Entry(QualityScope.Global, InclusiveMode.DXROptional, Style.dxrD3D12Warning_WindowsOnly, IsDXRDirect3D12Correct_WindowsOnly, FixDXRDirect3D12_WindowsOnly), - new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrStaticBatching, IsDXRStaticBatchingCorrect, FixDXRStaticBatching), new Entry(QualityScope.CurrentQuality, InclusiveMode.DXR, Style.dxrActivated, IsDXRActivationCorrect, FixDXRActivation), new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrBuildTarget, IsValidBuildTarget, FixBuildTarget), new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrResources, IsDXRResourcesCorrect, FixDXRResources), @@ -210,7 +209,6 @@ Entry[] BuildEntryList() { new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrAutoGraphicsAPI, IsDXRAutoGraphicsAPICorrect, FixDXRAutoGraphicsAPI), new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrD3D12, IsDXRDirect3D12Correct, FixDXRDirect3D12), - new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrStaticBatching, IsDXRStaticBatchingCorrect, FixDXRStaticBatching), new Entry(QualityScope.CurrentQuality, InclusiveMode.DXR, Style.dxrActivated, IsDXRActivationCorrect, FixDXRActivation), new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrBuildTarget, IsValidBuildTarget, FixBuildTarget), new Entry(QualityScope.Global, InclusiveMode.DXR, Style.dxrResources, IsDXRResourcesCorrect, FixDXRResources), @@ -870,14 +868,6 @@ void FixBuildTarget(bool fromAsyncUnused) EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows64); } - bool IsDXRStaticBatchingCorrect() - => !GetStaticBatching(CalculateSelectedBuildTarget()); - - void FixDXRStaticBatching(bool fromAsyncUnused) - { - SetStaticBatching(CalculateSelectedBuildTarget(), false); - } - bool IsDXRActivationCorrect() => HDRenderPipeline.currentAsset != null && HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.supportRayTracing; diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Window.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Window.cs index d8432232470..81695f4dc37 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Window.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Window.cs @@ -190,9 +190,6 @@ public ConfigStyle(string label, string error, string button = null, MessageType public static readonly ConfigStyle dxrBuildTarget = new ConfigStyle( label: L10n.Tr("Build Target"), error: L10n.Tr("To build your Project as a Unity Player your build target must be StandaloneWindows64, Playstation5 or Xbox series X")); - public static readonly ConfigStyle dxrStaticBatching = new ConfigStyle( - label: L10n.Tr("Static Batching"), - error: L10n.Tr("Static Batching is not supported!")); public static readonly ConfigStyle dxrActivated = new ConfigStyle( label: L10n.Tr("DXR activated"), error: L10n.Tr("DXR is not activated!"));