From 980c610b865298e67c1cf3f6c7d3fba81a15a7b7 Mon Sep 17 00:00:00 2001 From: KINDNICK <68893236+KINDNICK@users.noreply.github.com> Date: Mon, 1 Dec 2025 02:00:50 +0900 Subject: [PATCH] =?UTF-8?q?Fix=20:=20=EC=89=90=EC=9D=B4=EB=8D=94=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=82=AC=ED=95=AD=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EB=B0=8F=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Templates/TemplateMenuItems.cs | 5 + .../Templates/URP/NiloToonEnvironment.shader | 629 ++++------------- .../URP/NiloToonEnvironment.shader.meta | 2 +- .../White Horizon/Material/Grid.mat | 14 +- .../White Horizon/Shader/White Horizon.shader | 666 +++++------------- .../Texture/Grid Texture.png.meta | 2 + .../White Horizon/Global Volume Profile.asset | 2 +- .../Momo_Christmas_Nilo Magica.prefab | 4 +- .../0_헤어/KyeeN/Vela/_MAT/ACC/Jewel4.mat | 4 +- .../최또_251201_라이브방송/모캡용/최또.prefab | 3 + .../모캡용/{최똥.prefab.meta => 최또.prefab.meta} | 0 .../최또_251201_라이브방송/모캡용/최똥.prefab | 3 - .../Etc/Fake Shadow/Fake Shadow.shader | 561 +++++++++------ .../251027_모션촬영/251027_모션촬영.unity | 4 +- .../문모모_최똥_캐릭터 세팅.unity | 4 +- 15 files changed, 695 insertions(+), 1208 deletions(-) create mode 100644 Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab rename Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/{최똥.prefab.meta => 최또.prefab.meta} (100%) delete mode 100644 Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab diff --git a/Assets/External/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMenuItems.cs b/Assets/External/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMenuItems.cs index 7106245b..b1b569f8 100644 --- a/Assets/External/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMenuItems.cs +++ b/Assets/External/AmplifyShaderEditor/Plugins/Editor/Templates/TemplateMenuItems.cs @@ -96,6 +96,11 @@ namespace AmplifyShaderEditor { AmplifyShaderEditorWindow.CreateConfirmationTemplateShader( "2534d4d29a40afc46a3cc49af189fcb4" ); } + [MenuItem( "Assets/Create/Amplify Shader/Universal/NiloToonEnvironment_v2", false, 85 )] + public static void ApplyTemplateUniversalNiloToonEnvironment_v2() + { + AmplifyShaderEditorWindow.CreateConfirmationTemplateShader( "df83b33f62768f64cb5fff5416086758" ); + } [MenuItem( "Assets/Create/Amplify Shader/Universal/Unlit", false, 85 )] public static void ApplyTemplateUniversalUnlit() { diff --git a/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader b/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader index dd82211e..8e4b3c1d 100644 --- a/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader +++ b/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader @@ -9,11 +9,14 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ [ToggleUI] _ReceiveShadows("Receive Shadows", Float) = 1.0 [HideInInspector] _QueueOffset("_QueueOffset", Float) = 0 - [HideInInspector] _QueueControl("_QueueControl", Float) = -1 + [HideInInspector] _QueueControl("_QueueControl", Float) = -1 - [HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} - [HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} - [HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + + // Surface type (0 = Opaque, 1 = Transparent) - required for DBuffer decals + [HideInInspector] _Surface("__surface", Float) = 0.0 // NiloToon Screen Space Outline _ScreenSpaceOutlineIntensity("Screen Space Outline Intensity", Range(0,1)) = 1 @@ -60,12 +63,14 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ true:SetDefine:Forward:pragma shader_feature_local_fragment _ALPHATEST_ON true:SetDefine:ShadowCaster:pragma shader_feature_local _ALPHATEST_ON true:SetDefine:DepthOnly:pragma shader_feature_local _ALPHATEST_ON - true:SetDefine:DepthNormals:pragma shader_feature_local _ALPHATEST_ON + true:SetDefine:DepthNormalsOnly:pragma shader_feature_local _ALPHATEST_ON + true:SetDefine:Meta:pragma shader_feature_local_fragment _ALPHATEST_ON false:HidePort:Forward:Alpha Clip Threshold false:RemoveDefine:Forward:pragma shader_feature_local_fragment _ALPHATEST_ON false:RemoveDefine:ShadowCaster:pragma shader_feature_local _ALPHATEST_ON false:RemoveDefine:DepthOnly:pragma shader_feature_local _ALPHATEST_ON - false:RemoveDefine:DepthNormals:pragma shader_feature_local _ALPHATEST_ON + false:RemoveDefine:DepthNormalsOnly:pragma shader_feature_local _ALPHATEST_ON + false:RemoveDefine:Meta:pragma shader_feature_local_fragment _ALPHATEST_ON Option:Fragment Normal Space:Tangent,Object,World:Tangent Tangent:SetDefine:_NORMAL_DROPOFF_TS 1 Tangent:SetPortName:Forward:1,Normal @@ -104,22 +109,22 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ true:SetDefine:Forward:pragma multi_compile_instancing true:SetDefine:ShadowCaster:pragma multi_compile_instancing true:SetDefine:DepthOnly:pragma multi_compile_instancing - true:SetDefine:DepthNormals:pragma multi_compile_instancing + true:SetDefine:DepthNormalsOnly:pragma multi_compile_instancing true:SetDefine:Meta:pragma multi_compile_instancing false:RemoveDefine:Forward:pragma multi_compile_instancing false:RemoveDefine:ShadowCaster:pragma multi_compile_instancing false:RemoveDefine:DepthOnly:pragma multi_compile_instancing - false:RemoveDefine:DepthNormals:pragma multi_compile_instancing + false:RemoveDefine:DepthNormalsOnly:pragma multi_compile_instancing false:RemoveDefine:Meta:pragma multi_compile_instancing Option:LOD CrossFade:false,true:true true:SetDefine:Forward:pragma multi_compile _ LOD_FADE_CROSSFADE true:SetDefine:ShadowCaster:pragma multi_compile _ LOD_FADE_CROSSFADE true:SetDefine:DepthOnly:pragma multi_compile _ LOD_FADE_CROSSFADE - true:SetDefine:DepthNormals:pragma multi_compile _ LOD_FADE_CROSSFADE + true:SetDefine:DepthNormalsOnly:pragma multi_compile _ LOD_FADE_CROSSFADE false:RemoveDefine:Forward:pragma multi_compile _ LOD_FADE_CROSSFADE false:RemoveDefine:ShadowCaster:pragma multi_compile _ LOD_FADE_CROSSFADE false:RemoveDefine:DepthOnly:pragma multi_compile _ LOD_FADE_CROSSFADE - false:RemoveDefine:DepthNormals:pragma multi_compile _ LOD_FADE_CROSSFADE + false:RemoveDefine:DepthNormalsOnly:pragma multi_compile _ LOD_FADE_CROSSFADE Option:NiloToon Screen Space Outline:false,true:false true:SetDefine:Forward:pragma multi_compile_fragment _ _NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE false:RemoveDefine:Forward:pragma multi_compile_fragment _ _NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE @@ -129,8 +134,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Opaque" - "UniversalMaterialType" = "Lit" - "Queue" = "Geometry" + "UniversalMaterialType" = "ComplexLit" "IgnoreProjector" = "True" } @@ -145,8 +149,6 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ HLSLINCLUDE #pragma target 3.0 #pragma prefer_hlslcc gles - // GPU Instancing not available in WebGL - // #pragma exclude_renderers gles // ENDHLSL /*ase_pass*/ @@ -157,7 +159,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ Tags { "LightMode" = "UniversalForwardOnly" - } + } Blend One Zero ZWrite On @@ -168,19 +170,47 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ /*ase_stencil*/ HLSLPROGRAM + #pragma target 2.0 + // ------------------------------------- + // Shader Stages + #pragma vertex vert + #pragma fragment frag + + // ------------------------------------- + // Material Keywords + #pragma shader_feature_local _NORMALMAP + #pragma shader_feature_local _PARALLAXMAP + #pragma shader_feature_local _RECEIVE_SHADOWS_OFF + #pragma shader_feature_local _ _DETAIL_MULX2 _DETAIL_SCALED + #pragma shader_feature_local_fragment _SURFACE_TYPE_TRANSPARENT + //#pragma shader_feature_local_fragment _ALPHATEST_ON + #pragma shader_feature_local_fragment _ _ALPHAPREMULTIPLY_ON _ALPHAMODULATE_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_fragment _ _CLEARCOAT _CLEARCOATMAP + #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF + #pragma shader_feature_local_fragment _ENVIRONMENTREFLECTIONS_OFF + #pragma shader_feature_local_fragment _SPECULAR_SETUP + + // ------------------------------------- + // 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 _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX + #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS - #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + #pragma multi_compile_fragment _ _SHADOWS_SOFT + #pragma multi_compile_fragment _ _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile _ _LIGHT_LAYERS #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING #pragma multi_compile _ SHADOWS_SHADOWMASK @@ -190,13 +220,6 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile _ USE_LEGACY_LIGHTMAPS - #pragma vertex vert - #pragma fragment frag - - #if defined(_SPECULAR_SETUP) && defined(_SPECULAR_COLOR) - #define _SPECULAR_COLOR 1 - #endif - #define SHADERPASS SHADERPASS_FORWARD #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" @@ -209,8 +232,8 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" - #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" @@ -218,15 +241,17 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif // NiloToon Screen Space Outline Support - // Note: Include NiloToon's utility files for screen space outline functionality #if defined(_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE) - #include "../../../../../../NiloToonURP/ShaderLibrary/NiloUtilityHLSL/NiloAllUtilIncludes.hlsl" + #include "Assets/NiloToonURP/ShaderLibrary/NiloUtilityHLSL/NiloAllUtilIncludes.hlsl" #endif + // NOTE: _DBUFFER is automatically defined in DBuffer.hlsl when _DBUFFER_MRT variants are active + // and _SURFACE_TYPE_TRANSPARENT is not defined. No manual define needed. + /*ase_pragma*/ #if defined(ASE_EARLY_Z_DEPTH_OPTIMIZE) && (SHADER_TARGET >= 45) @@ -260,9 +285,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 normalWS : TEXCOORD1; float4 tangentWS : TEXCOORD2; float4 lightmapUVOrVertexSH : TEXCOORD3; - #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) - half4 fogFactorAndVertexLight : TEXCOORD4; - #endif + half4 fogFactorAndVertexLight : TEXCOORD4; #if defined(DYNAMICLIGHTMAP_ON) float2 dynamicLightmapUV : TEXCOORD5; #endif @@ -281,6 +304,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END // NiloToon Global Uniforms @@ -345,9 +369,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ fogFactor = ComputeFogFactor( vertexInput.positionCS.z ); #endif - #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) - output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); - #endif + output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); // NiloToon screen pos output.screenPos = ComputeScreenPos(output.positionCS); @@ -355,96 +377,10 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - half3 normalOS : NORMAL; - half4 tangentOS : TANGENT; - float4 texcoord : TEXCOORD0; - float4 texcoord1 : TEXCOORD1; - float4 texcoord2 : TEXCOORD2; - /*ase_vcontrol*/ - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.tangentOS = input.tangentOS; - output.texcoord = input.texcoord; - output.texcoord1 = input.texcoord1; - output.texcoord2 = input.texcoord2; - /*ase_control_code:input=Attributes;output=VertexControl*/ - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = /*ase_inline_begin*/_TessValue/*ase_inline_end*/; float tessMin = /*ase_inline_begin*/_TessMin/*ase_inline_end*/; float tessMax = /*ase_inline_begin*/_TessMax/*ase_inline_end*/; - float edgeLength = /*ase_inline_begin*/_TessEdgeLength/*ase_inline_end*/; float tessMaxDisp = /*ase_inline_begin*/_TessMaxDisp/*ase_inline_end*/; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.tangentOS = patch[0].tangentOS * bary.x + patch[1].tangentOS * bary.y + patch[2].tangentOS * bary.z; - output.texcoord = patch[0].texcoord * bary.x + patch[1].texcoord * bary.y + patch[2].texcoord * bary.z; - output.texcoord1 = patch[0].texcoord1 * bary.x + patch[1].texcoord1 * bary.y + patch[2].texcoord1 * bary.z; - output.texcoord2 = patch[0].texcoord2 * bary.x + patch[1].texcoord2 * bary.y + patch[2].texcoord2 * bary.z; - /*ase_domain_code:patch=VertexControl;output=Attributes;bary=SV_DomainLocation*/ - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = /*ase_inline_begin*/_TessPhongStrength/*ase_inline_end*/; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag ( PackedVaryings input #if defined( ASE_DEPTH_WRITE_ON ) @@ -521,13 +457,13 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ inputData.shadowCoord = ShadowCoord; #ifdef _NORMALMAP - #if _NORMAL_DROPOFF_TS - inputData.normalWS = TransformTangentToWorld(Normal, half3x3(TangentWS, BitangentWS, NormalWS)); - #elif _NORMAL_DROPOFF_OS - inputData.normalWS = TransformObjectToWorldNormal(Normal); - #elif _NORMAL_DROPOFF_WS - inputData.normalWS = Normal; - #endif + #if _NORMAL_DROPOFF_TS + inputData.normalWS = TransformTangentToWorld(Normal, half3x3(TangentWS, BitangentWS, NormalWS)); + #elif _NORMAL_DROPOFF_OS + inputData.normalWS = TransformObjectToWorldNormal(Normal); + #elif _NORMAL_DROPOFF_WS + inputData.normalWS = Normal; + #endif inputData.normalWS = NormalizeNormalPerPixel(inputData.normalWS); #else inputData.normalWS = NormalWS; @@ -540,6 +476,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ inputData.vertexLighting = input.fogFactorAndVertexLight.yzw; #endif + // Sample baked GI (same order as Amplify Lit template) float3 SH = input.lightmapUVOrVertexSH.xyz; #if defined(DYNAMICLIGHTMAP_ON) @@ -561,6 +498,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ inputData.bakedGI = inputData.bakedGI * _NiloToonGlobalEnviGITintColor + _NiloToonGlobalEnviGIAddColor; inputData.bakedGI = lerp(inputData.bakedGI, _NiloToonGlobalEnviGIOverride.rgb, _NiloToonGlobalEnviGIOverride.a); + // Setup SurfaceData SurfaceData surfaceData; surfaceData.albedo = BaseColor; surfaceData.metallic = saturate(Metallic); @@ -573,6 +511,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ surfaceData.clearCoatMask = 0; surfaceData.clearCoatSmoothness = 1; + // Apply DBuffer Decal (same order as Amplify Lit template) #if defined(_DBUFFER) ApplyDecalToSurfaceData(input.positionCS, surfaceData, inputData); #endif @@ -622,7 +561,10 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ } #endif - color.rgb = MixFog(color.rgb, inputData.fogCoord); + #ifdef ASE_FOG + color.rgb = MixFog(color.rgb, inputData.fogCoord); + #endif + color.a = OutputAlpha(color.a, IsSurfaceTypeTransparent(_Surface)); #if defined( ASE_DEPTH_WRITE_ON ) @@ -668,8 +610,8 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif /*ase_pragma*/ @@ -698,6 +640,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END /*ase_globals*/ @@ -742,84 +685,10 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - /*ase_vcontrol*/ - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - /*ase_control_code:input=Attributes;output=VertexControl*/ - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = /*ase_inline_begin*/_TessValue/*ase_inline_end*/; float tessMin = /*ase_inline_begin*/_TessMin/*ase_inline_end*/; float tessMax = /*ase_inline_begin*/_TessMax/*ase_inline_end*/; - float edgeLength = /*ase_inline_begin*/_TessEdgeLength/*ase_inline_end*/; float tessMaxDisp = /*ase_inline_begin*/_TessMaxDisp/*ase_inline_end*/; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - /*ase_domain_code:patch=VertexControl;output=Attributes;bary=SV_DomainLocation*/ - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = /*ase_inline_begin*/_TessPhongStrength/*ase_inline_end*/; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input /*ase_frag_input*/ ) : SV_TARGET { @@ -878,8 +747,8 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif /*ase_pragma*/ @@ -908,6 +777,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END /*ase_globals*/ @@ -935,84 +805,10 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - /*ase_vcontrol*/ - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - /*ase_control_code:input=Attributes;output=VertexControl*/ - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = /*ase_inline_begin*/_TessValue/*ase_inline_end*/; float tessMin = /*ase_inline_begin*/_TessMin/*ase_inline_end*/; float tessMax = /*ase_inline_begin*/_TessMax/*ase_inline_end*/; - float edgeLength = /*ase_inline_begin*/_TessEdgeLength/*ase_inline_end*/; float tessMaxDisp = /*ase_inline_begin*/_TessMaxDisp/*ase_inline_end*/; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - /*ase_domain_code:patch=VertexControl;output=Attributes;bary=SV_DomainLocation*/ - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = /*ase_inline_begin*/_TessPhongStrength/*ase_inline_end*/; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input /*ase_frag_input*/ ) : SV_TARGET { @@ -1048,7 +844,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ /*ase_pass*/ Pass { - Name "DepthNormals" + Name "DepthNormalsOnly" Tags { "LightMode" = "DepthNormalsOnly" @@ -1062,37 +858,45 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ #pragma vertex vert #pragma fragment frag - #define SHADERPASS SHADERPASS_DEPTHNORMALS + #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif /*ase_pragma*/ struct Attributes { float4 positionOS : POSITION; - float3 normalOS : NORMAL; - float4 tangentOS : TANGENT; - /*ase_vdata:p=p;n=n;t=t*/ + half3 normalOS : NORMAL; + half4 tangentOS : TANGENT; + half4 texcoord : TEXCOORD0; + /*ase_vdata:p=p;n=n;t=t;uv0=tc0*/ UNITY_VERTEX_INPUT_INSTANCE_ID }; struct PackedVaryings { float4 positionCS : SV_POSITION; - float4 clipPosV : TEXCOORD0; - float3 normalWS : TEXCOORD1; - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - float3 positionWS : TEXCOORD2; - #endif - /*ase_interp(3,):*/ + float3 positionWS : TEXCOORD0; + half3 normalWS : TEXCOORD1; + float4 tangentWS : TEXCOORD2; + /*ase_interp(3,):sp=sp;wp=tc0.xyz;wn=tc1.xyz;wt=tc2*/ UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO }; @@ -1102,118 +906,61 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END /*ase_globals*/ /*ase_funcs*/ - PackedVaryings VertexFunction( Attributes input ) + PackedVaryings VertexFunction( Attributes input /*ase_vert_input*/ ) { - PackedVaryings output; + PackedVaryings output = (PackedVaryings)0; UNITY_SETUP_INSTANCE_ID(input); UNITY_TRANSFER_INSTANCE_ID(input, output); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); /*ase_vert_code:input=Attributes;output=PackedVaryings*/ - float3 positionWS = TransformObjectToWorld( input.positionOS.xyz ); - float3 normalWS = TransformObjectToWorldNormal( input.normalOS ); - float4 positionCS = TransformWorldToHClip( positionWS ); - - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - output.positionWS = positionWS; + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); #endif - output.positionCS = positionCS; - output.clipPosV = positionCS; - output.normalWS = normalWS; + float3 vertexValue = /*ase_vert_out:Vertex Offset;Float3;8;-1;_Vertex*/defaultVertexValue/*end*/; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = /*ase_vert_out:Vertex Normal;Float3;10;-1;_Normal*/input.normalOS/*end*/; + input.tangentOS = /*ase_vert_out:Vertex Tangent;Float4;30;-1;_Tangent*/input.tangentOS/*end*/; + + VertexPositionInputs vertexInput = GetVertexPositionInputs( input.positionOS.xyz ); + VertexNormalInputs normalInput = GetVertexNormalInputs( input.normalOS, input.tangentOS ); + + output.positionCS = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + output.normalWS = normalInput.normalWS; + output.tangentWS = float4( normalInput.tangentWS, ( input.tangentOS.w > 0.0 ? 1.0 : -1.0 ) * GetOddNegativeScale() ); + return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - float4 tangentOS : TANGENT; - /*ase_vcontrol*/ - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.tangentOS = input.tangentOS; - /*ase_control_code:input=Attributes;output=VertexControl*/ - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = /*ase_inline_begin*/_TessValue/*ase_inline_end*/; float tessMin = /*ase_inline_begin*/_TessMin/*ase_inline_end*/; float tessMax = /*ase_inline_begin*/_TessMax/*ase_inline_end*/; - float edgeLength = /*ase_inline_begin*/_TessEdgeLength/*ase_inline_end*/; float tessMaxDisp = /*ase_inline_begin*/_TessMaxDisp/*ase_inline_end*/; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.tangentOS = patch[0].tangentOS * bary.x + patch[1].tangentOS * bary.y + patch[2].tangentOS * bary.z; - /*ase_domain_code:patch=VertexControl;output=Attributes;bary=SV_DomainLocation*/ - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = /*ase_inline_begin*/_TessPhongStrength/*ase_inline_end*/; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif - half4 frag(PackedVaryings input /*ase_frag_input*/ ) : SV_TARGET + void frag( PackedVaryings input + , out half4 outNormalWS : SV_Target0 + #ifdef _WRITE_RENDERING_LAYERS + , out uint outRenderingLayers : SV_Target1 + #endif + /*ase_frag_input*/ ) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -1222,13 +969,9 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ LODFadeCrossFade( input.positionCS ); #endif - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - float3 PositionWS = input.positionWS; - #endif - - float4 ShadowCoord = float4( 0, 0, 0, 0 ); - float4 ClipPos = input.clipPosV; - float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + /*ase_local_var:wp*/float3 PositionWS = input.positionWS; + /*ase_local_var:wn*/float3 NormalWS = input.normalWS; + /*ase_local_var:wt*/float4 TangentWS = input.tangentWS; /*ase_frag_code:input=PackedVaryings*/ @@ -1239,8 +982,20 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ AlphaDiscard( Alpha, AlphaClipThreshold ); #endif - float3 normalWS = input.normalWS; - return half4(NormalizeNormalPerPixel(normalWS), 0.0); + #if defined(_GBUFFER_NORMALS_OCT) + float3 normalWS = normalize(NormalWS); + float2 octNormalWS = PackNormalOctQuadEncode(normalWS); + float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); + half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); + outNormalWS = half4(packedNormalWS, 0.0); + #else + float3 normalWS = NormalizeNormalPerPixel(NormalWS); + outNormalWS = half4(normalWS, 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + outRenderingLayers = EncodeMeshRenderingLayer(); + #endif } ENDHLSL } @@ -1300,6 +1055,7 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END /*ase_globals*/ @@ -1325,93 +1081,10 @@ Shader /*ase_name*/ "Hidden/Universal/NiloToonEnvironment" /*end*/ return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - float4 texcoord : TEXCOORD0; - float4 texcoord1 : TEXCOORD1; - float4 texcoord2 : TEXCOORD2; - /*ase_vcontrol*/ - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.texcoord = input.texcoord; - output.texcoord1 = input.texcoord1; - output.texcoord2 = input.texcoord2; - /*ase_control_code:input=Attributes;output=VertexControl*/ - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = /*ase_inline_begin*/_TessValue/*ase_inline_end*/; float tessMin = /*ase_inline_begin*/_TessMin/*ase_inline_end*/; float tessMax = /*ase_inline_begin*/_TessMax/*ase_inline_end*/; - float edgeLength = /*ase_inline_begin*/_TessEdgeLength/*ase_inline_end*/; float tessMaxDisp = /*ase_inline_begin*/_TessMaxDisp/*ase_inline_end*/; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.texcoord = patch[0].texcoord * bary.x + patch[1].texcoord * bary.y + patch[2].texcoord * bary.z; - output.texcoord1 = patch[0].texcoord1 * bary.x + patch[1].texcoord1 * bary.y + patch[2].texcoord1 * bary.z; - output.texcoord2 = patch[0].texcoord2 * bary.x + patch[1].texcoord2 * bary.y + patch[2].texcoord2 * bary.z; - /*ase_domain_code:patch=VertexControl;output=Attributes;bary=SV_DomainLocation*/ - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = /*ase_inline_begin*/_TessPhongStrength/*ase_inline_end*/; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input /*ase_frag_input*/ ) : SV_TARGET { diff --git a/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader.meta b/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader.meta index be3cc41e..9330f97c 100644 --- a/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader.meta +++ b/Assets/External/AmplifyShaderEditor/Plugins/EditorResources/Templates/URP/NiloToonEnvironment.shader.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2534d4d29a40afc46a3cc49af189fcb4 +guid: df83b33f62768f64cb5fff5416086758 ShaderImporter: externalObjects: {} defaultTextures: [] diff --git a/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat b/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat index 61b83527..d263c909 100644 --- a/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat +++ b/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat @@ -16,8 +16,9 @@ Material: m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} + m_CustomRenderQueue: 1987 + stringTagMap: + RenderType: Opaque disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: @@ -27,6 +28,10 @@ Material: m_Texture: {fileID: 2800000, guid: fd9a6a94cb29b5d45ac48fae83f0d611, type: 3} m_Scale: {x: 200, y: 200} m_Offset: {x: 0, y: 0} + - _BaseTexture: + m_Texture: {fileID: 2800000, guid: fd9a6a94cb29b5d45ac48fae83f0d611, type: 3} + m_Scale: {x: 200, y: 200} + m_Offset: {x: 0, y: 0} - _BumpMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} @@ -109,8 +114,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.005 - _QueueControl: 0 - - _QueueOffset: 0 - - _Radius: 0.098 + - _QueueOffset: -13 + - _Radius: 0.084 - _ReceiveShadows: 1 - _SampleGI: 0 - _ScreenSpaceOutlineIntensity: 1 @@ -124,6 +129,7 @@ Material: - _WorkflowMode: 1 - _XRMotionVectorsPass: 1 - _ZWrite: 1 + - __dirty: 0 m_Colors: - _BaseColor: {r: 1, g: 1, b: 1, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/ResourcesData/Background/White Horizon/Shader/White Horizon.shader b/Assets/ResourcesData/Background/White Horizon/Shader/White Horizon.shader index b3a0f8fb..184a40d3 100644 --- a/Assets/ResourcesData/Background/White Horizon/Shader/White Horizon.shader +++ b/Assets/ResourcesData/Background/White Horizon/Shader/White Horizon.shader @@ -6,7 +6,7 @@ Shader "Mingle/Floor/White Horizon" { [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5 [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1) - _BaseMap( "BaseMap", 2D ) = "white" {} + _BaseTexture( "BaseTexture", 2D ) = "white" {} _Radius( "Radius", Range( 0, 1 ) ) = 1 _Smoothness( "Smoothness", Range( 0.01, 1 ) ) = 0.5 [HideInInspector] _texcoord( "", 2D ) = "white" {} @@ -17,11 +17,14 @@ Shader "Mingle/Floor/White Horizon" [ToggleUI] _ReceiveShadows("Receive Shadows", Float) = 1.0 [HideInInspector] _QueueOffset("_QueueOffset", Float) = 0 - [HideInInspector] _QueueControl("_QueueControl", Float) = -1 + [HideInInspector] _QueueControl("_QueueControl", Float) = -1 - [HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} - [HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} - [HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + + // Surface type (0 = Opaque, 1 = Transparent) - required for DBuffer decals + [HideInInspector] _Surface("__surface", Float) = 0.0 // NiloToon Screen Space Outline _ScreenSpaceOutlineIntensity("Screen Space Outline Intensity", Range(0,1)) = 1 @@ -33,7 +36,7 @@ Shader "Mingle/Floor/White Horizon" { - Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "UniversalMaterialType"="Lit" "Queue"="Geometry" "IgnoreProjector"="True" } + Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "UniversalMaterialType"="ComplexLit" "IgnoreProjector"="True" } Cull Back ZWrite On @@ -46,8 +49,6 @@ Shader "Mingle/Floor/White Horizon" HLSLINCLUDE #pragma target 3.0 #pragma prefer_hlslcc gles - // GPU Instancing not available in WebGL - // #pragma exclude_renderers gles // ENDHLSL @@ -66,7 +67,6 @@ Shader "Mingle/Floor/White Horizon" HLSLPROGRAM - #define _NORMAL_DROPOFF_TS 1 #pragma shader_feature_local_fragment _RECEIVE_SHADOWS_OFF #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF @@ -77,19 +77,47 @@ Shader "Mingle/Floor/White Horizon" #define ASE_VERSION 19904 #define ASE_SRP_VERSION 170200 + #pragma target 2.0 + // ------------------------------------- + // Shader Stages + #pragma vertex vert + #pragma fragment frag + + // ------------------------------------- + // Material Keywords + #pragma shader_feature_local _NORMALMAP + #pragma shader_feature_local _PARALLAXMAP + #pragma shader_feature_local _RECEIVE_SHADOWS_OFF + #pragma shader_feature_local _ _DETAIL_MULX2 _DETAIL_SCALED + #pragma shader_feature_local_fragment _SURFACE_TYPE_TRANSPARENT + //#pragma shader_feature_local_fragment _ALPHATEST_ON + #pragma shader_feature_local_fragment _ _ALPHAPREMULTIPLY_ON _ALPHAMODULATE_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_fragment _ _CLEARCOAT _CLEARCOATMAP + #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF + #pragma shader_feature_local_fragment _ENVIRONMENTREFLECTIONS_OFF + #pragma shader_feature_local_fragment _SPECULAR_SETUP + + // ------------------------------------- + // 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 _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX + #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX + #pragma multi_compile _ _LIGHT_LAYERS + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS - #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + #pragma multi_compile_fragment _ _SHADOWS_SOFT + #pragma multi_compile_fragment _ _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH + #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 - #pragma multi_compile _ _LIGHT_LAYERS #pragma multi_compile_fragment _ _LIGHT_COOKIES - #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING #pragma multi_compile _ SHADOWS_SHADOWMASK @@ -99,13 +127,6 @@ Shader "Mingle/Floor/White Horizon" #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile _ USE_LEGACY_LIGHTMAPS - #pragma vertex vert - #pragma fragment frag - - #if defined(_SPECULAR_SETUP) && defined(_SPECULAR_COLOR) - #define _SPECULAR_COLOR 1 - #endif - #define SHADERPASS SHADERPASS_FORWARD #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" @@ -118,8 +139,8 @@ Shader "Mingle/Floor/White Horizon" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" - #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" @@ -127,15 +148,17 @@ Shader "Mingle/Floor/White Horizon" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif // NiloToon Screen Space Outline Support - // Note: Include NiloToon's utility files for screen space outline functionality #if defined(_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE) - #include "../../../../../../NiloToonURP/ShaderLibrary/NiloUtilityHLSL/NiloAllUtilIncludes.hlsl" + #include "Assets/NiloToonURP/ShaderLibrary/NiloUtilityHLSL/NiloAllUtilIncludes.hlsl" #endif + // NOTE: _DBUFFER is automatically defined in DBuffer.hlsl when _DBUFFER_MRT variants are active + // and _SURFACE_TYPE_TRANSPARENT is not defined. No manual define needed. + #define ASE_NEEDS_TEXTURE_COORDINATES0 #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 @@ -171,9 +194,7 @@ Shader "Mingle/Floor/White Horizon" half3 normalWS : TEXCOORD1; float4 tangentWS : TEXCOORD2; float4 lightmapUVOrVertexSH : TEXCOORD3; - #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) - half4 fogFactorAndVertexLight : TEXCOORD4; - #endif + half4 fogFactorAndVertexLight : TEXCOORD4; #if defined(DYNAMICLIGHTMAP_ON) float2 dynamicLightmapUV : TEXCOORD5; #endif @@ -187,7 +208,7 @@ Shader "Mingle/Floor/White Horizon" }; CBUFFER_START(UnityPerMaterial) - float4 _BaseMap_ST; + float4 _BaseTexture_ST; float _Smoothness; float _Radius; // NiloToon Screen Space Outline @@ -195,6 +216,7 @@ Shader "Mingle/Floor/White Horizon" half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END // NiloToon Global Uniforms @@ -222,7 +244,7 @@ Shader "Mingle/Floor/White Horizon" int _PassValue; #endif - sampler2D _BaseMap; + sampler2D _BaseTexture; @@ -262,9 +284,7 @@ Shader "Mingle/Floor/White Horizon" fogFactor = ComputeFogFactor( vertexInput.positionCS.z ); #endif - #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) - output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); - #endif + output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); // NiloToon screen pos output.screenPos = ComputeScreenPos(output.positionCS); @@ -272,96 +292,10 @@ Shader "Mingle/Floor/White Horizon" return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - half3 normalOS : NORMAL; - half4 tangentOS : TANGENT; - float4 texcoord : TEXCOORD0; - float4 texcoord1 : TEXCOORD1; - float4 texcoord2 : TEXCOORD2; - - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.tangentOS = input.tangentOS; - output.texcoord = input.texcoord; - output.texcoord1 = input.texcoord1; - output.texcoord2 = input.texcoord2; - - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax; - float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.tangentOS = patch[0].tangentOS * bary.x + patch[1].tangentOS * bary.y + patch[2].tangentOS * bary.z; - output.texcoord = patch[0].texcoord * bary.x + patch[1].texcoord * bary.y + patch[2].texcoord * bary.z; - output.texcoord1 = patch[0].texcoord1 * bary.x + patch[1].texcoord1 * bary.y + patch[2].texcoord1 * bary.z; - output.texcoord2 = patch[0].texcoord2 * bary.x + patch[1].texcoord2 * bary.y + patch[2].texcoord2 * bary.z; - - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = _TessPhongStrength; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag ( PackedVaryings input #if defined( ASE_DEPTH_WRITE_ON ) @@ -407,18 +341,18 @@ Shader "Mingle/Floor/White Horizon" float2 temp_cast_1 = (-1.0).xx; float2 texCoord12 = input.ase_texcoord7.xy * temp_cast_0 + temp_cast_1; float smoothstepResult13 = smoothstep( _Radius , ( _Radius - _Smoothness ) , length( texCoord12 )); - float2 uv_BaseMap = input.ase_texcoord7.xy * _BaseMap_ST.xy + _BaseMap_ST.zw; + float2 uv_BaseTexture = input.ase_texcoord7.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; float layeredBlendVar18 = smoothstepResult13; - float4 layeredBlend18 = ( lerp( float4( 1,1,1,1 ),tex2D( _BaseMap, uv_BaseMap ) , layeredBlendVar18 ) ); + float4 layeredBlend18 = ( lerp( float4( 1,1,1,1 ),tex2D( _BaseTexture, uv_BaseTexture ) , layeredBlendVar18 ) ); - float3 BaseColor = float3(0.5, 0.5, 0.5); + float3 BaseColor = layeredBlend18.rgb; float3 Normal = float3(0, 0, 1); float3 Specular = 0.5; - float Metallic = 0; - float Smoothness = 0.5; + float Metallic = 0.0; + float Smoothness = 0.0; float Occlusion = 1; - float3 Emission = layeredBlend18.rgb; + float3 Emission = 0; float Alpha = 1; float AlphaClipThreshold = 0.5; @@ -445,13 +379,13 @@ Shader "Mingle/Floor/White Horizon" inputData.shadowCoord = ShadowCoord; #ifdef _NORMALMAP - #if _NORMAL_DROPOFF_TS - inputData.normalWS = TransformTangentToWorld(Normal, half3x3(TangentWS, BitangentWS, NormalWS)); - #elif _NORMAL_DROPOFF_OS - inputData.normalWS = TransformObjectToWorldNormal(Normal); - #elif _NORMAL_DROPOFF_WS - inputData.normalWS = Normal; - #endif + #if _NORMAL_DROPOFF_TS + inputData.normalWS = TransformTangentToWorld(Normal, half3x3(TangentWS, BitangentWS, NormalWS)); + #elif _NORMAL_DROPOFF_OS + inputData.normalWS = TransformObjectToWorldNormal(Normal); + #elif _NORMAL_DROPOFF_WS + inputData.normalWS = Normal; + #endif inputData.normalWS = NormalizeNormalPerPixel(inputData.normalWS); #else inputData.normalWS = NormalWS; @@ -464,6 +398,7 @@ Shader "Mingle/Floor/White Horizon" inputData.vertexLighting = input.fogFactorAndVertexLight.yzw; #endif + // Sample baked GI (same order as Amplify Lit template) float3 SH = input.lightmapUVOrVertexSH.xyz; #if defined(DYNAMICLIGHTMAP_ON) @@ -485,6 +420,7 @@ Shader "Mingle/Floor/White Horizon" inputData.bakedGI = inputData.bakedGI * _NiloToonGlobalEnviGITintColor + _NiloToonGlobalEnviGIAddColor; inputData.bakedGI = lerp(inputData.bakedGI, _NiloToonGlobalEnviGIOverride.rgb, _NiloToonGlobalEnviGIOverride.a); + // Setup SurfaceData SurfaceData surfaceData; surfaceData.albedo = BaseColor; surfaceData.metallic = saturate(Metallic); @@ -497,6 +433,7 @@ Shader "Mingle/Floor/White Horizon" surfaceData.clearCoatMask = 0; surfaceData.clearCoatSmoothness = 1; + // Apply DBuffer Decal (same order as Amplify Lit template) #if defined(_DBUFFER) ApplyDecalToSurfaceData(input.positionCS, surfaceData, inputData); #endif @@ -546,7 +483,10 @@ Shader "Mingle/Floor/White Horizon" } #endif - color.rgb = MixFog(color.rgb, inputData.fogCoord); + #ifdef ASE_FOG + color.rgb = MixFog(color.rgb, inputData.fogCoord); + #endif + color.a = OutputAlpha(color.a, IsSurfaceTypeTransparent(_Surface)); #if defined( ASE_DEPTH_WRITE_ON ) @@ -596,8 +536,8 @@ Shader "Mingle/Floor/White Horizon" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif @@ -622,13 +562,14 @@ Shader "Mingle/Floor/White Horizon" }; CBUFFER_START(UnityPerMaterial) - float4 _BaseMap_ST; + float4 _BaseTexture_ST; float _Smoothness; float _Radius; float _ScreenSpaceOutlineIntensity; half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END @@ -672,84 +613,10 @@ Shader "Mingle/Floor/White Horizon" return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax; - float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = _TessPhongStrength; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input ) : SV_TARGET { @@ -812,8 +679,8 @@ Shader "Mingle/Floor/White Horizon" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif @@ -838,13 +705,14 @@ Shader "Mingle/Floor/White Horizon" }; CBUFFER_START(UnityPerMaterial) - float4 _BaseMap_ST; + float4 _BaseTexture_ST; float _Smoothness; float _Radius; float _ScreenSpaceOutlineIntensity; half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END @@ -871,84 +739,10 @@ Shader "Mingle/Floor/White Horizon" return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax; - float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = _TessPhongStrength; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input ) : SV_TARGET { @@ -984,7 +778,7 @@ Shader "Mingle/Floor/White Horizon" Pass { - Name "DepthNormals" + Name "DepthNormalsOnly" Tags { "LightMode"="DepthNormalsOnly" } ZWrite On @@ -1002,24 +796,34 @@ Shader "Mingle/Floor/White Horizon" #pragma vertex vert #pragma fragment frag - #define SHADERPASS SHADERPASS_DEPTHNORMALS + #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #if defined(LOD_FADE_CROSSFADE) - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" - #endif + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif struct Attributes { float4 positionOS : POSITION; - float3 normalOS : NORMAL; - float4 tangentOS : TANGENT; + half3 normalOS : NORMAL; + half4 tangentOS : TANGENT; + half4 texcoord : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; @@ -1027,135 +831,76 @@ Shader "Mingle/Floor/White Horizon" struct PackedVaryings { float4 positionCS : SV_POSITION; - float4 clipPosV : TEXCOORD0; - float3 normalWS : TEXCOORD1; - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - float3 positionWS : TEXCOORD2; - #endif + float3 positionWS : TEXCOORD0; + half3 normalWS : TEXCOORD1; + float4 tangentWS : TEXCOORD2; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO }; CBUFFER_START(UnityPerMaterial) - float4 _BaseMap_ST; + float4 _BaseTexture_ST; float _Smoothness; float _Radius; float _ScreenSpaceOutlineIntensity; half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END - PackedVaryings VertexFunction( Attributes input ) + PackedVaryings VertexFunction( Attributes input ) { - PackedVaryings output; + PackedVaryings output = (PackedVaryings)0; UNITY_SETUP_INSTANCE_ID(input); UNITY_TRANSFER_INSTANCE_ID(input, output); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); - float3 positionWS = TransformObjectToWorld( input.positionOS.xyz ); - float3 normalWS = TransformObjectToWorldNormal( input.normalOS ); - float4 positionCS = TransformWorldToHClip( positionWS ); - - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - output.positionWS = positionWS; + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); #endif - output.positionCS = positionCS; - output.clipPosV = positionCS; - output.normalWS = normalWS; + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + input.tangentOS = input.tangentOS; + + VertexPositionInputs vertexInput = GetVertexPositionInputs( input.positionOS.xyz ); + VertexNormalInputs normalInput = GetVertexNormalInputs( input.normalOS, input.tangentOS ); + + output.positionCS = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + output.normalWS = normalInput.normalWS; + output.tangentWS = float4( normalInput.tangentWS, ( input.tangentOS.w > 0.0 ? 1.0 : -1.0 ) * GetOddNegativeScale() ); + return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - float4 tangentOS : TANGENT; - - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.tangentOS = input.tangentOS; - - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax; - float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.tangentOS = patch[0].tangentOS * bary.x + patch[1].tangentOS * bary.y + patch[2].tangentOS * bary.z; - - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = _TessPhongStrength; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif - half4 frag(PackedVaryings input ) : SV_TARGET + void frag( PackedVaryings input + , out half4 outNormalWS : SV_Target0 + #ifdef _WRITE_RENDERING_LAYERS + , out uint outRenderingLayers : SV_Target1 + #endif + ) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); @@ -1164,13 +909,9 @@ Shader "Mingle/Floor/White Horizon" LODFadeCrossFade( input.positionCS ); #endif - #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) - float3 PositionWS = input.positionWS; - #endif - - float4 ShadowCoord = float4( 0, 0, 0, 0 ); - float4 ClipPos = input.clipPosV; - float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + float3 PositionWS = input.positionWS; + float3 NormalWS = input.normalWS; + float4 TangentWS = input.tangentWS; @@ -1181,8 +922,20 @@ Shader "Mingle/Floor/White Horizon" AlphaDiscard( Alpha, AlphaClipThreshold ); #endif - float3 normalWS = input.normalWS; - return half4(NormalizeNormalPerPixel(normalWS), 0.0); + #if defined(_GBUFFER_NORMALS_OCT) + float3 normalWS = normalize(NormalWS); + float2 octNormalWS = PackNormalOctQuadEncode(normalWS); + float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); + half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); + outNormalWS = half4(packedNormalWS, 0.0); + #else + float3 normalWS = NormalizeNormalPerPixel(NormalWS); + outNormalWS = half4(normalWS, 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + outRenderingLayers = EncodeMeshRenderingLayer(); + #endif } ENDHLSL } @@ -1243,16 +996,17 @@ Shader "Mingle/Floor/White Horizon" }; CBUFFER_START(UnityPerMaterial) - float4 _BaseMap_ST; + float4 _BaseTexture_ST; float _Smoothness; float _Radius; float _ScreenSpaceOutlineIntensity; half3 _ScreenSpaceOutlineColor; float _ScreenSpaceOutlineWidth; float _Surface; + /*ase_srp_batcher*/ CBUFFER_END - sampler2D _BaseMap; + sampler2D _BaseTexture; @@ -1278,93 +1032,10 @@ Shader "Mingle/Floor/White Horizon" return output; } - #if defined(ASE_TESSELLATION) - struct VertexControl - { - float4 positionOS : INTERNALTESSPOS; - float3 normalOS : NORMAL; - float4 texcoord : TEXCOORD0; - float4 texcoord1 : TEXCOORD1; - float4 texcoord2 : TEXCOORD2; - - UNITY_VERTEX_INPUT_INSTANCE_ID - }; - - struct TessellationFactors - { - float edge[3] : SV_TessFactor; - float inside : SV_InsideTessFactor; - }; - - VertexControl vert ( Attributes input ) - { - VertexControl output; - UNITY_SETUP_INSTANCE_ID(input); - UNITY_TRANSFER_INSTANCE_ID(input, output); - output.positionOS = input.positionOS; - output.normalOS = input.normalOS; - output.texcoord = input.texcoord; - output.texcoord1 = input.texcoord1; - output.texcoord2 = input.texcoord2; - - return output; - } - - TessellationFactors TessellationFunction (InputPatch input) - { - TessellationFactors output; - float4 tf = 1; - float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax; - float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp; - #if defined(ASE_FIXED_TESSELLATION) - tf = FixedTess( tessValue ); - #elif defined(ASE_DISTANCE_TESSELLATION) - tf = DistanceBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); - #elif defined(ASE_LENGTH_TESSELLATION) - tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); - #elif defined(ASE_LENGTH_CULL_TESSELLATION) - tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); - #endif - output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; - return output; - } - - [domain("tri")] - [partitioning("fractional_odd")] - [outputtopology("triangle_cw")] - [patchconstantfunc("TessellationFunction")] - [outputcontrolpoints(3)] - VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) - { - return patch[id]; - } - - [domain("tri")] - PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) - { - Attributes output = (Attributes) 0; - output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; - output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; - output.texcoord = patch[0].texcoord * bary.x + patch[1].texcoord * bary.y + patch[2].texcoord * bary.z; - output.texcoord1 = patch[0].texcoord1 * bary.x + patch[1].texcoord1 * bary.y + patch[2].texcoord1 * bary.z; - output.texcoord2 = patch[0].texcoord2 * bary.x + patch[1].texcoord2 * bary.y + patch[2].texcoord2 * bary.z; - - #if defined(ASE_PHONG_TESSELLATION) - float3 pp[3]; - for (int i = 0; i < 3; ++i) - pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); - float phongStrength = _TessPhongStrength; - output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; - #endif - UNITY_TRANSFER_INSTANCE_ID(patch[0], output); - return VertexFunction(output); - } - #else PackedVaryings vert ( Attributes input ) { return VertexFunction( input ); } - #endif half4 frag(PackedVaryings input ) : SV_TARGET { @@ -1381,13 +1052,13 @@ Shader "Mingle/Floor/White Horizon" float2 temp_cast_1 = (-1.0).xx; float2 texCoord12 = input.ase_texcoord1.xy * temp_cast_0 + temp_cast_1; float smoothstepResult13 = smoothstep( _Radius , ( _Radius - _Smoothness ) , length( texCoord12 )); - float2 uv_BaseMap = input.ase_texcoord1.xy * _BaseMap_ST.xy + _BaseMap_ST.zw; + float2 uv_BaseTexture = input.ase_texcoord1.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; float layeredBlendVar18 = smoothstepResult13; - float4 layeredBlend18 = ( lerp( float4( 1,1,1,1 ),tex2D( _BaseMap, uv_BaseMap ) , layeredBlendVar18 ) ); + float4 layeredBlend18 = ( lerp( float4( 1,1,1,1 ),tex2D( _BaseTexture, uv_BaseTexture ) , layeredBlendVar18 ) ); - float3 BaseColor = float3(0.5, 0.5, 0.5); - float3 Emission = layeredBlend18.rgb; + float3 BaseColor = layeredBlend18.rgb; + float3 Emission = 0; float Alpha = 1; float AlphaClipThreshold = 0.5; @@ -1414,19 +1085,20 @@ Shader "Mingle/Floor/White Horizon" Version=19904 Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;10;-1408,-32;Inherit;False;Constant;_1;-1;0;0;Create;True;0;0;0;False;0;False;-1;0;0;0;0;1;FLOAT;0 Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;11;-1408,-112;Inherit;False;Constant;_2;2;0;0;Create;True;0;0;0;False;0;False;2;0;0;0;0;1;FLOAT;0 -Node;AmplifyShaderEditor.TextureCoordinatesNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;12;-1280,-112;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;7;-1280,80;Inherit;False;Property;_Smoothness;Smoothness;2;0;Create;True;0;0;0;False;0;False;0.5;0.5;0.01;1;0;1;FLOAT;0 +Node;AmplifyShaderEditor.TextureCoordinatesNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;12;-1280,-112;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SimpleSubtractOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;8;-992,48;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.LengthOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;9;-992,-16;Inherit;False;1;0;FLOAT2;0,0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;6;-1280,16;Inherit;False;Property;_Radius;Radius;1;0;Create;True;0;0;0;False;0;False;1;1;0;1;0;1;FLOAT;0 Node;AmplifyShaderEditor.SmoothstepOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;13;-864,0;Inherit;True;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0 -Node;AmplifyShaderEditor.SamplerNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;5;-944,-240;Inherit;True;Property;_BaseMap;BaseMap;0;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;False;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 +Node;AmplifyShaderEditor.SamplerNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;5;-944,-240;Inherit;True;Property;_BaseTexture;BaseTexture;0;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;False;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 Node;AmplifyShaderEditor.LayeredBlendNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;18;-624,-240;Inherit;False;6;0;FLOAT;0;False;1;COLOR;1,1,1,1;False;2;COLOR;1,1,1,1;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;1;COLOR;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;1;-352,-120.4;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;14;New Amplify Shader;2534d4d29a40afc46a3cc49af189fcb4;True;ShadowCaster;0;1;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;5;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=Lit;Queue=Geometry=Queue=0;IgnoreProjector=True;True;2;True;11;d3d11;glcore;gles3;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;False;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=ShadowCaster;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;2;-352,-87.39999;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;14;New Amplify Shader;2534d4d29a40afc46a3cc49af189fcb4;True;DepthOnly;0;2;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;5;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=Lit;Queue=Geometry=Queue=0;IgnoreProjector=True;True;2;True;11;d3d11;glcore;gles3;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;True;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;True;1;LightMode=DepthOnly;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;3;-352,-54.39999;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;14;New Amplify Shader;2534d4d29a40afc46a3cc49af189fcb4;True;DepthNormals;0;3;DepthNormals;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;5;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=Lit;Queue=Geometry=Queue=0;IgnoreProjector=True;True;2;True;11;d3d11;glcore;gles3;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;4;-352,-21.39999;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;14;New Amplify Shader;2534d4d29a40afc46a3cc49af189fcb4;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;5;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=Lit;Queue=Geometry=Queue=0;IgnoreProjector=True;True;2;True;11;d3d11;glcore;gles3;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Meta;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;0;-352,-352;Float;False;True;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;14;Mingle/Floor/White Horizon;2534d4d29a40afc46a3cc49af189fcb4;True;Forward;0;0;Forward;10;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;5;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=Lit;Queue=Geometry=Queue=0;IgnoreProjector=True;True;2;True;11;d3d11;glcore;gles3;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;False;True;1;1;False;;0;False;;1;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=UniversalForwardOnly;False;False;0;;0;0;Standard;14;Workflow;1;0;Surface;0;0; Blend;0;0;Two Sided;1;0;Alpha Clipping;0;0;Fragment Normal Space;0;0;Cast Shadows;1;0;Receive Shadows;2;0;Specular Highlights;2;0;Environment Reflections;2;0;Receive SSAO;1;0;GPU Instancing;1;0;LOD CrossFade;1;0;NiloToon Screen Space Outline;0;0;0;5;True;True;True;True;True;False;;False;0 +Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;19;-455.1483,-37.39032;Inherit;False;Constant;_Float0;Float 0;3;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;71;-192,-336;Float;False;True;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;20;Mingle/Floor/White Horizon;df83b33f62768f64cb5fff5416086758;True;Forward;0;0;Forward;10;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=ComplexLit;IgnoreProjector=True;True;2;False;0;False;True;1;1;False;;0;False;;1;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=UniversalForwardOnly;True;0;False;0;;0;0;Standard;14;Workflow;1;0;Surface;0;0; Blend;0;0;Two Sided;1;0;Alpha Clipping;0;0;Fragment Normal Space;0;0;Cast Shadows;1;0;Receive Shadows;2;0;Specular Highlights;2;0;Environment Reflections;2;0;Receive SSAO;1;0;GPU Instancing;1;0;LOD CrossFade;1;0;NiloToon Screen Space Outline;0;0;0;5;True;True;True;True;True;False;;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;72;-192,-104.4;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;20;New Amplify Shader;df83b33f62768f64cb5fff5416086758;True;ShadowCaster;0;1;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=ComplexLit;IgnoreProjector=True;True;2;False;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;False;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=ShadowCaster;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;73;-192,-71.39999;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;20;New Amplify Shader;df83b33f62768f64cb5fff5416086758;True;DepthOnly;0;2;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=ComplexLit;IgnoreProjector=True;True;2;False;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;True;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;True;1;LightMode=DepthOnly;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;75;-192,-38.39999;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;20;New Amplify Shader;df83b33f62768f64cb5fff5416086758;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=ComplexLit;IgnoreProjector=True;True;2;False;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Meta;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;76;-176,192;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;300;20;New Amplify Shader;df83b33f62768f64cb5fff5416086758;True;DepthNormalsOnly;0;3;DepthNormalsOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;UniversalMaterialType=ComplexLit;IgnoreProjector=True;True;2;False;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;False;0;;0;0;Standard;0;False;0 WireConnection;12;0;11;0 WireConnection;12;1;10;0 WireConnection;8;0;6;0 @@ -1437,6 +1109,8 @@ WireConnection;13;1;6;0 WireConnection;13;2;8;0 WireConnection;18;0;13;0 WireConnection;18;2;5;0 -WireConnection;0;2;18;0 +WireConnection;71;0;18;0 +WireConnection;71;3;19;0 +WireConnection;71;4;19;0 ASEEND*/ -//CHKSM=2BD7053C0628F168A0CD2BFDD6E819C4CD45A937 \ No newline at end of file +//CHKSM=8B1CA8DE0570E445AF37A3658FBEA2444B0B4CEB \ No newline at end of file diff --git a/Assets/ResourcesData/Background/White Horizon/Texture/Grid Texture.png.meta b/Assets/ResourcesData/Background/White Horizon/Texture/Grid Texture.png.meta index d3b2e162..255dca36 100644 --- a/Assets/ResourcesData/Background/White Horizon/Texture/Grid Texture.png.meta +++ b/Assets/ResourcesData/Background/White Horizon/Texture/Grid Texture.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/White Horizon/White Horizon/Global Volume Profile.asset b/Assets/ResourcesData/Background/White Horizon/White Horizon/Global Volume Profile.asset index 69eaad05..8edc0065 100644 --- a/Assets/ResourcesData/Background/White Horizon/White Horizon/Global Volume Profile.asset +++ b/Assets/ResourcesData/Background/White Horizon/White Horizon/Global Volume Profile.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4af923a9eea1196498948f9e3f4933f02540340cad6f66088cfcde47beba82fb +oid sha256:371b932656d3e0d7ab1fd387460cdb77356f846edb6024b2998c4771dbabd51b size 9611 diff --git a/Assets/ResourcesData/Character/@017_문모모/Avatar/문모모_251201_라이브 방송/@ MOMO/4, Prefab/의상, 아바타 전달용/Momo_Christmas_Nilo Magica.prefab b/Assets/ResourcesData/Character/@017_문모모/Avatar/문모모_251201_라이브 방송/@ MOMO/4, Prefab/의상, 아바타 전달용/Momo_Christmas_Nilo Magica.prefab index 1c75d0ba..55d7becb 100644 --- a/Assets/ResourcesData/Character/@017_문모모/Avatar/문모모_251201_라이브 방송/@ MOMO/4, Prefab/의상, 아바타 전달용/Momo_Christmas_Nilo Magica.prefab +++ b/Assets/ResourcesData/Character/@017_문모모/Avatar/문모모_251201_라이브 방송/@ MOMO/4, Prefab/의상, 아바타 전달용/Momo_Christmas_Nilo Magica.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2111e1c24921b406b7eaf2e1aebd25a5193bc3f43d9a6762c571f2c2ca6de592 -size 853395 +oid sha256:25a27652c66c3c75ac188d504434499be6de1e010942f7403578d400b88179f4 +size 855126 diff --git a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/0_헤어/KyeeN/Vela/_MAT/ACC/Jewel4.mat b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/0_헤어/KyeeN/Vela/_MAT/ACC/Jewel4.mat index 1cf8ddef..b894e6be 100644 --- a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/0_헤어/KyeeN/Vela/_MAT/ACC/Jewel4.mat +++ b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/0_헤어/KyeeN/Vela/_MAT/ACC/Jewel4.mat @@ -1573,7 +1573,7 @@ Material: - _BackFaceTintColor: {r: 1, g: 1, b: 1, a: 1} - _BackfaceColor: {r: 0, g: 0, b: 0, a: 0} - _BacklightColor: {r: 0.85, g: 0.8, b: 0.7, a: 1} - - _BaseColor: {r: 0.6037736, g: 0.40126592, b: 0.23638302, a: 1} + - _BaseColor: {r: 0.6037736, g: 0.40126583, b: 0.23638296, a: 1} - _BaseColor2: {r: 1, g: 1, b: 1, a: 1} - _BaseMapStackingLayer10MaskTexChannel: {r: 0, g: 1, b: 0, a: 0} - _BaseMapStackingLayer10TexUVAnimSpeed: {r: 0, g: 0, b: 0, a: 0} @@ -1631,7 +1631,7 @@ Material: - _CharacterAreaColorFillTextureUVScrollSpeed: {r: 0, g: 0, b: 0, a: 1} - _CharacterAreaColorFillTextureUVTilingOffset: {r: 1, g: 1, b: 0, a: 0} - _CharacterBoundCenterPosWS: {r: 0, g: 0, b: 0, a: 1} - - _Color: {r: 0.6037736, g: 0.40126592, b: 0.23638302, a: 1} + - _Color: {r: 0.6037736, g: 0.40126583, b: 0.23638296, a: 1} - _Color2nd: {r: 1, g: 1, b: 1, a: 1} - _Color3rd: {r: 1, g: 1, b: 1, a: 1} - _DepthTexRimLightAndShadowWidthMultiplierFromVertexColorChannelMask: {r: 0, g: 1, b: 0, a: 0} diff --git a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab new file mode 100644 index 00000000..1aacd9be --- /dev/null +++ b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7423b55aaceada5ffcae1f3db9ca7315eaa9f9def1274e94fa0d5d277628156 +size 902840 diff --git a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab.meta b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab.meta similarity index 100% rename from Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab.meta rename to Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최또.prefab.meta diff --git a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab b/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab deleted file mode 100644 index ef3a797d..00000000 --- a/Assets/ResourcesData/Character/@040_최또/Avatar/최또_251201_라이브방송/모캡용/최똥.prefab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13bb4efd1b6754f0dbd28accf83355d1881d9b1bd09acda07d9601e067246692 -size 682124 diff --git a/Assets/ResourcesData/Etc/Fake Shadow/Fake Shadow.shader b/Assets/ResourcesData/Etc/Fake Shadow/Fake Shadow.shader index 734ab41a..e34ea514 100644 --- a/Assets/ResourcesData/Etc/Fake Shadow/Fake Shadow.shader +++ b/Assets/ResourcesData/Etc/Fake Shadow/Fake Shadow.shader @@ -1,4 +1,4 @@ -// Made with Amplify Shader Editor v1.9.8.1 +// Made with Amplify Shader Editor v1.9.9.4 // Available at the Unity Asset Store - http://u3d.as/y3X Shader "Util function/Fake Shadow" { @@ -6,9 +6,9 @@ Shader "Util function/Fake Shadow" { [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5 [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1) - _ShadowColor("Shadow Color", Color) = (1,1,1,1) - _MainTex("MainTex", 2D) = "white" {} - _BlurRadius("Blur Radius", Range( 0 , 10)) = 0 + _ShadowColor( "Shadow Color", Color ) = ( 1, 1, 1, 1 ) + _MainTex( "MainTex", 2D ) = "white" {} + _BlurRadius( "Blur Radius", Range( 0, 10 ) ) = 0 [HideInInspector] _DrawOrder("Draw Order", Range(-50, 50)) = 0 @@ -61,8 +61,9 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert @@ -82,14 +83,8 @@ Shader "Util function/Fake Shadow" #define HAVE_MESH_MODIFICATION #define SHADERPASS SHADERPASS_DBUFFER_PROJECTOR - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -110,6 +105,13 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 @@ -171,17 +173,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -216,7 +231,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -357,12 +371,16 @@ Shader "Util function/Fake Shadow" float4 positionCS = ComputeClipSpacePosition( positionSS, depth ); float4 hpositionVS = mul( UNITY_MATRIX_I_P, positionCS ); - float3 positionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); - float3 positionWS = positionRWS + _WorldSpaceCameraPos; - float3 positionOS = TransformWorldToObject( positionWS ); - float3 positionVS = TransformWorldToView( positionWS ); - float3 positionDS = TransformWorldToObject(positionWS); + float4 ScreenPosNorm = float4( positionSS, positionCS.zw ); + float4 ClipPos = positionCS * packedInput.positionCS.w; + float4 ScreenPos = ComputeScreenPos( ClipPos ); + float3 PositionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); + float3 PositionWS = PositionRWS + _WorldSpaceCameraPos; + float3 PositionOS = TransformWorldToObject( PositionWS ); + float3 PositionVS = TransformWorldToView( PositionWS ); + + float3 positionDS = TransformWorldToObject(PositionWS); positionDS = positionDS * float3(1.0, -1.0, 1.0); float clipValue = 0.5 - Max3(abs(positionDS).x, abs(positionDS).y, abs(positionDS).z); @@ -443,21 +461,21 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert #pragma fragment Frag #pragma multi_compile_instancing - #pragma multi_compile_fog #pragma editor_sync_compilation #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_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 _ _CLUSTER_LIGHT_LOOP #pragma multi_compile_fragment _ _LIGHT_COOKIES #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH @@ -481,14 +499,8 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DECAL_SCREEN_SPACE_PROJECTOR - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -508,6 +520,13 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 @@ -578,17 +597,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -627,7 +659,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -709,9 +740,9 @@ Shader "Util function/Fake Shadow" #endif #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.dynamicLightmapUV.xy, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, input.lightmapUVs.zw, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #elif defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) #if !defined(LIGHTMAP_ON) && (defined(PROBE_VOLUMES_L1) || defined(PROBE_VOLUMES_L2)) @@ -723,19 +754,19 @@ Shader "Util function/Fake Shadow" input.probeOcclusion, inputData.shadowMask); #else - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #endif #endif #if defined(DEBUG_DISPLAY) #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.dynamicLightmapUV = input.dynamicLightmapUV.xy; + inputData.dynamicLightmapUV = input.lightmapUVs.zw; #endif #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) && defined(LIGHTMAP_ON) - inputData.staticLightmapUV = input.staticLightmapUV + inputData.staticLightmapUV = input.lightmapUVs.xy; #elif defined(VARYINGS_NEED_SH) inputData.vertexSH = input.sh; #endif @@ -792,11 +823,11 @@ Shader "Util function/Fake Shadow" packedOutput.viewDirectionWS.xyz = GetWorldSpaceViewDir(positionWS); #if defined(LIGHTMAP_ON) - OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.staticLightmapUV); + OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.lightmapUVs.xy); #endif #if defined(DYNAMICLIGHTMAP_ON) - packedOutput.dynamicLightmapUV.xy = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + packedOutput.lightmapUVs.zw = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; #endif #if !defined(LIGHTMAP_ON) @@ -858,12 +889,16 @@ Shader "Util function/Fake Shadow" float4 positionCS = ComputeClipSpacePosition( positionSS, depth ); float4 hpositionVS = mul( UNITY_MATRIX_I_P, positionCS ); - float3 positionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); - float3 positionWS = positionRWS + _WorldSpaceCameraPos; - float3 positionOS = TransformWorldToObject( positionWS ); - float3 positionVS = TransformWorldToView( positionWS ); - float3 positionDS = TransformWorldToObject(positionWS); + float4 ScreenPosNorm = float4( positionSS, positionCS.zw ); + float4 ClipPos = positionCS * packedInput.positionCS.w; + float4 ScreenPos = ComputeScreenPos( ClipPos ); + float3 PositionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); + float3 PositionWS = PositionRWS + _WorldSpaceCameraPos; + float3 PositionOS = TransformWorldToObject( PositionWS ); + float3 PositionVS = TransformWorldToView( PositionWS ); + + float3 positionDS = TransformWorldToObject(PositionWS); positionDS = positionDS * float3(1.0, -1.0, 1.0); float clipValue = 0.5 - Max3(abs(positionDS).x, abs(positionDS).y, abs(positionDS).z); @@ -934,7 +969,7 @@ Shader "Util function/Fake Shadow" #endif InputData inputData; - InitializeInputData( packedInput, positionWS, surfaceData.normalWS.xyz, viewDirectionWS, inputData); + InitializeInputData( packedInput, PositionWS, surfaceData.normalWS.xyz, viewDirectionWS, inputData); SurfaceData surface = (SurfaceData)0; GetSurface(surfaceData, surface); @@ -969,14 +1004,14 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert #pragma fragment Frag #pragma multi_compile_instancing - #pragma multi_compile_fog #pragma editor_sync_compilation #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN @@ -1003,14 +1038,8 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DECAL_GBUFFER_PROJECTOR - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -1022,7 +1051,7 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/GBufferOutput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl" @@ -1031,6 +1060,13 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 @@ -1100,17 +1136,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -1149,7 +1198,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -1231,9 +1279,9 @@ Shader "Util function/Fake Shadow" #endif #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.dynamicLightmapUV.xy, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, input.lightmapUVs.zw, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #elif defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) #if !defined(LIGHTMAP_ON) && (defined(PROBE_VOLUMES_L1) || defined(PROBE_VOLUMES_L2)) @@ -1245,19 +1293,19 @@ Shader "Util function/Fake Shadow" input.probeOcclusion, inputData.shadowMask); #else - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #endif #endif #if defined(DEBUG_DISPLAY) #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.dynamicLightmapUV = input.dynamicLightmapUV.xy; + inputData.dynamicLightmapUV = input.lightmapUVs.zw; #endif #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) && defined(LIGHTMAP_ON) - inputData.staticLightmapUV = input.staticLightmapUV + inputData.staticLightmapUV = input.lightmapUVs.xy; #elif defined(VARYINGS_NEED_SH) inputData.vertexSH = input.sh; #endif @@ -1304,11 +1352,11 @@ Shader "Util function/Fake Shadow" packedOutput.viewDirectionWS.xyz = GetWorldSpaceViewDir(positionWS); #if defined(LIGHTMAP_ON) - OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.staticLightmapUV); + OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.lightmapUVs.xy); #endif #if defined(DYNAMICLIGHTMAP_ON) - packedOutput.dynamicLightmapUV.xy = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + packedOutput.lightmapUVs.zw = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; #endif #if !defined(LIGHTMAP_ON) @@ -1319,13 +1367,28 @@ Shader "Util function/Fake Shadow" } void Frag(PackedVaryings packedInput, - out FragmentOutput fragmentOutput + out GBufferFragOutput fragmentOutput ) { + //PassGBuffer.template + #pragma warning (disable : 3578) // The output value isn't completely initialized. + GBufferFragOutput tempFragmentOutput = (GBufferFragOutput)0; UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(packedInput); UNITY_SETUP_INSTANCE_ID(packedInput); + //VFXComputePixelOutputToGBuffer(packedInput, tempFragmentOutput); + fragmentOutput.gBuffer0 = tempFragmentOutput.gBuffer0; + fragmentOutput.gBuffer1 = tempFragmentOutput.gBuffer1; + fragmentOutput.gBuffer2 = tempFragmentOutput.gBuffer2; + fragmentOutput.color = tempFragmentOutput.color; + + #if defined(GBUFFER_FEATURE_SHADOWMASK) + fragmentOutput.shadowMask = tempFragmentOutput.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) + #endif + #pragma warning (default : 3578) // Restore output value isn't completely initialized. + + half angleFadeFactor = 1.0; #ifdef _DECAL_LAYERS @@ -1370,12 +1433,16 @@ Shader "Util function/Fake Shadow" float4 positionCS = ComputeClipSpacePosition( positionSS, depth ); float4 hpositionVS = mul( UNITY_MATRIX_I_P, positionCS ); - float3 positionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); - float3 positionWS = positionRWS + _WorldSpaceCameraPos; - float3 positionOS = TransformWorldToObject( positionWS ); - float3 positionVS = TransformWorldToView( positionWS ); - float3 positionDS = TransformWorldToObject(positionWS); + float4 ScreenPosNorm = float4( positionSS, positionCS.zw ); + float4 ClipPos = positionCS * packedInput.positionCS.w; + float4 ScreenPos = ComputeScreenPos( ClipPos ); + float3 PositionRWS = mul( ( float3x3 )UNITY_MATRIX_I_V, hpositionVS.xyz / hpositionVS.w ); + float3 PositionWS = PositionRWS + _WorldSpaceCameraPos; + float3 PositionOS = TransformWorldToObject( PositionWS ); + float3 PositionVS = TransformWorldToView( PositionWS ); + + float3 positionDS = TransformWorldToObject(PositionWS); positionDS = positionDS * float3(1.0, -1.0, 1.0); float clipValue = 0.5 - Max3(abs(positionDS).x, abs(positionDS).y, abs(positionDS).z); @@ -1441,12 +1508,13 @@ Shader "Util function/Fake Shadow" GetSurfaceData(surfaceDescription, angleFadeFactor, surfaceData); half3 normalToPack = surfaceData.normalWS.xyz; + #ifdef DECAL_RECONSTRUCT_NORMAL surfaceData.normalWS.xyz = normalize(lerp(normalWS.xyz, surfaceData.normalWS.xyz, surfaceData.normalWS.w)); #endif InputData inputData; - InitializeInputData(packedInput, positionWS, surfaceData.normalWS.xyz, viewDirectionWS, inputData); + InitializeInputData(packedInput, PositionWS, surfaceData.normalWS.xyz, viewDirectionWS, inputData); SurfaceData surface = (SurfaceData)0; GetSurface(surfaceData, surface); @@ -1462,16 +1530,21 @@ Shader "Util function/Fake Shadow" half3 color = 0; #endif - #pragma warning (disable : 3578) // The output value isn't completely initialized. - half3 packedNormalWS = PackNormal(normalToPack); - fragmentOutput.GBuffer0 = half4(surfaceData.baseColor.rgb, surfaceData.baseColor.a); - fragmentOutput.GBuffer1 = 0; - fragmentOutput.GBuffer2 = half4(packedNormalWS, surfaceData.normalWS.a); - fragmentOutput.GBuffer3 = half4(surfaceData.emissive + color, surfaceData.baseColor.a); - #if OUTPUT_SHADOWMASK - fragmentOutput.GBuffer4 = inputData.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) + //PassGBuffer.template + half3 packedNormalWS = PackGBufferNormal(surfaceData.normalWS.xyz); + fragmentOutput = (GBufferFragOutput)0; + fragmentOutput.gBuffer0 = half4(surfaceData.baseColor.rgb, surfaceData.baseColor.a); + fragmentOutput.gBuffer1 = 0; + fragmentOutput.gBuffer2 = half4(packedNormalWS, surfaceData.normalWS.a); + #if defined(AFFECT_BASE_COLOR) || defined(AFFECT_EMISSIVE) + fragmentOutput.color = half4(surfaceData.emissive + color, surfaceData.baseColor.a); + #else + fragmentOutput.color = 0; + #endif + + #if defined(GBUFFER_FEATURE_SHADOWMASK) + fragmentOutput.shadowMask = inputData.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) #endif - #pragma warning (default : 3578) // Restore output value isn't completely initialized. } ENDHLSL @@ -1496,8 +1569,9 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert @@ -1526,14 +1600,8 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DBUFFER_MESH - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -1554,7 +1622,16 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif - + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + + #define ASE_NEEDS_TEXTURE_COORDINATES0 + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 + struct SurfaceDescription { @@ -1621,17 +1698,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -1667,7 +1757,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -1758,9 +1847,6 @@ Shader "Util function/Fake Shadow" UNITY_TRANSFER_INSTANCE_ID(inputMesh, packedOutput); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(packedOutput); - inputMesh.tangentOS = float4( 1, 0, 0, -1 ); - inputMesh.normalOS = float3( 0, 1, 0 ); - VertexPositionInputs vertexInput = GetVertexPositionInputs(inputMesh.positionOS.xyz); @@ -1867,27 +1953,28 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert #pragma fragment Frag #pragma multi_compile_instancing - #pragma multi_compile_fog #pragma editor_sync_compilation #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ USE_LEGACY_LIGHTMAPS + #pragma multi_compile _ LIGHTMAP_BICUBIC_SAMPLING #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_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING #pragma multi_compile _ SHADOWS_SHADOWMASK - #pragma multi_compile _ _FORWARD_PLUS + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #pragma multi_compile _DECAL_NORMAL_BLEND_LOW _DECAL_NORMAL_BLEND_MEDIUM _DECAL_NORMAL_BLEND_HIGH #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile _ _DECAL_LAYERS @@ -1915,14 +2002,8 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DECAL_SCREEN_SPACE_MESH - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -1942,7 +2023,16 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif - + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + + #define ASE_NEEDS_TEXTURE_COORDINATES0 + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 + struct SurfaceDescription { @@ -2017,17 +2107,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -2067,7 +2170,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -2159,9 +2261,9 @@ Shader "Util function/Fake Shadow" #endif #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.dynamicLightmapUV.xy, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, input.lightmapUVs.zw, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #elif defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) #if !defined(LIGHTMAP_ON) && (defined(PROBE_VOLUMES_L1) || defined(PROBE_VOLUMES_L2)) @@ -2173,19 +2275,19 @@ Shader "Util function/Fake Shadow" input.probeOcclusion, inputData.shadowMask); #else - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #endif #endif #if defined(DEBUG_DISPLAY) #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.dynamicLightmapUV = input.dynamicLightmapUV.xy; + inputData.dynamicLightmapUV = input.lightmapUVs.zw; #endif #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) && defined(LIGHTMAP_ON) - inputData.staticLightmapUV = input.staticLightmapUV + inputData.staticLightmapUV = input.lightmapUVs.xy; #elif defined(VARYINGS_NEED_SH) inputData.vertexSH = input.sh; #endif @@ -2225,9 +2327,6 @@ Shader "Util function/Fake Shadow" UNITY_TRANSFER_INSTANCE_ID(inputMesh, packedOutput); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(packedOutput); - inputMesh.tangentOS = float4( 1, 0, 0, -1 ); - inputMesh.normalOS = float3( 0, 1, 0 ); - VertexPositionInputs vertexInput = GetVertexPositionInputs(inputMesh.positionOS.xyz); @@ -2257,11 +2356,11 @@ Shader "Util function/Fake Shadow" packedOutput.viewDirectionWS.xyz = GetWorldSpaceViewDir(positionWS); #if defined(LIGHTMAP_ON) - OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.staticLightmapUV); + OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.lightmapUVs.xy); #endif #if defined(DYNAMICLIGHTMAP_ON) - packedOutput.dynamicLightmapUV.xy = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + packedOutput.lightmapUVs.zw = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; #endif #if !defined(LIGHTMAP_ON) @@ -2377,20 +2476,21 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma vertex Vert #pragma fragment Frag #pragma multi_compile_instancing - #pragma multi_compile_fog #pragma editor_sync_compilation #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ USE_LEGACY_LIGHTMAPS + #pragma multi_compile _ LIGHTMAP_BICUBIC_SAMPLING #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING @@ -2423,14 +2523,8 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DECAL_GBUFFER_MESH - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -2442,7 +2536,7 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" - #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/UnityGBuffer.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/GBufferOutput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl" @@ -2451,7 +2545,16 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" #endif - + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + + #define ASE_NEEDS_TEXTURE_COORDINATES0 + #define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0 + struct SurfaceDescription { @@ -2526,17 +2629,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -2576,7 +2692,6 @@ Shader "Util function/Fake Shadow" float sgn = input.tangentWS.w; float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz); half3x3 tangentToWorld = half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz); - surfaceData.normalWS.xyz = normalize(TransformTangentToWorld(surfaceDescription.NormalTS, tangentToWorld)); #else surfaceData.normalWS.xyz = normalize(half3(input.normalWS)); @@ -2667,9 +2782,9 @@ Shader "Util function/Fake Shadow" #endif #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.dynamicLightmapUV.xy, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, input.lightmapUVs.zw, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #elif defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) #if !defined(LIGHTMAP_ON) && (defined(PROBE_VOLUMES_L1) || defined(PROBE_VOLUMES_L2)) @@ -2681,19 +2796,19 @@ Shader "Util function/Fake Shadow" input.probeOcclusion, inputData.shadowMask); #else - inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, half3(input.sh), normalWS); + inputData.bakedGI = SAMPLE_GI(input.lightmapUVs.xy, half3(input.sh), normalWS); #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) - inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + inputData.shadowMask = SAMPLE_SHADOWMASK(input.lightmapUVs.xy); #endif #endif #endif #if defined(DEBUG_DISPLAY) #if defined(VARYINGS_NEED_DYNAMIC_LIGHTMAP_UV) && defined(DYNAMICLIGHTMAP_ON) - inputData.dynamicLightmapUV = input.dynamicLightmapUV.xy; + inputData.dynamicLightmapUV = input.lightmapUVs.zw; #endif #if defined(VARYINGS_NEED_STATIC_LIGHTMAP_UV) && defined(LIGHTMAP_ON) - inputData.staticLightmapUV = input.staticLightmapUV + inputData.staticLightmapUV = input.lightmapUVs.xy; #elif defined(VARYINGS_NEED_SH) inputData.vertexSH = input.sh; #endif @@ -2733,9 +2848,6 @@ Shader "Util function/Fake Shadow" UNITY_TRANSFER_INSTANCE_ID(inputMesh, packedOutput); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(packedOutput); - inputMesh.tangentOS = float4( 1, 0, 0, -1 ); - inputMesh.normalOS = float3( 0, 1, 0 ); - VertexPositionInputs vertexInput = GetVertexPositionInputs(inputMesh.positionOS.xyz); @@ -2758,11 +2870,11 @@ Shader "Util function/Fake Shadow" packedOutput.viewDirectionWS.xyz = GetWorldSpaceViewDir(positionWS); #if defined(LIGHTMAP_ON) - OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.staticLightmapUV); + OUTPUT_LIGHTMAP_UV(inputMesh.uv1, unity_LightmapST, packedOutput.lightmapUVs.xy); #endif #if defined(DYNAMICLIGHTMAP_ON) - packedOutput.dynamicLightmapUV.xy = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + packedOutput.lightmapUVs.zw = inputMesh.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; #endif #if !defined(LIGHTMAP_ON) @@ -2781,7 +2893,7 @@ Shader "Util function/Fake Shadow" } void Frag(PackedVaryings packedInput, - out FragmentOutput fragmentOutput + out GBufferFragOutput fragmentOutput ) { @@ -2870,14 +2982,16 @@ Shader "Util function/Fake Shadow" #endif #pragma warning (disable : 3578) // The output value isn't completely initialized. - half3 packedNormalWS = PackNormal(normalToPack); - fragmentOutput.GBuffer0 = half4(surfaceData.baseColor.rgb, surfaceData.baseColor.a); - fragmentOutput.GBuffer1 = 0; - fragmentOutput.GBuffer2 = half4(packedNormalWS, surfaceData.normalWS.a); - fragmentOutput.GBuffer3 = half4(surfaceData.emissive + color, surfaceData.baseColor.a); - #if OUTPUT_SHADOWMASK - fragmentOutput.GBuffer4 = inputData.shadowMask; // will have unity_ProbesOcclusion value if subtractive lighting is used (baked) + half3 packedNormalWS = PackGBufferNormal(normalToPack); + fragmentOutput.gBuffer0 = half4(surfaceData.baseColor.rgb, surfaceData.baseColor.a); + fragmentOutput.gBuffer1 = 0; + fragmentOutput.gBuffer2 = half4(packedNormalWS, surfaceData.normalWS.a); + fragmentOutput.color = half4(surfaceData.emissive + color, surfaceData.baseColor.a); + + #if defined(GBUFFER_FEATURE_SHADOWMASK) + fragmentOutput.shadowMask = inputData.shadowMask; #endif + #pragma warning (default : 3578) // Restore output value isn't completely initialized. } @@ -2897,8 +3011,9 @@ Shader "Util function/Fake Shadow" HLSLPROGRAM #define _MATERIAL_AFFECTS_ALBEDO 1 - #define ASE_VERSION 19801 - #define ASE_SRP_VERSION 170003 + #define _MATERIAL_AFFECTS_NORMAL_BLEND 1 + #define ASE_VERSION 19904 + #define ASE_SRP_VERSION 170200 #pragma multi_compile_instancing @@ -2915,13 +3030,6 @@ Shader "Util function/Fake Shadow" #define SHADERPASS SHADERPASS_DEPTHONLY #define SCENEPICKINGPASS 1 - #if _RENDER_PASS_ENABLED - #define GBUFFER3 0 - #define GBUFFER4 1 - FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); - FRAMEBUFFER_INPUT_X_HALF(GBUFFER4); - #endif - #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" @@ -2936,7 +3044,15 @@ Shader "Util function/Fake Shadow" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DecalInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderVariablesDecal.hlsl" - + #if _RENDER_PASS_ENABLED + #define GBUFFER3 0 + #define GBUFFER4 1 + FRAMEBUFFER_INPUT_X_HALF(GBUFFER3); + FRAMEBUFFER_INPUT_X_UINT(GBUFFER4); + #endif + + #define ASE_NEEDS_TEXTURE_COORDINATES0 + struct Attributes { @@ -2984,17 +3100,30 @@ Shader "Util function/Fake Shadow" { float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}; float kernelSum = 0.0; - float blurAlpha = 0.0; - // 블러 강도에 따라 샘플링 오프셋 조정 + float blurResult = 0.0; for (int x = -6; x <= 6; x++) { for (int y = -6; y <= 6; y++) { + float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius; float weight = kernel[abs(x)] * kernel[abs(y)]; - blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight; + + // 텍스처 샘플링 + float4 texColor = tex2D(tex, sampleUV); + + // RGB → 그레이스케일 (luminance 방식) + float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114)); + + // 그레이스케일 * 1000000 → 클램프(0,1) + float boostedGray = saturate(grayscale * 1000000.0); + + // 알파와 더하기 → 클램프(0,1) + float combined = saturate(boostedGray + texColor.a); + + // 가중치 적용 + blurResult += combined * weight; kernelSum += weight; } } - // 정규화하여 최종 값 반환 - return blurAlpha / kernelSum; + return blurResult / kernelSum; } @@ -3087,7 +3216,7 @@ Shader "Util function/Fake Shadow" float3 BaseColor = temp_output_20_0.rgb; - outColor = _SelectionID; + outColor = unity_SelectionID; } ENDHLSL } @@ -3098,32 +3227,30 @@ Shader "Util function/Fake Shadow" Fallback Off } /*ASEBEGIN -Version=19801 -Node;AmplifyShaderEditor.TexturePropertyNode;24;-1728,48;Inherit;True;Property;_MainTex;MainTex;1;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1 -Node;AmplifyShaderEditor.TextureCoordinatesNode;28;-1440,320;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 -Node;AmplifyShaderEditor.RangedFloatNode;30;-1552,496;Inherit;False;Property;_BlurRadius;Blur Radius;2;0;Create;True;0;0;0;False;0;False;0;0;0;10;0;1;FLOAT;0 -Node;AmplifyShaderEditor.ColorNode;21;-1136,64;Inherit;False;Property;_ShadowColor;Shadow Color;0;0;Create;True;0;0;0;False;0;False;1,1,1,1;1,1,1,1;True;True;0;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 -Node;AmplifyShaderEditor.CustomExpressionNode;23;-1088,288;Inherit;False; float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}@$ float kernelSum = 0.0@$ float blurAlpha = 0.0@$$ // 블러 강도에 따라 샘플링 오프셋 조정$ for (int x = -6@ x <= 6@ x++) {$ for (int y = -6@ y <= 6@ y++) {$ float weight = kernel[abs(x)] * kernel[abs(y)]@$ blurAlpha += tex2D(tex, uv + texelSize * float2(x, y) * blurRadius).a * weight@$ kernelSum += weight@$ }$ }$$ // 정규화하여 최종 값 반환$ return blurAlpha / kernelSum@;1;Create;4;True;tex;SAMPLER2D;;In;;Inherit;False;True;uv;FLOAT2;0,0;In;;Inherit;False;True;texelSize;FLOAT2;0.0002441406,0.0002441406;In;;Inherit;False;True;blurRadius;FLOAT;0;In;;Float;False;GaussianBlur;True;False;0;;False;4;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT2;0.0002441406,0.0002441406;False;3;FLOAT;0;False;1;FLOAT;0 -Node;AmplifyShaderEditor.SamplerNode;27;-1424,-256;Inherit;True;Property;_TextureSample0;Texture Sample 0;2;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 -Node;AmplifyShaderEditor.SimpleMultiplyOpNode;20;-848,-80;Inherit;False;2;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 -Node;AmplifyShaderEditor.BreakToComponentsNode;29;-638.307,131.2985;Inherit;False;COLOR;1;0;COLOR;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;11;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DBufferProjector;0;0;DBufferProjector;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;False;False;False;False;True;1;False;;False;False;False;True;False;False;False;False;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DBufferProjector;False;True;9;d3d11;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;12;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalProjectorForwardEmissive;0;1;DecalProjectorForwardEmissive;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;8;5;False;;1;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalProjectorForwardEmissive;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;13;0,0;Float;False;True;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;Util function/Fake Shadow;c2a467ab6d5391a4ea692226d82ffefd;True;DecalScreenSpaceProjector;0;2;DecalScreenSpaceProjector;9;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalScreenSpaceProjector;False;False;0;;0;0;Standard;7;Affect BaseColor;1;0;Affect Normal;0;638824822181487303;Blend;0;638824822142402961;Affect MAOS;0;638824822138530880;Affect Emission;0;0;Support LOD CrossFade;0;0;Angle Fade;0;638824822193992285;0;9;True;False;True;True;True;False;True;True;True;False;;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;14;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalGBufferProjector;0;3;DecalGBufferProjector;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;True;1;False;;False;False;False;True;False;False;False;False;0;False;;False;True;False;False;False;False;0;False;;False;True;True;True;True;False;0;False;;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalGBufferProjector;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;15;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DBufferMesh;0;4;DBufferMesh;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;False;False;False;False;False;False;False;False;True;False;False;False;False;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DBufferMesh;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;16;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalMeshForwardEmissive;0;5;DecalMeshForwardEmissive;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;8;5;False;;1;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DecalMeshForwardEmissive;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;17;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalScreenSpaceMesh;0;6;DecalScreenSpaceMesh;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DecalScreenSpaceMesh;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;18;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalGBufferMesh;0;7;DecalGBufferMesh;1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;True;False;False;False;False;0;False;;False;True;False;False;False;False;0;False;;False;True;True;True;True;False;0;False;;False;False;False;True;2;False;;False;False;True;1;LightMode=DecalGBufferMesh;False;False;0;;0;0;Standard;0;False;0 -Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;19;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;ScenePickingPass;0;8;ScenePickingPass;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Picking;False;False;0;;0;0;Standard;0;False;0 +Version=19904 +Node;AmplifyShaderEditor.TextureCoordinatesNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;28;-1440,320;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;30;-1552,496;Inherit;False;Property;_BlurRadius;Blur Radius;2;0;Create;True;0;0;0;False;0;False;0;0;0;10;0;1;FLOAT;0 +Node;AmplifyShaderEditor.TexturePropertyNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;24;-1520,96;Inherit;True;Property;_MainTex;MainTex;1;0;Create;True;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;False;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1 +Node;AmplifyShaderEditor.ColorNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;21;-1136,64;Inherit;False;Property;_ShadowColor;Shadow Color;0;0;Create;True;0;0;0;False;0;False;1,1,1,1;1,1,1,1;True;True;0;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 +Node;AmplifyShaderEditor.CustomExpressionNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;23;-1088,288;Inherit;False; float kernel[12] = {0.02, 0.05, 0.08, 0.12, 0.15, 0.18, 0.18, 0.15, 0.12, 0.08, 0.05, 0.02}@$ float kernelSum = 0.0@$ float blurResult = 0.0@$$ for (int x = -6@ x <= 6@ x++) {$ for (int y = -6@ y <= 6@ y++) {$ float2 sampleUV = uv + texelSize * float2(x, y) * blurRadius@$ float weight = kernel[abs(x)] * kernel[abs(y)]@$ $ // 텍스처 샘플링$ float4 texColor = tex2D(tex, sampleUV)@$ $ // RGB → 그레이스케일 (luminance 방식)$ float grayscale = dot(texColor.rgb, float3(0.299, 0.587, 0.114))@$ $ // 그레이스케일 * 1000000 → 클램프(0,1)$ float boostedGray = saturate(grayscale * 1000000.0)@$ $ // 알파와 더하기 → 클램프(0,1)$ float combined = saturate(boostedGray + texColor.a)@$ $ // 가중치 적용$ blurResult += combined * weight@$ kernelSum += weight@$ }$ }$$ return blurResult / kernelSum@;1;Create;4;True;tex;SAMPLER2D;;In;;Inherit;False;True;uv;FLOAT2;0,0;In;;Inherit;False;True;texelSize;FLOAT2;0.0002441406,0.0002441406;In;;Inherit;False;True;blurRadius;FLOAT;0;In;;Float;False;GaussianBlur;True;False;0;;False;4;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT2;0.0002441406,0.0002441406;False;3;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;20;-848,-80;Inherit;False;2;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.BreakToComponentsNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;29;-638.307,131.2985;Inherit;False;COLOR;1;0;COLOR;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;11;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DBufferProjector;0;0;DBufferProjector;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;False;False;False;False;True;1;False;;False;False;False;True;False;False;False;False;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DBufferProjector;False;True;9;d3d11;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;12;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalProjectorForwardEmissive;0;1;DecalProjectorForwardEmissive;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;8;5;False;;1;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalProjectorForwardEmissive;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;13;0,0;Float;False;True;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;15;Util function/Fake Shadow;c2a467ab6d5391a4ea692226d82ffefd;True;DecalScreenSpaceProjector;0;2;DecalScreenSpaceProjector;9;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalScreenSpaceProjector;False;False;0;;0;0;Standard;7;Affect BaseColor;1;0;Affect Normal;0;638824822181487303; Blend;0;0;Affect MAOS;0;638824822138530880;Affect Emission;0;0;Support LOD CrossFade;0;0;Angle Fade;0;638824822193992285;0;9;True;False;True;True;True;False;True;True;True;False;;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;14;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalGBufferProjector;0;3;DecalGBufferProjector;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;True;1;False;;False;False;False;True;False;False;False;False;0;False;;False;True;False;False;False;False;0;False;;False;True;True;True;True;False;0;False;;False;False;False;True;2;False;;True;2;False;;False;True;1;LightMode=DecalGBufferProjector;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;15;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DBufferMesh;0;4;DBufferMesh;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;True;2;5;False;;10;False;;1;0;False;;10;False;;False;False;False;False;False;False;False;False;False;False;True;False;False;False;False;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DBufferMesh;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;16;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalMeshForwardEmissive;0;5;DecalMeshForwardEmissive;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;8;5;False;;1;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DecalMeshForwardEmissive;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;17;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalScreenSpaceMesh;0;6;DecalScreenSpaceMesh;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;True;3;False;;False;True;1;LightMode=DecalScreenSpaceMesh;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;18;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;DecalGBufferMesh;0;7;DecalGBufferMesh;1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;True;2;5;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;True;False;False;False;False;0;False;;False;True;False;False;False;False;0;False;;False;True;True;True;True;False;0;False;;False;False;False;True;2;False;;False;False;True;1;LightMode=DecalGBufferMesh;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;19;0,0;Float;False;False;-1;2;UnityEditor.Rendering.Universal.DecalShaderGraphGUI;0;14;New Amplify Shader;c2a467ab6d5391a4ea692226d82ffefd;True;ScenePickingPass;0;8;ScenePickingPass;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;5;RenderPipeline=UniversalPipeline;PreviewType=Plane;DisableBatching=LODFading=DisableBatching;ShaderGraphShader=true;ShaderGraphTargetId=UniversalDecalSubTarget;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Picking;False;False;0;;0;0;Standard;0;False;0 WireConnection;23;0;24;0 WireConnection;23;1;28;0 WireConnection;23;3;30;0 -WireConnection;27;0;24;0 WireConnection;20;0;23;0 WireConnection;20;1;21;0 WireConnection;29;0;20;0 WireConnection;13;0;20;0 WireConnection;13;1;29;3 ASEEND*/ -//CHKSM=8371BDC4078B3445C901A743545BC9CD1B50EED6 \ No newline at end of file +//CHKSM=90683DD262D715771941E1AD78ADCE635E74E004 \ No newline at end of file diff --git a/Assets/ResourcesData/Project/251027_모션촬영/251027_모션촬영.unity b/Assets/ResourcesData/Project/251027_모션촬영/251027_모션촬영.unity index 4eaa1575..59ce619a 100644 --- a/Assets/ResourcesData/Project/251027_모션촬영/251027_모션촬영.unity +++ b/Assets/ResourcesData/Project/251027_모션촬영/251027_모션촬영.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9699e2177390e3fb37e5d2e0b7a12f75726cacc9d0c4765c77cf5923fc3a3f0d -size 604006 +oid sha256:aae1c34534ffb72897f216b727089d2100d242ea1212806bbfe6d736d8cead21 +size 610714 diff --git a/Assets/ResourcesData/Project/251201_문모모_최똥_방송/문모모_최똥_캐릭터 세팅.unity b/Assets/ResourcesData/Project/251201_문모모_최똥_방송/문모모_최똥_캐릭터 세팅.unity index ca02df70..6e760d9a 100644 --- a/Assets/ResourcesData/Project/251201_문모모_최똥_방송/문모모_최똥_캐릭터 세팅.unity +++ b/Assets/ResourcesData/Project/251201_문모모_최똥_방송/문모모_최똥_캐릭터 세팅.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83b464958c5cd03e89e9272c329bb004f4c3e07b4d7c29ed86afb52ab2dbff13 -size 306091 +oid sha256:b012c3d66f27a8a558266e9b0011df9e02ebbaefde315fb987adf2fe9febac5a +size 201418