일반적으로 함수는 다음과 같은 형식의 구성됨
형식 이름 ( 입력값 ) { }
void surf (Input IN, inout SurfaceOutputStandard o) { }
1. void : return 값이 없는 함수 형식을 의미
2. surf : 함수의 이름
3. (Input IN, inout SurfaceOutputStandard o)
함수에서 () 안에 있는 부분은 보통 이 함수에 값을 넣는 입력값의 영역이고 이 부분은 다음과 같이 해석할수 있다.
'input 구조체를 IN이란 이름으로 이 함수 안에 받아들이고, SurfaceOutputStandard라는 구조체를 o 라는 이름으로
이 함수 안에 받기도 하고 집어 넣기도 (input) 하겠다'
4. SurfaceOutputStandard 구조체는 유니티 내부의 다른 include 파일에 정의되어 있음
struct SurfaceOutputStandard
{
fixed3 Albedo; // diffuse color
fixed3 Normal; // tangent space normal, if written
fixed3 Emission;
half Specular; // specular power in 0..1 range
fixed Gloss; // specular intensity
fixed Alpha; // alpha for transparencies
};
Albedo 에 넣으면 조명연산을 추가로 받게되고, Emission에 넣으면 조명 연산을 받지 않아서
'조명과 상관없는 순수한 색상만이 출력 됨'
그래서 순수한 결과물을 보고 싶을 때는 Emission을 사용함
'Unity > Shader' 카테고리의 다른 글
연산 규칙 (0) | 2022.01.03 |
---|---|
float / half / fixed (0) | 2022.01.03 |
SubShader (0) | 2022.01.03 |
Properties (0) | 2021.12.24 |
기본 쉐이더 형태 (0) | 2021.12.24 |