Advertisement
Guest User

Untitled

a guest
Nov 24th, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.55 KB | None | 0 0
  1. Shader "Car/CarPain2" {
  2.     Properties {
  3.         _Color("Diffuse Color", Color) = (1, 1, 1,1)
  4.         _SpecColor("Specular Color", Color) = (1,1,1,1)    
  5.         _AmbientColor("Metalic Color", Color) = (1,1,1, 1)
  6.         _AmbientColor2("Candy Color", Color) = (1,1,1, 1)
  7.         _ReflectionColor("Reflection Color", Color) = (1,1,1, 1)
  8.         _VinylColor("Vinyl Color", Color) = (1,1,1, 1) // Тут добавил
  9.         _Shininess("Glossiness", Range(0.1,2) ) = 0.5      
  10.         _MainTex("Diffuse", 2D) = "white" {}
  11.         _FlakeTex("Flakes", 2D) = "white" {}
  12.         _VinylTex("Vinyl", 2D) = "white" {} //Тут добавил
  13.         _FlakeDens("Flakes Tile", Range(1,40) ) = 2
  14.         _Cube("Reflection Cubemap", Cube) = "" { TexGen CubeReflect }      
  15.         _FresnelScale ("Fresnel Intensity", Range(0,2) ) = 0.4
  16.         _FresnelPower ("Fresnel Power", Range(0.1,3) ) = 0     
  17.         _MetalicScale ("Metalic Intensity", Range(0.0,4.0)) = 0
  18.         _MetalicPower ("Metalic Power", Range(0.0,20.0)) = 0       
  19.         _CandyScale ("Candy Intensity", Range(0.0,4.0)) = 0
  20.         _CandyPower ("Candy Power", Range(0.0,20.0)) = 0
  21.     }
  22.     SubShader {    
  23.         Tags { "RenderType"="Opaque" }
  24.         LOD 400        
  25.         Cull Back
  26.         ZWrite On
  27.         ZTest Lequal
  28.         ColorMask RGBA
  29.         CGPROGRAM      
  30.         #pragma surface surf BlinnPhong
  31.         #pragma target 3.0     
  32.         struct Input
  33.         {
  34.             float2 uv_MainTex; 
  35.             float2 uv_FlakeTex;
  36.             float3 worldRefl;
  37.             float3 viewDir;
  38.             float3 lightDir;
  39.             float3 normal;
  40.             INTERNAL_DATA
  41.         };     
  42.         sampler2D _MainTex;
  43.         sampler2D _FlakeTex;
  44.         sampler2D _VinylTex; // Тут добавил
  45.         samplerCUBE _Cube;     
  46.         float4 _Color;
  47.         float4 _AmbientColor;
  48.         float4 _AmbientColor2;
  49.         float4 _ReflectionColor;
  50.         float4 _VinylColor; // Тут добавил
  51.         float _Shininess;
  52.         float _FlakeDens;
  53.         float _FresnelScale;
  54.         float _FresnelPower;
  55.         float _MetalicScale;       
  56.         float _MetalicPower;
  57.         float _CandyScale;     
  58.         float _CandyPower;
  59.         void surf (Input IN, inout SurfaceOutput o){       
  60.                
  61.             o.Normal = normalize(float3(0.0,0.0,1.0));
  62.             // 0. Vectors
  63.             float3 worldRefl = WorldReflectionVector (IN, o.Normal);
  64.             float3 normEyeVec = normalize (IN.viewDir);
  65.             float3 worldLight = normalize (IN.lightDir);
  66.             float dotEyeVecNormal = abs(dot(normEyeVec, o.Normal));            
  67.            
  68.             // 1. Difuse (Texture + Color)
  69.             float4 Tex1 = tex2D( _MainTex,IN.uv_MainTex );         
  70.             float specularmask = Tex1.a ;
  71.             float4 Diffuse = ((_Color* (specularmask) )* Tex1) + (Tex1*(1-specularmask));              
  72.  
  73.             // 2. GlossMap / Sparks        
  74.             float4 Tex2 = tex2D( _FlakeTex, IN.uv_FlakeTex*_FlakeDens );   
  75.             float4 Specular = (_Shininess * Tex2) + Tex2;  
  76.            
  77.             // 3. Emission (Reflections with Fresnel)      
  78.             float4 TexCUBE = texCUBE( _Cube,worldRefl) * _ReflectionColor;
  79.             float4 fresnel = (1.0 - dot( normEyeVec,o.Normal ));
  80.             float4 emmission = _FresnelScale * TexCUBE * pow(fresnel,_FresnelPower);           
  81.            
  82.             // 4. Special (Metalic & Candy)
  83.             float metalic = (specularmask*_MetalicScale) * pow(dotEyeVecNormal,_MetalicPower);
  84.             float candy = _CandyScale * pow(dotEyeVecNormal,_CandyPower);
  85.            
  86.             // 5. Vinyl (Texture + Color) - Это все добавил
  87.             float4 Tex3 = tex2D( _VinylTex, IN.uv_MainTex );
  88.             float4 VinylDiffuse = ((_VinylColor * (specularmask) )* Tex3) + (Tex3 * (1 - specularmask));
  89.            
  90.             o.Albedo = VinylDiffuse * Diffuse * ((metalic+(1-specularmask) + ((1-Tex2)*(specularmask))) + (_AmbientColor.rgb*specularmask)) + (candy * _AmbientColor2.rgb * specularmask*(1-Tex2));
  91.            
  92.             o.Specular = Specular;                     
  93.             o.Gloss = _SpecColor * specularmask;               
  94.             o.Emission = emmission * emmission * specularmask;
  95.         }      
  96.         ENDCG
  97.     }
  98.     FallBack "Reflective/Diffuse"
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement