이전까진 Properties 영역(인터페이스 를 제작하는 영역) 이고, 진짜 쉐이더를 제작하는 영역에 대해서 알아볼 부분임

CGPROGRAM ~ ENDCG로 끝나는 부분은 유니티 스크립트가 아닌 CG 언어를 이용해서 쉐이더를 직접 짜야함

////*주석   : 전처리기(=스니핏)
////**주석  : 구조체
////***주석 : 함수

 

SubShader   
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        ////*전처리라고 할수도 있고, 스니핏이라고 부르기도함, 쉐이더의 조명계산 설정이나, 
        ////세부적인 분기를 정해주는 부분
        #pragma surface surf Standard fullforwardshadows

        #pragma target 3.0
        ////*

        sampler2D _MainTex;

        ////** Input이라는 이름을 가진 구조체, 이 안에 넣는 내용은 엔진으로부터 받아와야 할 데이터들임
        ////{ } 안에 들어 있고, { } 의 끝에 ; 있다는 점을 주의 
        struct Input
        {
            float2 uv_MainTex;
        };
        ////**


        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
    
        ////*** sur라는 이름을 가진 '함수' 영역, 색상이나 이지미가 출력되는 부분을 말수가 있음
        ////{ } 안에 들어 있고, { } 의 끝에 ; 있다는 점을 주의 
        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ////***
        ENDCG
    }

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

float / half / fixed  (0) 2022.01.03
Function  (0) 2022.01.03
Properties  (0) 2021.12.24
기본 쉐이더 형태  (0) 2021.12.24
유니티 쉐이더의 작성요령  (0) 2021.12.22

+ Recent posts