1. 적용 이미지

Shader "Custom/toon3"
{
    Properties
    {
        _MainTex("Albedo (RGB)", 2D) = "white" {}
    }
        SubShader
    {
        Tags { "RenderType" = "Opaque" }

        CGPROGRAM
        #pragma surface surf _Toon
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf(Input IN, inout SurfaceOutput o)
        {

        }

        float4 Lighting_Toon(SurfaceOutput s, float3 lightDir, float3 viewDir, float atten) {
            float4 final; // 최종 색상 값을 담을 변수

            // 노멀과 광원 방향 사이의 각도를 기반으로 한 단계화된 조명 계산을 수행
            float ndotl = dot(s.Normal, lightDir) * 0.5 + 0.5; // 노멀과 광원 방향의 내적을 0에서 1 사이의 값으로 조정
            ndotl *= 5; // 값을 확대하여 단계를 생성
            ndotl = ceil(ndotl) / 5; // 단계화된 값을 생성

            // 림라이팅 효과를 계산,  뷰 방향과 노멀 사이의 각도가 일정 기준 이상이면 하이라이트를 적용
            float rim = dot(s.Normal, viewDir);
            if (rim > 0.3) rim = 1; // 림라이트 효과의 임계값을 설정

            // 최종 색상 값에 조명과 림라이트 효과를 적용
            final.rgb = rim * ndotl; // 조명과 림라이트 효과를 결합
            final.a = 1; // 알파 값을 1로 설정

            return final; // 최종 색상 값을 반환
        }
        ENDCG
    }
        FallBack "Diffuse"
}

 

+ Recent posts