Orihaus

"Rimlight_Transparent_Texture" Obsolete Main Shader 2.0

Aug 5th, 2012
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.96 KB | None | 0 0
  1. Shader "Rimlight_Transparent_Texture"
  2. {
  3.     Properties
  4.     {
  5.         _MainMap ("Main Texture", 2D) = "main" {}
  6.         _RimColor ("Rim Color", Color) = (0.26,0.19,0.16,0.0)
  7.         _RimPower ("Rim Power", Range(0.5,32.0)) = 3.0
  8.         _RimPowerSecondary ("Rim Power - Secondary", Range(0.5,32.0)) = 3.0
  9.         _RimLevel ("Rim Level", Range(0.0,1.0)) = 0.0
  10.         _RimLevelSecondary ("Rim Level - Secondary", Range(0.0,1.0)) = 0.0
  11.         _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
  12.         _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
  13.         _SpecPower ("Spec Power", Range (0.00, 64.0)) = 48.0
  14.         _Alpha ("Alpha", Range (1.0, 0.01)) = 1.0
  15.         _AlphaOffset ("Alpha Offset", Range (4.0, 0.01)) = 0.1
  16.         _EmissionOffset ("Emission Offset", Range (4.0, 0.01)) = 0.1
  17.     }
  18.        
  19.     Category
  20.     {
  21.         Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
  22.         Blend SrcAlpha One
  23.         AlphaTest Greater .01
  24.         ColorMask RGB
  25.         Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
  26.         BindChannels
  27.         {
  28.             Bind "Color", color
  29.             Bind "Vertex", vertex
  30.             Bind "TexCoord", texcoord
  31.         }
  32.        
  33.     SubShader
  34.     {
  35.         Pass
  36.         {
  37.             CGPROGRAM
  38.  
  39.             #pragma vertex vert
  40.             #pragma fragment frag
  41.             #pragma fragmentoption ARB_precision_hint_fastest
  42.             #pragma multi_compile_particles
  43.  
  44.             #include "UnityCG.cginc"
  45.             #include "AutoLight.cginc"
  46.  
  47.             float _Shininess;
  48.             float _Alpha;
  49.             float _AlphaOffset;
  50.             float _EmissionOffset;
  51.             float _SpecPower;
  52.             float4 _SpecColor;
  53.            
  54.             sampler2D _MainMap;
  55.        
  56.             float4 _RimColor;
  57.             float _RimPower;
  58.             float _RimLevel;
  59.             float _RimPowerSecondary;
  60.             float _RimLevelSecondary;
  61.            
  62.             struct appdata {
  63.                 float4 vertex : POSITION;
  64.                 float3 normal : NORMAL;
  65.                 float2 texcoord : TEXCOORD0;
  66.             };
  67.  
  68.             struct v2f
  69.             {
  70.                 float4 vertex : POSITION;
  71.                 float2 texcoord : TEXCOORD0;
  72.                 float3 viewDir : TEXCOORD1;
  73.                 float3 normal : TEXCOORD2;
  74.                 float3 lightDir : TEXCOORD3;
  75.             };
  76.            
  77.             float4 _MainMap_ST;
  78.            
  79.             v2f vert( appdata v )
  80.             {
  81.                 v2f o;
  82.                 o.vertex = mul( UNITY_MATRIX_MVP, v.vertex );
  83.                 o.texcoord = TRANSFORM_TEX( v.texcoord, _MainMap );
  84.                 o.viewDir = ObjSpaceViewDir( v.vertex );
  85.                 o.normal = v.normal;
  86.                 o.lightDir = ObjSpaceLightDir ( v.vertex );
  87.                 return o;
  88.             }
  89.  
  90.             fixed4 frag( v2f i ) : COLOR
  91.             {
  92.                 float4 color = float4( 1.0 );
  93.                 float inAlpha = tex2D( _MainMap, i.texcoord ).a * _Alpha;
  94.                
  95.                 half3 h = normalize( i.lightDir + i.viewDir );
  96.                 float spec = max( 0, dot( i.normal, h ) );
  97.                
  98.                 float rim = 1.0 - saturate( dot( normalize( i.viewDir ), i.normal ) );
  99.                 float rimpower = pow( rim, _RimPower ) * _RimLevel;
  100.                 rimpower += pow( rim, _RimPowerSecondary ) * _RimLevelSecondary;
  101.                
  102.                 color.xyz = _SpecColor * pow( spec, _SpecPower ) * _Shininess;
  103.                 color.xyz += ( _RimColor.rgb * _EmissionOffset ) * rimpower * inAlpha;
  104.                 color.a = ( rimpower * _AlphaOffset ) * inAlpha;
  105.            
  106.                 return color;
  107.             }
  108.              
  109.             ENDCG
  110.         }
  111.         }
  112. }
  113.    
  114. Fallback "Diffuse"
  115. }
Advertisement
Add Comment
Please, Sign In to add comment