안녕하세요. TA 새벽언덕입니다.
쉐이더의 FallBack과 시맨틱에 관해서 말씀드리고자합니다.
FallBack
FallBack "Diffuse"
쉐이더의 마지막 줄끝에 FallBack "Diffuse"라고 보통 적혀있는것을 보실 수있습니다.
저는 이것이 무엇을 의미하는지 많이 궁금했었는데요.
이것의 의미는 이 하드웨어에서 실행할 수 있는 하위 쉐이더가 없는 경우, 다른쉐이더(Diffuse)에서 시도 하라는 내용입니다.
즉 원래 셰이더가 맞지 않을때를 대비해서 다른 대안 셰이더를 지정한것입니다. FallBack으로 지정해주면 렌더링이 되지않는경우를 막고 최소한 낮은 품질으로라도 렌더링을 할 수있게 됩니다.
FallBack에는 만일의 경우 여러 플랫폼에서 대응할수있는 쉐이더를 적어주는것이 일반적입니다.
FallBack Off
Fallback "otherShaerName"
위와같이 기재해줄 수 있습니다.
쉐이더 시맨틱 : Shader semantics
fragment 쉐이더에서 궁금증을 자아내는 코드부분이있습니다.
float4 frag(v2f i) : SV_Target
{
//fragment shader
}
위의 코드에서 SV_Target부분입니다.
시맨틱이란 쉐이더의 의도를 명시하는 부분이라고 생각해주시면 좋을것같습니다.
보통 fragment shader에서 color를 목적으로 하므로 SV_Target라고 적어주시면됩니다.
SV_Target : 렌더링 대상 필셀의 색상 ( == SV_Target0)
SV_TargetN : 다수의 렌더 타겟 , SV_Target1, SV_Target2
SV_Depth : 렌더링 대상의 픽셀 깊이.
유니티 메뉴얼
SV_Depth
일반적으로 프로그래먼트 셰이더는 Z버퍼 값을 오버라이드 하지 않으며, 기본값은 일반 삼각 래스터화에 사용됩니다. 그러나 일부 효과의 경우 픽셀당 커스텀 Z버퍼 값을 출력하는것이 유용합니다.
<요약>
1. 시맨틱이란 쉐이더 연산의 의도를 명시하는것입니다.
2. 보통 Color연산이 목적이므로 SV_Target 를 사용하면됩니다.
오늘은 쉐이더의 FallBack와 시맨틱(Semantics)에대해서
말씀드렸습니다. 쉐이더 공부에 도움되셨으면 좋겠습니다.
영상으로 보기를 원하시는 분들은 유튜브에 "새벽언덕"으로 검색 부탁드립니다.
TA새벽언덕 인사드립니다.
긴글 읽어주셔서감사합니다.
'유니티엔진 > 유니티쉐이더' 카테고리의 다른 글
Shader의 Struct, SubShader, Pragma (0) | 2022.02.23 |
---|---|
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 |