안녕하세요~ TA 새벽언덕입니다.
오늘은 유니티 쉐이더에서 Struct, SubShader, Pragma 부분에대해서 말씀드리고자합니다.
먼저 구조체(Struct)입니다.
구조체 : Struct
vert & frag
struct appdata부분과 struct v2f부분으로 보통 사용합니다.
예를들면
struct appdata
{
float4 positionOS : POSITION;
float4 color : COLOR;
}
struct v2f
{
float4 positionCS : SV_POSITION;
float4 color : TEXCOORD1;
}
위와같이 코드를 작성해 줄 수 있습니다.
여기서 appdata부분은 Shader에서 vertex의 정보를 가져오는 구조체부분이고,
v2f는 vertex쉐이더에서 fragment쉐이더로 넘겨줄 데이터를 담아주는 구조체입니다.
v2f 는 해석하면,
v2f
V to F
Vertex To Fragment
vertex에서 fragment로 넘기는 구조체라는 의미를 담고 있습니다.
Subshader
다음은 Subshader 입니다.
아래는 예시 코드입니다.
half _EmissionPower;
fixed4 _Color;
Subshader안에 위와같이 변수 선언을 해주지 않으면 프로퍼티스와 연결이 되지않아서, Material에서 조절이 불가능합니다.
즉, Properties의 변수명을 SubShader 내부에 선언해줘야 사용이 가능합니다.
비유를들면
Properties : 바깥에서 조절할수있는 버튼, 조절자입니다.
Subshader안에 변수선언 : 버튼과 기계를 연결해주는 코드입니다.
Shader : 기계입니다.
#Pragma
스니핏(snippet)이라고도 부릅니다.
셰이더의의 여러 세팅값중에 미리 설정하는 부분을 이렇게 부릅니다. 전처리 부분입니다.
셰이더의 여러 분기와 조명 계산설정등이 이에 포함됩니다. 이것에대해서는 나중에 한번더 다룰수 있도록하겠습니다.
오늘은 Shader의 구조체와 변수선언, pragma등에 대해서 내용을 적었습니다.
Shader를 공부하는 분들께 도움이 되셨으면좋겠습니다.
영상으로 보기를 원하시는 분들은 유튜브에 "새벽언덕"으로 검색 부탁드립니다.
TA새벽언덕 인사드립니다.
긴글 읽어주셔서 감사합니다.
좋은하루되세요~~
'유니티엔진 > 유니티쉐이더' 카테고리의 다른 글
쉐이더 FallBack과 시맨틱 (0) | 2022.03.02 |
---|---|
Properties & Shader 경로지정 (0) | 2022.02.16 |
UV와 Sampler2D (0) | 2022.02.09 |
쉐이더의 Culling, Queue, RenderType (0) | 2022.01.26 |
SRP Batcher (0) | 2022.01.26 |