Shader "TexBlending"
{
Properties
{
_MainTint("MainTint", Color) = (1, 1, 1, 1)
_ColorA("ColorA", Color) = (1, 1, 1, 1)
_ColorB("ColorB", Color) = (1, 1, 1, 1)
_RTexture("RTexture", 2D) = "" {}
_GTexture("GTexture", 2D) = "" {}
_BTexture("BTexture", 2D) = "" {}
_ATexture("ATexture", 2D) = "" {}
_BlendTex("BlendTex", 2D) = "" {}
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
}
LOD 200
CGPROGRAM
#pragma surface surf Lambert
#pragma target 4.0
float4 _MainTint;
float4 _ColorA;
float4 _ColorB;
sampler2D _BlendTex;
sampler2D _RTexture;
sampler2D _GTexture;
sampler2D _BTexture;
sampler2D _ATexture;
struct Input
{
float2 uv_RTexture;
float2 uv_GTexture;
float2 uv_BTexture;
float2 uv_ATexture;
float2 uv_BlendTex;
};
void surf(Input IN, inout SurfaceOutput o)
{
float4 blendData = tex2D(_BlendTex, IN.uv_BlendTex);
float4 rTexData = tex2D(_RTexture, IN.uv_RTexture);
float4 gTexData = tex2D(_GTexture, IN.uv_GTexture);
float4 bTexData = tex2D(_BTexture, IN.uv_BTexture);
float4 aTexData = tex2D(_ATexture, IN.uv_ATexture);
float4 finalColor = lerp(rTexData, gTexData, blendData.g);
finalColor = lerp(finalColor, bTexData, blendData.b);
finalColor = lerp(finalColor, aTexData, blendData.a);
finalColor.a = 1.0;
float4 terrainLayers = lerp(_ColorA, _ColorB, blendData.r);
finalColor *= terrainLayers;
finalColor = saturate(finalColor);
o.Albedo = finalColor.rgb * _MainTint.rgb;
o.Alpha = finalColor.a;
}
ENDCG
}
}
使用纹理制作特效 - 压缩和混合纹理贴图
最新推荐文章于 2021-09-26 16:13:40 发布