136 lines
4.5 KiB
Plaintext
136 lines
4.5 KiB
Plaintext
Shader "Terrain Grid System/Unlit Highlight Ground Texture" {
|
|
Properties {
|
|
_Color ("Tint Color", Color) = (1,1,1,0.5)
|
|
_Color2 ("Color", Color) = (0,1,0,0)
|
|
_Offset ("Depth Offset", Int) = -1
|
|
_MainTex("Texture", 2D) = "black" {}
|
|
_FadeAmount("Fade Amount", Float) = 0
|
|
_Scale ("Scale Min", Float) = 1.0
|
|
_ZWrite("ZWrite", Int) = 0
|
|
_SrcBlend("Src Blend", Int) = 5
|
|
_DstBlend("Dst Blend", Int) = 10
|
|
_Cull ("Cull", Int) = 2
|
|
_ZTest("ZTest", Int) = 4
|
|
_HighlightBorderColor("Highlight Border Color", Color) = (1,1,1)
|
|
_HighlightBorderSize("Highlight Border Size", Float) = 1
|
|
_Mask("Mask Texture", 2D) = "white" {}
|
|
}
|
|
SubShader {
|
|
Tags {
|
|
"Queue"="Geometry+205"
|
|
"RenderType"="Transparent"
|
|
}
|
|
Offset [_Offset], [_Offset]
|
|
Blend [_SrcBlend] [_DstBlend]
|
|
ZWrite [_ZWrite]
|
|
Cull [_Cull]
|
|
ZTest [_ZTest]
|
|
|
|
Pass {
|
|
CGPROGRAM
|
|
#pragma fragment frag
|
|
#pragma vertex vert
|
|
#pragma multi_compile_local _ TGS_TRANSPARENT
|
|
#pragma multi_compile_local _ TGS_TEX_HIGHLIGHT_ADDITIVE TGS_TEX_HIGHLIGHT_MULTIPLY TGS_TEX_HIGHLIGHT_COLOR TGS_TEX_HIGHLIGHT_SCALE TGS_TEX_DUAL_COLORS
|
|
#include "UnityCG.cginc"
|
|
|
|
sampler2D _MainTex;
|
|
fixed4 _Color, _Color2, _HighlightBorderColor;
|
|
fixed _FadeAmount, _Scale, _HighlightBorderSize;
|
|
sampler2D _MaskTex;
|
|
|
|
struct AppData {
|
|
float4 vertex : POSITION;
|
|
float2 texcoord: TEXCOORD0;
|
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
|
};
|
|
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv: TEXCOORD0;
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
v2f vert(AppData v) {
|
|
v2f o;
|
|
UNITY_SETUP_INSTANCE_ID(v);
|
|
UNITY_INITIALIZE_OUTPUT(v2f, o);
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
|
|
|
o.pos = UnityObjectToClipPos(v.vertex);
|
|
o.uv = v.texcoord;
|
|
return o;
|
|
}
|
|
|
|
fixed4 frag(v2f i) : SV_Target {
|
|
fixed4 color = _Color;
|
|
#if TGS_TRANSPARENT
|
|
#if TGS_TEX_HIGHLIGHT_ADDITIVE
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(pixel.rgb + color.rgb, pixel.rgb, _FadeAmount) * pixel.aaa;
|
|
color.a = pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_MULTIPLY
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(pixel.rgb * color.rgb, pixel.rgb, _FadeAmount) * pixel.aaa;
|
|
color.a = pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_COLOR
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(pixel.rgb, color.rgb, _FadeAmount) * pixel.aaa;
|
|
color.a = pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_SCALE
|
|
fixed4 pixel = tex2D(_MainTex, 0.5 + (i.uv - 0.5) * _Scale);
|
|
color.rgb = pixel.rgb * lerp(color.rgb, 1.0, _FadeAmount) * pixel.aaa;
|
|
color.a = pixel.a;
|
|
#elif TGS_TEX_DUAL_COLORS
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(color.rgb * color.a, pixel.rgb * pixel.a, _FadeAmount);
|
|
color = lerp(_Color2, color, _FadeAmount);
|
|
#else
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color = lerp(color, pixel, _FadeAmount);
|
|
#endif
|
|
#else
|
|
#if TGS_TEX_HIGHLIGHT_ADDITIVE
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(pixel.rgb + color.rgb, pixel.rgb, _FadeAmount) * pixel.aaa;
|
|
color.a = 1.0 - pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_MULTIPLY
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = pixel.rgb * lerp(color.rgb, 1.0, _FadeAmount) * pixel.aaa;
|
|
color.a = 1.0 - pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_COLOR
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(pixel.rgb, color.rgb, _FadeAmount) * pixel.aaa;
|
|
color.a = 1.0 - pixel.a;
|
|
#elif TGS_TEX_HIGHLIGHT_SCALE
|
|
fixed4 pixel = tex2D(_MainTex, 0.5 + (i.uv - 0.5) * _Scale);
|
|
color.rgb = pixel.rgb * lerp(color.rgb, 1.0, _FadeAmount) * pixel.aaa;
|
|
color.a = 1.0 - pixel.a;
|
|
#elif TGS_TEX_DUAL_COLORS
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(color.rgb * color.a, pixel.rgb * pixel.a, _FadeAmount);
|
|
color.a = 1.0 - color.a;
|
|
color = lerp(_Color2, color, _FadeAmount);
|
|
#else
|
|
fixed4 pixel = tex2D(_MainTex, i.uv);
|
|
color.rgb = lerp(color.rgb * color.a, pixel.rgb * pixel.a, _FadeAmount);
|
|
color.a = 1.0 - color.a;
|
|
#endif
|
|
#endif
|
|
|
|
fixed isBorder = any(abs(i.uv.xy-0.5)>_HighlightBorderSize);
|
|
color = lerp(color, _HighlightBorderColor, isBorder);
|
|
|
|
fixed4 mask = tex2D(_MaskTex, i.uv);
|
|
color *= mask;
|
|
|
|
return color;
|
|
}
|
|
|
|
ENDCG
|
|
|
|
}
|
|
}
|
|
|
|
}
|