Version: Unity 6.0 (6000.0)
언어 : 한국어
빌트인 렌더 파이프라인의 노멀 맵 텍스처링 셰이더 예시
빌트인 렌더 파이프라인의 간단한 디퓨즈 조명 셰이더 예시

빌트인 렌더 파이프라인의 삼평면 텍스처링 셰이더 예시

복잡한 메시 또는 절차적 메시의 경우에는 일반 UV 좌표를 사용하여 텍스처링하는 것보다는 세 주방향으로부터 오브젝트 위에 텍스처를 ‘투사’하는 것이 유용할 때도 있습니다. 이를 ‘삼평면’ 텍스처링이라고 합니다. 여기서는 표면 노멀을 사용하여 세 텍스처 방향의 가중치를 지정합니다. 다음은 셰이더입니다.

Shader "Unlit/Triplanar"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Tiling ("Tiling", Float) = 1.0
        _OcclusionMap("Occlusion", 2D) = "white" {}
    }
    SubShader
    {
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct v2f
            {
                half3 objNormal : TEXCOORD0;
                float3 coords : TEXCOORD1;
                float2 uv : TEXCOORD2;
                float4 pos : SV_POSITION;
            };

            float _Tiling;

            v2f vert (float4 pos : POSITION, float3 normal : NORMAL, float2 uv : TEXCOORD0)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(pos);
                o.coords = pos.xyz * _Tiling;
                o.objNormal = normal;
                o.uv = uv;
                return o;
            }

            sampler2D _MainTex;
            sampler2D _OcclusionMap;
            
            fixed4 frag (v2f i) : SV_Target
            {
                // use absolute value of normal as texture weights
                half3 blend = abs(i.objNormal);
                // make sure the weights sum up to 1 (divide by sum of x+y+z)
                blend /= dot(blend,1.0);
                // read the three texture projections, for x,y,z axes
                fixed4 cx = tex2D(_MainTex, i.coords.yz);
                fixed4 cy = tex2D(_MainTex, i.coords.xz);
                fixed4 cz = tex2D(_MainTex, i.coords.xy);
                // blend the textures based on weights
                fixed4 c = cx * blend.x + cy * blend.y + cz * blend.z;
                // modulate by regular occlusion map
                c *= tex2D(_OcclusionMap, i.uv);
                return c;
            }
            ENDCG
        }
    }
}
빌트인 렌더 파이프라인의 노멀 맵 텍스처링 셰이더 예시
빌트인 렌더 파이프라인의 간단한 디퓨즈 조명 셰이더 예시