Blend 5 Bumped Textures

2014. 7. 30. 09:57 - 묘쿠
  1.  
  2. Shader "VPaint/Lit/Blend 5 Bumped Textures" {
  3.     Properties {
  4.         _BaseTexture ("Base Texture (RGB: Diffuse) (A: Spec)", 2D) = "white" {}
  5.         _BaseTextureBump ("Base Texture Bump", 2D) = "bump" {}
  6.        
  7.         _Texture1 ("Texture 1 (RGB: Red Channel) (A: Spec)", 2D) = "white" {}
  8.         _Texture1Bump ("Texture 1 Bump", 2D) = "bump" {}
  9.        
  10.         _Texture2 ("Texture 2 (RGB: Blue Channel) (A: Spec)", 2D) = "white" {}
  11.         _Texture2Bump ("Texture 2 Bump", 2D) = "bump" {}
  12.        
  13.         _Texture3 ("Texture 3 (RGB: Green Channel) (A: Spec)", 2D) = "white" {}
  14.         _Texture3Bump ("Texture 3 Bump", 2D) = "bump" {}
  15.        
  16.         _Texture4 ("Texture 4 (RGB: Alpha Channel) (A: Spec)", 2D) = "white" {}
  17.         _Texture4Bump ("Texture 4 Bump", 2D) = "bump" {}
  18.     }
  19.     SubShader {
  20.         Tags { "RenderType"="Opaque" }
  21.         LOD 200
  22.        
  23.         CGPROGRAM
  24.         #pragma surface surf Lambert
  25.         #pragma target 3.0
  26.  
  27.         sampler2D _BaseTexture;
  28.         sampler2D _BaseTextureBump;
  29.        
  30.         sampler2D _Texture1;
  31.         sampler2D _Texture1Bump;
  32.        
  33.         sampler2D _Texture2;
  34.         sampler2D _Texture2Bump;
  35.  
  36.         sampler2D _Texture3;
  37.         sampler2D _Texture3Bump;
  38.        
  39.         sampler2D _Texture4;
  40.         sampler2D _Texture4Bump;
  41.  
  42.         struct Input {
  43.             half2 uv_BaseTexture;
  44.             half2 uv_Texture1;         
  45.             half2 uv_Texture2;         
  46.             half2 uv_Texture3;         
  47.             half2 uv_Texture4;
  48.            
  49.             float4 color : COLOR;
  50.         };
  51.  
  52.         void surf (Input IN, inout SurfaceOutput o) {
  53.             float4 color = IN.color;
  54.            
  55.             half4 t0 = tex2D (_BaseTexture, IN.uv_BaseTexture);
  56.             half4 t0b = tex2D (_BaseTextureBump, IN.uv_BaseTexture);
  57.            
  58.             half4 t1 = tex2D (_Texture1, IN.uv_Texture1);
  59.             half4 t2 = tex2D (_Texture2, IN.uv_Texture2);
  60.             half4 t3 = tex2D (_Texture3, IN.uv_Texture3);
  61.             half4 t4 = tex2D (_Texture4, IN.uv_Texture4);
  62.            
  63.             half4 t1b = tex2D (_Texture1Bump, IN.uv_Texture1);
  64.             half4 t2b = tex2D (_Texture2Bump, IN.uv_Texture2);
  65.             half4 t3b = tex2D (_Texture3Bump, IN.uv_Texture3);
  66.             half4 t4b = tex2D (_Texture4Bump, IN.uv_Texture4);
  67.            
  68.             half4 cum = t1 * color.r + t2 * color.g + t3 * color.b + t4 * color.a;
  69.             half4 nrm = t1b * color.r + t2b * color.g + t3b * color.b + t4b * color.a;
  70.             fixed fac = color.r + color.g + color.b + color.a;
  71.            
  72.             if(fac != 0)
  73.             {
  74.                 cum /= fac;
  75.                 nrm /= fac;
  76.             }
  77.             cum = lerp(t0, cum, fac);
  78.            
  79.             o.Albedo = cum.rgb;
  80.             o.Specular = cum.a;
  81.             o.Normal = lerp(UnpackNormal(t0b), UnpackNormal(nrm), fac);
  82.         }
  83.         ENDCG
  84.     }
  85.     FallBack "Diffuse"
  86. } 

 5 texture blend + normal and spec

add vertex color empty

'Shader > Surface' 카테고리의 다른 글

Surface Shader Custom Lighting 언릿 설정  (0) 2014.07.31
Blend 4 Bumped Textures  (0) 2014.07.29
Blend 5 Textures  (0) 2014.07.29

다른 카테고리의 글 목록

Shader/Surface 카테고리의 포스트를 톺아봅니다