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
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
|