92 lines
2.0 KiB
HLSL
92 lines
2.0 KiB
HLSL
#ifndef SPRITE_UNLIT_INCLUDED
|
|
#define SPRITE_UNLIT_INCLUDED
|
|
|
|
#include "ShaderShared.cginc"
|
|
#if defined(_ALPHAPREMULTIPLY_ON)
|
|
#undef _STRAIGHT_ALPHA_INPUT
|
|
#else
|
|
#define _STRAIGHT_ALPHA_INPUT
|
|
#endif
|
|
#include "../../CGIncludes/Spine-Skeleton-Tint-Common.cginc"
|
|
|
|
////////////////////////////////////////
|
|
// Vertex structs
|
|
//
|
|
|
|
struct VertexInput
|
|
{
|
|
float4 vertex : POSITION;
|
|
float4 texcoord : TEXCOORD0;
|
|
fixed4 color : COLOR;
|
|
#if defined(_TINT_BLACK_ON)
|
|
float2 tintBlackRG : TEXCOORD1;
|
|
float2 tintBlackB : TEXCOORD2;
|
|
#endif
|
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
|
};
|
|
|
|
struct VertexOutput
|
|
{
|
|
float4 pos : SV_POSITION;
|
|
float2 texcoord : TEXCOORD0;
|
|
fixed4 color : COLOR;
|
|
#if defined(_FOG)
|
|
UNITY_FOG_COORDS(1)
|
|
#endif // _FOG
|
|
|
|
#if defined(_TINT_BLACK_ON)
|
|
float3 darkColor : TEXCOORD2;
|
|
#endif
|
|
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
////////////////////////////////////////
|
|
// Vertex program
|
|
//
|
|
|
|
VertexOutput vert(VertexInput input)
|
|
{
|
|
VertexOutput output;
|
|
|
|
UNITY_SETUP_INSTANCE_ID(input);
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
|
|
|
output.pos = calculateLocalPos(input.vertex);
|
|
output.texcoord = calculateTextureCoord(input.texcoord);
|
|
output.color = calculateVertexColor(input.color);
|
|
#if defined(_TINT_BLACK_ON)
|
|
output.darkColor = GammaToTargetSpace(half3(input.tintBlackRG.r, input.tintBlackRG.g, input.tintBlackB.r))
|
|
+ (_Black.rgb * input.color.a);
|
|
#endif
|
|
|
|
#if defined(_FOG)
|
|
UNITY_TRANSFER_FOG(output,output.pos);
|
|
#endif // _FOG
|
|
|
|
return output;
|
|
}
|
|
|
|
////////////////////////////////////////
|
|
// Fragment program
|
|
//
|
|
fixed4 frag(VertexOutput input) : SV_Target
|
|
{
|
|
fixed4 texureColor = calculateTexturePixel(input.texcoord.xy);
|
|
RETURN_UNLIT_IF_ADDITIVE_SLOT_TINT(texureColor, input.color, input.darkColor, _Color.a, _Black.a) // shall be called before ALPHA_CLIP
|
|
ALPHA_CLIP(texureColor, input.color)
|
|
|
|
#if defined(_TINT_BLACK_ON)
|
|
texureColor = fragTintedColor(texureColor, input.darkColor, input.color, _Color.a, _Black.a);
|
|
#endif
|
|
|
|
fixed4 pixel = calculatePixel(texureColor, input.color);
|
|
|
|
COLORISE(pixel)
|
|
APPLY_FOG(pixel, input)
|
|
|
|
return pixel;
|
|
}
|
|
|
|
#endif // SPRITE_UNLIT_INCLUDED
|