이전까진 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 |