Transparent가 아닌 쉐이더를 가진 렌더러는 뒤에있는 렌더러를 가리게 된다.
그런데 게임을 만들다보면 항상 맨앞에 렌더링 해야할 렌더러가 있기 마련이다.
그렇지만 유니티 기본쉐이더들은 수정을 할 수 없다.
EditShader를 눌러도 쉐이더파일이 열리지 않는다.
이 글에선 UI를 포함한 유니티 내장쉐이더를 수정하는 방법과 AlwaysVisible쉐이더를 만드는 방법을 적는다.
우선 유니티 다운로드 아카이브에 들어가서
자신이 사용하는 유니티 버젼의 Downloads(/운영체제/)버튼을 누르면 Built in Shaders라는 다운로드 버튼이 있다.
눌러서 받아준다.
압축을 푼 이후 "...\builtin_shaders-2020.3.24f1\DefaultResourcesExtra" 경로에 들어가면 유니티 내장 쉐이더들이 있다.
거기서 UI쉐이더든 Standard쉐이더든 원하는 쉐이더 파일을 코드 편집기로 연다.
이 글에서는 Standard쉐이더를 수정했다.
Pass정의 부분에 ZTest를 찾아준다.
Pass가 많다면 여러군데가 있다.
ZTest @@@@을 ZTest Always로 바꿔준다.
그리고 Standard쉐이더를 포함한 몇몇쉐이더 한정으로
Pass정의에 ZTest가 없는 Pass에도 ZTest Always를 추가해준다.
그리고 내장쉐이더 이기때문에 같은이름으로 쉐이더를 임포트하면 중복이 돼버리기 때문에
맨 위로가서 쉐이더 이름도 바꿔준다
그리고 적당히 다른이름으로 저장해서 유니티에 임포트하고
뒤에 있던 빨간큐브의 Material에적용해보면
이렇게 빨간큐브가 파란큐브보다 뒤에있음에도 앞에 렌더링되는 모습을 볼 수 있다.
캐릭터가 건물뒤로 들어가도 실루엣을 보여줘야한다던가.
캐릭터의 HP같은 정보UI가 항상 보여졌으면 할 때
사용하면 좋다.
더 자세한 쉐이더의 알파 설명
https://rito15.github.io/posts/unity-transparent-stencil/
'Unity > Shader' 카테고리의 다른 글
[Unity Shader] Foil Trading Card Shader (0) | 2022.06.11 |
---|---|
[Unity Shader] 컬러마스크 쉐이더를 이용한 커스터마이징 구현 (0) | 2022.04.14 |
URP 쉐이더그래프에서 SceneColor(기존GrabPass)쓸때 주의점 (0) | 2021.04.16 |