AT2/Char/Main

구시대 쉐이더. 버린것. 백업.

Shader “AT2/Char/Main” {

    Properties {
 _Color (“Main Color”, Color) = (1,1,1,1)
 _SpecColor (“Main Specular Color”, Color) = (0.5, 0.5, 0.5, 1)
 _Shininess (“Main Shininess (Normal.b)”, Range (0.01, 1)) = 0.078125
 _SpecColor1 (“View Direct SpecColor (Only Forward)”, Color) = (0.5, 0.5, 0.5, 1)
 _Shininess1 (“View Direct Shininess (Normal.b)”, Range (0.01, 1)) = 0.078125
 _RimColor (“Rim Color”, Color) = (0.26,0.19,0.16,0.0)
 _RimPower (“Rim Power”, Range(0.5,8.0)) = 3.0
    _MainTex (“Texture”, 2D) = “white” {}
 _BumpMap2 (“Normal Texture(RG)”, 2D) = “grey” {}
 _Cutoff (“Alpha cutoff”, Range (0,1)) = 0.0
 _GiLight_Top (“GiLight Top”, Color) = (0.5,0.5,0.5,0.0)
 _GiLight_Bottom (“GiLight Bottom”, Color) = (0.5,0.5,0.5,0.0)
 _WorldLightDir(“WorldLightDir”, Vector) = (0,-1,0,1)
 _DyeColor (“DyeColor (Normal.a)”, Color) = (0.5,0.5,0.5,0.0)
  
 _RimColor2 (“Rim Color2”, Color) = (0.26,0.19,0.16,0.0)
 _RimPower2 (“Rim Power2”, Range(0.5,8.0)) = 3.0
    }

    SubShader {
   
    Tags { 
  //~ “RenderType” = “Opaque”
  “RenderType”=“TransparentCutout”
  //~ “Queue”=“Geometry”
  //~ “Queue”=“Transparent” //활성시 디퍼드  라이팅  동작 꺼짐
  “IgnoreProjector”=“True”
  }
 LOD 600

    Cull Back
 ZWrite On
  
  
  
 // Start CGPROGRAM ///////////////////////////////////////////////////////////////////////////////////////// 
    CGPROGRAM
 
 uniform float4 _Color;
 //~ uniform float4 _SpecColor; //이미 정의되어 있어서 굳이 할 필요 없단다.
 uniform float4 _SpecColor1;
 uniform float _Shininess;
 uniform float _Shininess1; 
 uniform float4 _RimColor;
 uniform float _RimPower;
 uniform float _Cutoff;
 
 uniform sampler2D _MainTex;
 uniform sampler2D _BumpMap2;

 uniform float4 _GiLight_Top;
 uniform float4 _GiLight_Bottom;
 uniform float4 _WorldLightDir;
 uniform float4 _DyeColor;
 
 uniform float4 _RimColor2;
 uniform float _RimPower2;
  
  
 #pragma surface surf SimpleLambertJP
 #include “UnityCG.cginc”
 #pragma target 3.0 // it’s for prevent “arithmetic instruction limit” -JP-

 //Forward rendering light term ——————————————————————
 inline half4 LightingSimpleLambertJP (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
   {
  half4 c;
   
  // rim factor———————————————————————————————–
  //~ float rim = pow(1- dot(s.Normal, viewDir),_RimPower);
  //~ half3 rimlight = rim* _RimColor.rgb;
   
  // Rambert factor——————————————————————————————
  half NdotL = saturate(dot (s.Normal, lightDir));
   
  // Specular factor——————————————————————————————
  half3 h = normalize( lightDir + viewDir );   
  float nh = saturate( dot( h, s.Normal ) );
  float spec = pow( nh, s.Specular ) * s.Gloss;
   
  // View Direction Specular factor——————————————————————————————
  float nh1 = saturate( dot( viewDir, s.Normal ) );
  float spec1 = pow( nh1, _Shininess1*128 ) * s.Gloss;
   
  //fake light———————————————————————————————–
  //~ half3 GlTerm = saturate(CalculateGiLight(L1, s.Normal, _GiLight_Top))  ;
  half GlTerm =dot(s.Normal, _WorldLightDir.xyz)*5+1;// It’s for negative light. Don’t use saturate
  half3 GIColor = lerp (_GiLight_Bottom,_GiLight_Top,GlTerm)- half3(0.5,0.5,0.5);
           
  // Final Calculation —————————————————————————————— 
  c.rgb = s.Albedo *_Color* _LightColor0.rgb * ((NdotL * atten * 2) + GIColor) ;
  c.rgb += _SpecColor.rgb * spec;
  c.rgb += _SpecColor1.rgb * spec1;
  //~ c.rgb += rimlight;
        c.a = s.Alpha;
        return c;
      }
  
  
  //Deferred rendering light term ——————————————————————
/-  inline half4 LightingSimpleLambertJP_PrePass (SurfaceOutput s, half4 light)
 {
  half4 c;
  
  half3 spec = pow( light.a ,_Shininess + 0.4) *_SpecColor.rgb * s.Gloss ;
  //fake light———————————————————————————————–
  //~ half3 GlTerm = saturate(CalculateGiLight(L1, s.Normal, _GiLight_Top))  ;
  half GlTerm =dot(s.Normal, _WorldLightDir.xyz)*2+1;// It’s for negative light. Don’t use saturate
  half3 GIColor = lerp (_GiLight_Bottom,_GiLight_Top,GlTerm)- half3(0.5,0.5,0.5);
   
  c.rgb = (s.Albedo*_Color * light.rgb )+ GIColor;
  c.rgb += spec;
  c.a = s.Alpha + Luminance(spec);
  return c;
 } 
  *-
 
 
  
      struct Input {
        float2 uv_MainTex;
        float2 uv_BumpMap2;
  float3 viewDir;
      };

  
  
      void surf (Input IN, inout SurfaceOutput o) {
   
  half4 MainTex = tex2D (_MainTex, IN.uv_MainTex);
  clip(MainTex.a - _Cutoff);
  //—————————————————————-
  //Normal1 method : NormalMap, Traditional method
  //—————————————————————-
  //~ half4 NormalTex = tex2D (_BumpMap, IN.uv_BumpMap);
  //~ half3 UPNormal =UnpackNormal(NormalTex);
   //~ o.Normal =  UPNormal;
   
  //—————————————————————-
  //Normal2 method : Texture , Old (Gamebryo) method
  //—————————————————————-
  half4 NormalTex2 = tex2D (_BumpMap2, IN.uv_BumpMap2);
    
  /- if ( 1.0 == sign(IN.uv_BumpMap2.x-1.0f) )
 { 
  o.Normal =  (half3(NormalTex2.r,NormalTex2.g,1)*2.0f-1.0f);
  o.Normal = normalize(half3(-o.Normal.r,o.Normal.g,o.Normal.b));
  
 }
 else
 { *-
  o.Normal =  normalize(half3(NormalTex2.r,NormalTex2.g,1)*2.0f-1.0f);
 //~ }
  //—————————————————————- 
   
  // Rim ————————————————
  float Fresnel= 1.0 - dot( normalize( float4(IN.viewDir, 1.0).xyz), o.Normal ) ;
  float rim = pow(Fresnel,_RimPower);
  half3 rimlight = rim* _RimColor.rgb;
  
  // Rim2——————————————————————
  float rim2 = pow(Fresnel+0.1,_RimPower2);
  half3 rimlight2 = rim2* _RimColor2.rgb;
   
  //DyeColor —————————————————–
  half3 Albedo;
  half3 Dye = (1.0f - ((1.0f - _DyeColor) * (1.0f - MainTex.rgb)))*2-1;
  Albedo = lerp (Dye,MainTex.rgb,NormalTex2.a);

   
  o.Gloss = NormalTex2.b;
  o.Specular = _Shininess * 128;
        o.Albedo = Albedo ;
  //~ o.Emission  = rimlight;
  //~ o.Emission  = lerp (rimlight,rimlight2,rim2);
        //~ o.Albedo = half3(1,0,0);
  //~ o.Alpha = MainTex.a;
  o.Alpha =1;

      }
 
      ENDCG
  // End CGPROGRAM /////////////////////////////////////////////////////////////////////////////////////////
 
    }

    Fallback “Diffuse”
  }

Hugo로 만듦
JimmyStack 테마 사용 중