pudding81 2024. 2. 20. 16:17

 

 

 

 

Shader "Custom/hologram"
{
   Properties
    {
        
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _BumpMap("Normalmap",2D) ="bump"{}
        
        _Color("",Color)=(1,1,1,1)       
        _RimPow("RimPow",Range(1,10)) =3
       // _Speed("Speed",Range(1,5))=3
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent"} // 반투명 
       
        CGPROGRAM
     
        #pragma surface surf _Lambert alpha:fade//홀로그램

      
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _BumpMap;
        float _RimPow;
        float4 _Color;
        //float _Speed;


        struct Input
        {
            float2 uv_MainTex;
            float3 viewDir;
            float3 worldPos;//월드공간상 위치 
        };

       

        void surf (Input IN, inout SurfaceOutput o)
        {
           
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) ;

           // y축만 출력 (0~0.999) 검정에서 흰색 그라데이션 반복됨.
             o.Emission =_Color.rgb;
             //흰부분을 줄임, 흰부분 사이 간격을 줄임, 위로 흘러가게 만들기

              float holo =pow(frac(IN.worldPos.g*3-_Time.y),30); 

              //노멀맵 
              fixed4 n =tex2D (_BumpMap, IN.uv_MainTex);        
              o.Normal =UnpackNormal(n);

              //rim 
              float ndotv  =saturate(dot(o.Normal,IN.viewDir));        
             //rim 라이트의 색상과 두께 조절 
              float rim =pow(1-ndotv,_RimPow);//홀로그램
                      
           
              o.Alpha = rim+holo ;

        }

         float4 Lighting_Lambert(SurfaceOutput s,float3 lightDir, float atten)
        {
            return  float4 (0,0,0,s.Alpha);
        }

        ENDCG
    }
    FallBack "Transparent/Diffuse"
}