ToriaAssets/Sources/Shaders/ProjectorAdditive.shader
2026-05-19 15:33:18 +02:00

89 lines
2.3 KiB
Plaintext

// Upgrade NOTE: replaced '_Projector' with 'unity_Projector'
// Upgrade NOTE: replaced '_ProjectorClip' with 'unity_ProjectorClip'
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Effects/Projector/Additive" {
Properties {
_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,1)
_ColorStrength ("Color strength", Float) = 1.0
_MainTex ("Main Texture", 2D) = "gray" {}
//_CutoutTex ("Cutout Texture (R)", 2D) = "white" {}
_FalloffTex ("FallOff", 2D) = "white" {}
}
Subshader {
Tags {"Queue"="Transparent"}
Pass {
ZWrite Off
Fog { Mode Off}
Blend SrcAlpha One
Offset -1, -1
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _TintColor;
fixed _ColorStrength;
struct v2f {
float4 uvMainTex : TEXCOORD0;
float4 uvFalloff : TEXCOORD1;
//float4 uv_CutoutTex : TEXCOORD3;
float4 pos : SV_POSITION;
float2 texcoord : TEXCOORD2;
};
float4x4 unity_Projector;
float4x4 unity_ProjectorClip;
float4 _MainTex_ST;
v2f vert (float4 vertex : POSITION)
{
v2f o;
o.pos = UnityObjectToClipPos (vertex);
o.uvMainTex = mul (unity_Projector, vertex);
o.uvFalloff = mul (unity_ProjectorClip, vertex);
//o.uv_CutoutTex = mul (_Projector, vertex);
//o.uv = TRANSFORM_TEX (mul (_Projector, vertex).xy, _MainTex);
o.texcoord = TRANSFORM_TEX( o.uvMainTex.xyz,_MainTex);
return o;
}
sampler2D _MainTex;
sampler2D _CutoutTex;
sampler2D _FalloffTex;
fixed4 frag (v2f i) : COLOR
{
//fixed4 texS = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow));
//texS.a = 1.0-texS.a;
fixed4 texF = tex2Dproj (_FalloffTex, UNITY_PROJ_COORD(i.uvFalloff));
//fixed4 texC = tex2Dproj (_CutoutTex, UNITY_PROJ_COORD(i.uv_CutoutTex));
//return texS;
//fixed4 tex = tex2Dproj(_MainTex, UNITY_PROJ_COORD(i.uvMainTex));
fixed4 tex;
if(i.uvMainTex.y<0 || i.uvMainTex.y>1 || i.uvMainTex.x < 0 || i.uvMainTex.x > 1) {
tex = fixed4 (0,0,0,0);
}
else {
tex = tex2D(_MainTex, float2(i.texcoord));
}
fixed4 res = lerp(fixed4(1,1,1,0), tex * _TintColor * _ColorStrength*tex.a, texF.a);
if(res.a > 1 ) res.a = 1;
//res.a *= texC.a;
return res;
}
ENDCG
}
}
}