3장 섞는중. Factor로 intensity 조절 붙임. 4장은 B 채널 비어 있으니 써도 되고 5장은 Alpha 써서 붙여넣음 됨..
Properties {
_MainTex ("Texture 1", 2D) = "white" {}
_Factor1 ("Blend Intensity", Range(0.5,1.0)) = 1
_MainTex2 ("Texture 2", 2D) = "white" {}
_Factor2 ("Blend Intensity", Range(0.5,1.0)) = 1
_MainTex3 ("Texture 3", 2D) = "white" {}
_BlendTex ("BlendMask", 2D) = "white" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Unlit noforwardadd approxview noambient halfasview nodirlightmap
sampler2D _MainTex;
float _Factor1;
sampler2D _MainTex2;
float _Factor2;
sampler2D _MainTex3;
sampler2D _BlendTex;
fixed4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten) {
return fixed4(s.Albedo,1);
}
struct Input {
float2 uv_MainTex;
float2 uv_MainTex2;
float2 uv_MainTex3;
float2 uv2_BlendTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed3 bl = tex2D (_BlendTex, IN.uv2_BlendTex).rgb;
fixed3 d1 = lerp (tex2D (_MainTex, IN.uv_MainTex), tex2D (_MainTex2, IN.uv_MainTex2) , bl.r * _Factor1 );
fixed3 d2 = lerp (d1, tex2D (_MainTex3, IN.uv_MainTex3), bl.g * _Factor2 );
o.Albedo = d ;
// 계산다해놓고 왜 합치니 마니 뻘짓을 했는지..;;;..
d1 + d2 형태로 좀 다르게 표현도 가능한데 가산혼합에 의한 RGB값이 올라와 밝게 되는 문제도 있으니 다르게 생각해볼것
fixed3 d2 = lerp (tex2D (_MainTex2, IN.uv_MainTex2), tex2D (_MainTex3, IN.uv_MainTex3), bl.g);
o.Albedo = (d1 * _Factor1 + d2 * _Factor2) * 0.7 ;
이런거??
}
ENDCG
}
fallback "Diffuse"
}
'Technical Report > Unity Shader' 카테고리의 다른 글
Unity5 compressed option (0) | 2015.07.05 |
---|---|
UV scrolling shader (0) | 2015.07.03 |
Surface shader UV atlas (0) | 2015.05.18 |
weed shader animation (0) | 2015.05.11 |
Lava Shader (0) | 2015.04.30 |