본문 바로가기

유니티엔진/유니티쉐이더

쉐이더 FallBack과 시맨틱

안녕하세요. 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