Version: Unity 6.0 (6000.0)
언어 : 한국어
빌트인 렌더 파이프라인의 간단한 언릿 셰이더 예시
빌트인 렌더 파이프라인의 반사 셰이더 예시

빌트인 렌더 파이프라인의 메시 노멀 셰이더 예시

Shader "Unlit/WorldSpaceNormals"
{
    // no Properties block this time!
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // include file that contains UnityObjectToWorldNormal helper function
            #include "UnityCG.cginc"

            struct v2f {
                // we'll output world space normal as one of regular ("texcoord") interpolators
                half3 worldNormal : TEXCOORD0;
                float4 pos : SV_POSITION;
            };

            // vertex shader: takes object space normal as input too
            v2f vert (float4 vertex : POSITION, float3 normal : NORMAL)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(vertex);
                // UnityCG.cginc file contains function to transform
                // normal from object to world space, use that
                o.worldNormal = UnityObjectToWorldNormal(normal);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 c = 0;
                // normal is a 3D vector with xyz components; in -1..1
                // range. To display it as color, bring the range into 0..1
                // and put into red, green, blue components
                c.rgb = i.worldNormal*0.5+0.5;
                return c;
            }
            ENDCG
        }
    }
}

노멀은 알록달록한 컬러를 만들어내는 것 외에도 모든 종류의 그래픽스 효과(조명, 반사, 실루엣 등등)에 사용됩니다.

위 셰이더에서는 Unity의 빌트인 셰이더 include 파일 중 하나를 사용하였습니다. 여기서는 유용한 함수인 UnityObjectToWorldNormal 을 포함하는 UnityCG.cginc 이 사용되었습니다. 또한 오브젝트 공간에서 화면으로 버텍스를 변환하는 유틸리티 함수 UnityObjectToClipPos 도 사용했습니다. 이렇게 하면 코드를 더 쉽게 읽을 수 있고 특정 상황에서 더 효율적입니다.

유니티는 ‘interpolators’(‘varyings’라고도 함)를 통해 데이터를 버텍스에서 프래그먼트 셰이더로 전달할 수 있다는 것을 확인했습니다. HLSL 셰이딩 언어에서는 일반적으로 TEXCOORDn 시맨틱으로 레이블이 지정되며 각각 최대 4개의 컴포넌트를 가진 벡터가 될 수 있습니다(자세한 내용은 셰이더에 버텍스 데이터 입력 페이지 참조).

또한 정규화된 벡터(–1.0부터 +1.0까지 범위)를 컬러로 시각화하는 방법에 대한 간단한 기법(벡터에 0.5를 곱하고 0.5를 더하기)을 배웠습니다. 더 많은 버텍스 데이터 시각화 예시는 버텍스 데이터 시각화를 참조하십시오.

빌트인 렌더 파이프라인의 간단한 언릿 셰이더 예시
빌트인 렌더 파이프라인의 반사 셰이더 예시