반응형
바닥 아웃라인 셰이더를 만든후 그 위에 올라갈 오브젝트의 소팅에 문제가 있다는 것을 발견했습니다.
이 때 사용된 렌더큐를 따져보면
바닥 렌더 큐(Pink) - Tags {"Queue"="Transparent+100" "IgnoreProjector"="True" "RenderType"="Transparent"}
오브젝트 렌더 큐(Blue) - Tags {"RenderType"="Opaque"}
큐 순서를 따져보면 Transparnet 가 Opaque보다 소팅이 위에 찍히기에 당연한 결과라 할 수 있습니다.
그래서 오브젝트 렌더 큐를 아래와 같이 변경을 해보았습니다.
Tags {"Queue"="Transparent+200" "IgnoreProjector"="True" "RenderType"="Transparent"}
그리고 유니티로 돌아왔지만, 여전히 소팅 문제는 해결되지 않았습니다.
원인을 알수 없어 이짓 저짓 다해보고 서피스 방식이었던 셰이더를 프라그로 바꿔보고 ZTest도 바꿔보고 다 해보았지만
여전히 바닥아래로 오브젝트가 찍히는 것입니다.
결국 뒤지다 뒤지다 알게 된 사실이 렌더 큐에 대한 것은 코드를 수정해도 실시간으로 바로 바뀌는게 아님을 알게 되었습니다.
셰이더가 생성되는 순서가 먼저이고 그 다음에 큐에 대한 것을 연산하는 것입니다.
그래서 다른 셰이더로 한번 바꾼후 다시 원래 셰이더로 돌아오니 큐가 제대로 찍히는 것입니다.
이게 버그인지 아니면 의도된 것인지 모를 일입니다.. 요상한 유니티..
반응형
'SHADER' 카테고리의 다른 글
셰이더에서 Time 사용시 프레임 렉을 줄이는 방법 (0) | 2016.11.22 |
---|---|
유니티와 노트4의 전쟁... 특정 셰이더 코드와 충돌일으킴(vert_img) (0) | 2016.10.29 |
유니티 셰이더 - Plane에서 아웃라인(outline)을 이쁘게 만들기 위한 고민.. (0) | 2016.08.23 |
알파 텍스쳐 메모리 절약을 위한 방법 - 알파 텍스쳐 ETC1 2장으로 처리하기 (1) | 2016.07.25 |
유니티 셰이더 - 서피스 셰이더에서 빛 연산을 안하기 위해서는 Albedo가 아닌 Emission을 사용하자. (0) | 2016.07.15 |