float3 worldNormal 과 INTERNAL_DATA

Unity3D/Shader 2021. 11. 23. 01:35
반응형

Shader "Custom/Test"
{
    Properties
    {
        _Bump ("Normal Map", 2D) = "bump" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
       

        CGPROGRAM
       
        #pragma surface surf Lambert

        sampler2D _Bump;

        struct Input
        {
            //https://forum.unity.com/threads/cannot-get-worldnormal-in-surf-shader.97942/
            //float3 worldNormal - 표면 셰이더가 o.Normal에 쓰지 않는 경우 세계 법선 벡터를 포함합니다.
            //float3 worldNormal; INTERNAL_DATA - 표면 셰이더가 o.Normal에 쓰는 경우 세계 법선 벡터를 포함합니다. 
            //픽셀당 노멀 맵을 기반으로 노멀 벡터를 얻으려면 WorldNormalVector(IN, o.Normal)를 사용하십시오.
            //따라서 구조체에 넣고 o.Normal에 쓰지 않으면 o.worldNormal로 액세스하고, 
            //쓸 경우 WorldNormalVector(IN, o.Normal)로 액세스합니다.
            float3 worldNormal; INTERNAL_DATA
            float2 uv_Bump;
            float3 worldPos;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            o.Normal = UnpackNormal(tex2D(_Bump, IN.uv_Bump));
            //float3 worldNormal = WorldNormalVector( IN, float3( 0, 0, 1 ) );
            //o.Emission = worldNormal.g;
            o.Emission = WorldNormalVector(IN, o.Normal).rgb;
            //o.Emission = IN.worldNormal.rgb;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

https://forum.unity.com/threads/cannot-get-worldnormal-in-surf-shader.97942/

https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaders.html

반응형

'Unity3D > Shader' 카테고리의 다른 글

unity shader input screenPos  (0) 2021.11.25
Diffuse Texture Gloss Map 만들기 (Alpha)  (0) 2021.11.23
Shader warning in ... CGIncludes/UnityMetaPass.cginc(295) (on d3d11)  (0) 2021.11.18
TRANSFORM_TEX  (0) 2021.11.17
[URP] Fire Shader Graph  (0) 2021.10.26
: