Spine-SkeletonLit-ShadowCasterPass-URP.hlsl 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef SKELETONLIT_SHADOW_CASTER_PASS_URP_INCLUDED
  2. #define SKELETONLIT_SHADOW_CASTER_PASS_URP_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
  4. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  5. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"
  6. float3 _LightDirection;
  7. struct AttributesSpine
  8. {
  9. float4 positionOS : POSITION;
  10. float3 normalOS : NORMAL;
  11. float4 vertexColor : COLOR;
  12. float2 texcoord : TEXCOORD0;
  13. UNITY_VERTEX_INPUT_INSTANCE_ID
  14. };
  15. struct VaryingsSpine
  16. {
  17. float4 positionCS : SV_POSITION;
  18. float4 texcoordAndAlpha: TEXCOORD0;
  19. };
  20. float4 GetShadowPositionHClip(AttributesSpine input)
  21. {
  22. float3 positionWS = TransformObjectToWorld(input.positionOS.xyz);
  23. float3 normalWS = TransformObjectToWorldNormal(input.normalOS);
  24. float4 positionCS = TransformWorldToHClip(ApplyShadowBias(positionWS, normalWS, _LightDirection));
  25. #if UNITY_REVERSED_Z
  26. positionCS.z = min(positionCS.z, positionCS.w * UNITY_NEAR_CLIP_VALUE);
  27. #else
  28. positionCS.z = max(positionCS.z, positionCS.w * UNITY_NEAR_CLIP_VALUE);
  29. #endif
  30. return positionCS;
  31. }
  32. VaryingsSpine ShadowPassVertexSkeletonLit(AttributesSpine input)
  33. {
  34. VaryingsSpine output;
  35. UNITY_SETUP_INSTANCE_ID(input);
  36. output.texcoordAndAlpha.xyz = float3(TRANSFORM_TEX(input.texcoord, _MainTex).xy, 0);
  37. output.positionCS = GetShadowPositionHClip(input);
  38. output.texcoordAndAlpha.a = input.vertexColor.a;
  39. return output;
  40. }
  41. half4 ShadowPassFragmentSkeletonLit(VaryingsSpine input) : SV_TARGET
  42. {
  43. fixed4 texureColor = tex2D(_MainTex, input.texcoordAndAlpha.xy);
  44. clip(texureColor.a * input.texcoordAndAlpha.a - _Cutoff);
  45. return 0;
  46. }
  47. #endif