You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
2.0 KiB

#ifndef SPRITE_NORMALS_PASS_URP_INCLUDED
#define SPRITE_NORMALS_PASS_URP_INCLUDED
#include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/LightingUtility.hlsl"
#include "../Include/SpineCoreShaders/ShaderShared.cginc"
#include "../Include/SpineCoreShaders/SpriteLighting.cginc"
struct Varyings
{
float4 positionCS : SV_POSITION;
float4 color : COLOR;
float2 uv : TEXCOORD0;
float3 normalWS : TEXCOORD1;
float3 tangentWS : TEXCOORD2;
float3 bitangentWS : TEXCOORD3;
};
SAMPLER(sampler_BumpMap);
float4 _BumpMap_ST;
Varyings NormalsRenderingVertex(VertexInput attributes)
{
Varyings o = (Varyings)0;
o.positionCS = calculateLocalPos(attributes.vertex);
o.uv = attributes.texcoord.xy;
o.color = attributes.color;
o.normalWS = TransformObjectToWorldDir(float3(0, 0, -1));
float3 positionWS = TransformObjectToWorld(attributes.vertex.xyz);
float backFaceSign = 1;
#if defined(FIXED_NORMALS_BACKFACE_RENDERING)
backFaceSign = calculateBackfacingSign(positionWS.xyz);
#endif
half3 normalWS = calculateSpriteWorldNormal(attributes, -backFaceSign);
o.normalWS.xyz = normalWS;
#if defined(_NORMALMAP)
o.tangentWS.xyz = calculateWorldTangent(attributes.tangent);
o.bitangentWS.xyz = calculateSpriteWorldBinormal(attributes, o.normalWS.xyz, o.tangentWS.xyz, backFaceSign);
#endif
return o;
}
#include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/NormalsRenderingShared.hlsl"
half4 NormalsRenderingFragment(Varyings i) : SV_Target
{
half4 mainTex = i.color * tex2D(_MainTex, i.uv);
#if defined(_NORMALMAP)
half3 normalTS = normalize(UnpackScaleNormal(tex2D(_BumpMap, i.uv.xy), _BumpScale));
return NormalsRenderingShared(mainTex, normalTS, i.tangentWS.xyz, i.bitangentWS.xyz, i.normalWS.xyz);
#else
half3 normalTS = half3(0, 0, 1);
half3 tangentWS = half3(0, 0, 0);
half3 bitangentWS = half3(0, 0, 0);
half3 normalWS = i.normalWS.xyz;
return NormalsRenderingShared(mainTex, normalTS, tangentWS, bitangentWS, normalWS);
#endif
}
#endif