간단하게 Unlit 기반 blending shader
//
Properties {
_MainTex ("Texture 1", 2D) = "white" {}
_MainTex2 ("Texture 2", 2D) = "white" {}
_BlendTex ("BlendMask", 2D) = "white" {}
_Tile ("Tiling", Vector) = (1,1,1,1)
}
SubShader {
Tags { "RenderType" = "Opaque" }
Lighting Off
CGPROGRAM
#pragma surface surf Unlit noforwardadd approxview noambient halfasview nolightmap
sampler2D _MainTex;
sampler2D _MainTex2;
sampler2D _BlendTex;
float4 _Tile;
fixed4 LightingUnlit (SurfaceOutput s, half3 lightDir, half atten) {
return fixed4(s.Albedo,1);
}
struct Input {
float2 uv_MainTex;
float2 uv2_BlendTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed3 b = tex2D (_BlendTex, IN.uv2_BlendTex).rgb;
//uv 제어, UDK의 textcoord와 같은 역할
fixed4 d = lerp (tex2D (_MainTex, IN.uv_MainTex * _Tile.xy) * b.g,tex2D (_MainTex2 , IN.uv2_MainTex * _Tile.zw) * b.b,b.r);
// Masking texture의 R.G.B 값에 따른 texture blending
o.Albedo = ( d.rgb );
}
ENDCG
}
}
fallback시에 1번 texture 나오게 하려면 손을 좀 봐야하는데... 귀찮.... 그냥 invert해서 쓰기로..
UV tiling은 저렇게 Vector 쓰는것도 좋지만 그냥 float2로 uv 정의해서 빼버리는게 깔끔할듯..
'Technical Report > Graphics Tech Reports' 카테고리의 다른 글
Normal Blend (0) | 2016.04.01 |
---|---|
Improved Alpha-Tested Magnification for Vector Textures and Special Effects (0) | 2015.05.16 |
Mobile BumpMapping test (0) | 2015.04.30 |
Unity5 Preserve UVs 및 offset 처리 (0) | 2015.04.10 |
Unity5 General GI 옵션 변경에 따른 테스트 (0) | 2015.03.21 |