100 lines
2.4 KiB
Plaintext

Shader "Hidden/Klak/Spout/Blit"
{
Properties
{
_MainTex("", 2D) = "white" {}
}
CGINCLUDE
#include "UnityCG.cginc"
sampler2D _MainTex;
// Note: The effect of the v-flip option is reversed here.
// We have to do v-flip actually on no-v-flip passes.
void Vertex(float4 position : POSITION,
float2 texCoord : TEXCOORD0,
out float4 outPosition : SV_Position,
out float2 outTexCoord : TEXCOORD0)
{
outPosition = UnityObjectToClipPos(position);
outTexCoord = float2(texCoord.x, 1 - texCoord.y);
}
void VertexVFlip(float4 position : POSITION,
float2 texCoord : TEXCOORD0,
out float4 outPosition : SV_Position,
out float2 outTexCoord : TEXCOORD0)
{
outPosition = UnityObjectToClipPos(position);
outTexCoord = texCoord;
}
float4 BlitSimple(float4 position : SV_Position,
float2 texCoord : TEXCOORD0) : SV_Target
{
return tex2D(_MainTex, texCoord);
}
float4 BlitClearAlpha(float4 position : SV_Position,
float2 texCoord : TEXCOORD0) : SV_Target
{
return float4(tex2D(_MainTex, texCoord).rgb, 1);
}
float4 BlitFromSrgb(float4 position : SV_Position,
float2 texCoord : TEXCOORD0) : SV_Target
{
float4 c = tex2D(_MainTex, texCoord);
#ifndef UNITY_COLORSPACE_GAMMA
c.rgb = GammaToLinearSpace(c.rgb);
#endif
return c;
}
ENDCG
SubShader
{
Cull Off ZWrite Off ZTest Always
Pass
{
CGPROGRAM
#pragma vertex Vertex
#pragma fragment BlitSimple
ENDCG
}
Pass
{
CGPROGRAM
#pragma vertex Vertex
#pragma fragment BlitClearAlpha
ENDCG
}
Pass
{
CGPROGRAM
#pragma vertex VertexVFlip
#pragma fragment BlitSimple
ENDCG
}
Pass
{
CGPROGRAM
#pragma vertex VertexVFlip
#pragma fragment BlitClearAlpha
ENDCG
}
Pass
{
CGPROGRAM
#pragma vertex Vertex
#pragma fragment BlitFromSrgb
#pragma multi_compile _ UNITY_COLORSPACE_GAMMA
ENDCG
}
}
}