Forráskód Böngészése

[unity] Fixed `Universal Render Pipeline/2D/Spine/Sprite` normals being incorrect in transparent areas. Closes #1588.

Harald Csaszar 5 éve
szülő
commit
c1fd32abfd

+ 47 - 43
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-SkeletonLit-URP-2D.shader

@@ -170,46 +170,50 @@
 		}
 
 		Pass
-        {
+		{
 			Name "Unlit"
-            Tags { "LightMode" = "UniversalForward" "Queue"="Transparent" "RenderType"="Transparent"}
-
-            HLSLPROGRAM
-            #pragma prefer_hlslcc gles
-            #pragma vertex UnlitVertex
-            #pragma fragment UnlitFragment
-
-            struct Attributes
-            {
-                float3 positionOS   : POSITION;
-                float4 color		: COLOR;
-                float2 uv			: TEXCOORD0;
-            };
-
-            struct Varyings
-            {
-                float4  positionCS		: SV_POSITION;
-                float4  color			: COLOR;
-                float2	uv				: TEXCOORD0;
-            };
-
-            TEXTURE2D(_MainTex);
-            SAMPLER(sampler_MainTex);
-            float4 _MainTex_ST;
-
-            Varyings UnlitVertex(Attributes attributes)
-            {
-                Varyings o = (Varyings)0;
-
-                o.positionCS = TransformObjectToHClip(attributes.positionOS);
-                o.uv = TRANSFORM_TEX(attributes.uv, _MainTex);
-                o.uv = attributes.uv;
-                o.color = attributes.color;
-                return o;
-            }
-
-            float4 UnlitFragment(Varyings i) : SV_Target
-            {
+			Tags { "LightMode" = "UniversalForward" "Queue"="Transparent" "RenderType"="Transparent"}
+
+			ZWrite Off
+			Cull Off
+			Blend One OneMinusSrcAlpha
+
+			HLSLPROGRAM
+			#pragma prefer_hlslcc gles
+			#pragma vertex UnlitVertex
+			#pragma fragment UnlitFragment
+
+			struct Attributes
+			{
+				float3 positionOS   : POSITION;
+				float4 color		: COLOR;
+				float2 uv			: TEXCOORD0;
+			};
+
+			struct Varyings
+			{
+				float4  positionCS		: SV_POSITION;
+				float4  color			: COLOR;
+				float2	uv				: TEXCOORD0;
+			};
+
+			TEXTURE2D(_MainTex);
+			SAMPLER(sampler_MainTex);
+			float4 _MainTex_ST;
+
+			Varyings UnlitVertex(Attributes attributes)
+			{
+				Varyings o = (Varyings)0;
+
+				o.positionCS = TransformObjectToHClip(attributes.positionOS);
+				o.uv = TRANSFORM_TEX(attributes.uv, _MainTex);
+				o.uv = attributes.uv;
+				o.color = attributes.color;
+				return o;
+			}
+
+			float4 UnlitFragment(Varyings i) : SV_Target
+			{
 				half4 tex = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);
 				half4 main;
 				#if defined(_STRAIGHT_ALPHA_INPUT)
@@ -219,10 +223,10 @@
 				#endif
 				main.a = tex.a * i.color.a;
 
-                return main;
-            }
-            ENDHLSL
-        }
+				return main;
+			}
+			ENDHLSL
+		}
 	}
 	FallBack "Universal Render Pipeline/2D/Sprite-Lit-Default"
 }

+ 11 - 8
spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/Spine-Sprite-URP-2D.shader

@@ -111,12 +111,15 @@ Shader "Universal Render Pipeline/2D/Spine/Sprite"
 		}
 
 		Pass
-        {
-            Tags { "LightMode" = "NormalsRendering"}
-            HLSLPROGRAM
-            #pragma prefer_hlslcc gles
-            #pragma vertex NormalsRenderingVertex
-            #pragma fragment NormalsRenderingFragment
+		{
+			Tags { "LightMode" = "NormalsRendering"}
+
+			Blend SrcAlpha OneMinusSrcAlpha
+
+			HLSLPROGRAM
+			#pragma prefer_hlslcc gles
+			#pragma vertex NormalsRenderingVertex
+			#pragma fragment NormalsRenderingFragment
 
 			// -------------------------------------
 			// Material Keywords
@@ -138,8 +141,8 @@ Shader "Universal Render Pipeline/2D/Spine/Sprite"
 
 			#include "Include/Spine-Sprite-NormalsPass-URP-2D.hlsl"
 
-            ENDHLSL
-        }
+			ENDHLSL
+		}
 
 		UsePass "Universal Render Pipeline/2D/Spine/Skeleton Lit/UNLIT"
 	}