Shader "Custom/zkTex" {
Properties {
_FirstTex ("First (RGB),Alpha (A)",2D) = "White" {}
_SecondTex ("Second (RGB),Alpha (A)",2D) = "White" {}
_ThirdTex ("Second (RGB),Alpha (A)",2D) = "White" {}
_ForthTex ("Fourth (RGB),Alpha (A)",2D) = "White" {}
_BackTex ("Back (RGB),Alpha (A)",2D) = "White" {}//白色贴图做底色背景
_FirstRange ("FirstRange",Range(0,1)) = 0.33
_SecondRange ("SecondRange",Range(0,1)) = 0.33
_ThirdRange ("SecondRange",Range(0,1)) = 0.33
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
Cull Off
Lighting Off
Pass{
CGPROGRAM
#pragma target 3.0
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float _FirstRange;
float _SecondRange;
float _ThirdRange;
sampler2D _FirstTex;
sampler2D _SecondTex;
sampler2D _ThirdTex;
sampler2D _ForthTex;
sampler2D _BackTex;
float4 _BackTex_ST;
struct appdata_t{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
fixed4 color : COLOR;
};
struct v2f{
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
fixed4 color : COLOR;
};
v2f vert(appdata_t v){
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP,v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord,_BackTex);
o.color = v.color;
return o;
}
fixed4 frag(v2f i) : COLOR{
fixed4 col1 = tex2D(_FirstTex,i.texcoord);
fixed4 col2 = tex2D(_SecondTex,i.texcoord);
fixed4 col3 = tex2D(_ThirdTex,i.texcoord);
fixed4 col4 = tex2D(_ForthTex,i.texcoord);
fixed4 col_back = tex2D(_BackTex,i.texcoord);
float2 uv = i.texcoord.xy;
float4 c1 = i.color;
float4 c2 = i.color;
float4 c3 = i.color;
float4 c4 = i.color;
float4 c_back = i.color;
if(uv.y > 0 && uv.y < _FirstRange){
c1.rgba = col1.rgba;
}
if(uv.y > _FirstRange && uv.y < _SecondRange){
c2.rgba = col2.rgba;
}
if(uv.y > _SecondRange && uv.y < _ThirdRange){
c3.rgba = col3.rgba;
}
if(uv.y > _ThirdRange && uv.y < 1){
c4.rgba = col4.rgba;
}
fixed4 col_a = col_back * c1 * c2 * c3 * c4;
return col_a;
}
ENDCG
}
}
}
用shader给一个圆柱体附上多段贴图
最新推荐文章于 2024-07-26 23:07:45 发布