* 쉐이더: 음영+색상 = 출력되는 픽셀의 색을 정해 재질을 표현함

*  랜더링 파이프라인: 3D장면을 행렬 변환을 통해 2D로 표현하는 과정

*  가산혼합: 모니터에 출력되는 RGB로 다 더하면 흰색

*  픽셀쉐이더: 픽셀 1개의 색을 결정하는 코드

*  Float3(R,G,B)
흰색 Float3(1,1,1)
검은색 Float3(0,0,0)
노란색Float3(1,1,0) 

*  Float4(R,G,B,alpha)
흰색 반투명 Float4(1,1,1,0.5)

 

- 플로트 형식 입력
>Range(0,1)
>Float
>int
> Color
> Vector
 
- sampler형식 입력
> 2D
>3D
> Cube
 
- Float4형식 입력
> Color =(1,1,1,1)
> Vector = (1,1,1,1)

 

 
Shader "Custom/NewShader" // 이름
{ 
    Properties // 메터리얼 인스팩터에서 입력할 수 있는 부위
    {
       
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows noambient
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input // 엔진에서 받아오는 데이터 구조체. 무조건 1개는 있어야 함
        {
            float2 uv_MainTex;
        };

        // 전역 변수
        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

     

        void surf (Input IN, inout SurfaceOutputStandard o) // 색상, 이미지 출력부 
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
         //  o.Albedo = float3(1,0,0); // 빛이 영향을 받는 색 출력
           o.Emission = float3(1,0,0);  // 빛이 영향을 받지 않는 색 출력

           //Albedo와 Emission을 같이 쓰면 = 밝아짐
           
           o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

 

+ Recent posts