// 림라이트 만들기
    // 노말 범프 생성, 림 칼라, 림 굵기
    // UV 반사각 생성
    // 범프 노말 언팩
    // 림 = 닷(노말(U), UV반사(V))
    // 색 적용

 

 

Shader "Custom/Neckless"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        
        _BumpMap("Normalmap", 2D) = "bump" {}
        _NomalPower("NomalPower", Float) = 5


        _RimColor ("Rim Color", Color) = (0,,0,0) // 림 컬러 조정
        _RimPow ("Rim Power", Range(1, 10)) = 2.5 // 림 굵기 조정
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }

        CGPROGRAM
        #pragma surface surf Lambert noamnient

        sampler2D _MainTex;
        sampler2D _BumpMap;

        float _NomalPower;

        float4 _RimColor;
        float _RimPow;

        struct Input
        {
            float2 uv_MainTex;
            float2 uv_BumpMap;

            float3 viewDir;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 main = tex2D (_MainTex, IN.uv_MainTex);
            
            // 노말: 디테일 눈속임
            float4 nomal = tex2D (_BumpMap, IN.uv_BumpMap);
            float3 normal = UnpackNormal(nomal);
            o.Normal = normal; // float3(normal.x * _NomalPower, normal.y * _NomalPower , normal.z);
         
            
            // 림 라이트 계산
            float rim =dot(o.Normal, IN.viewDir);

            o.Albedo = main.rgb;
            o.Emission = pow(1 - rim, _RimPow) * _RimColor.rgb;
            o.Alpha = main.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

'게임 그래픽 프로그래밍' 카테고리의 다른 글

해골  (0) 2024.09.07
바디  (0) 2024.09.07
도끼  (0) 2024.09.06
셰이더: 외곽선에 색, 텍스쳐 넣기  (0) 2024.09.05
셰이더: 2pass 두께, 색 변경  (0) 2024.09.05

+ Recent posts