Featured image of post AT2_Char_MainMetal 쉐이더 2.0 버전

AT2_Char_MainMetal 쉐이더 2.0 버전

AT2_Char_MainMetal 쉐이더는 이전의 쉐이더에서의 갈라짐 (seam) 현상을 해결하다가 나온 쉐이더입니다.

유니티 엔진의 노말맵에서의 갈라짐 (seam) 현상은 해결이 불가능한 것으로 보입니다. 지금까지 여러 문서를 뒤져보았고 각종 방법의 테스트를 해 보았지만 해결되지 않았습니다. (스승님도 포기)

테스트로 들어있는 프로젝트인 부트캠프에서도 마찬가지 현상이 나타났으며, 부트캠프에서는 이 문제를 교묘하게 안보이는 부분으로 배치하여 숨기고 있었습니다.
일단 이 문제는 노말을 넘길 때 월드 노말을 넘기지 않고, 탄젠트 노말을 넘겨주면 유니티에서 알아서 변환해서 노말맵을 만들어 준다는데 있었습니다. 탄젠트 노말을 넘겨주는 것 외엔 접근을 할 수가 없기 때문에, 따로 뭔가 건드릴 수 있는게 없었다는 거죠.

다리 안쪽이라던가 말이죠.

그치만 이 작업을 하다가 반사 쉐이더에서의 문제점이 발견되었습니다. 반사 쉐이더에서는 노말맵에서와 다른 메카니즘으로 동작하다보니 (노말맵은 로컬 노말을 넣어야 하는데 리플렉션은 월드 노말을 넣어야 하는…)

반사 쉐이더는 기존의 겜브리오처럼 계산을 하게 되어서 같은 문제점이 나왔습니다.
그것은 즉 좌우 대칭일때 나오는 문제.

이렇게 나오는 문제입니다. 첨엔 그냥 노말맵의 seam 현상 때문에 저렇게 보이나 했더니 알고보니까 반사의 위아래가 뒤집혀 있더군요. 웃긴건 좌우대칭 문제인데 결과물의 문제는 위아래 (Y축) 이 나온다는 것. 이 원인을 찾으려니 시간이 별로 없어서 그냥 결과주의로 가긔 ㅋㅋㅋ

스승님 말씀에 따르면 어떤 프로그래머는 버텍스 자체에 - 값을 넣어서 이 문제를 해결한다던가 한다는데 저는 그냥 쿨하게 UV 값을 인식해서 문제 해결. 지난번에 처리한 방법과 같지요. 그래픽 디자이너의 의도대로 만들 수 있다는 장점도 있고.

즉 이렇게 배치하기만 하면


이렇게 해결되도록 제작되었스빈다. seam은 여전히 있지만 눈에 덜 띄게 되었죠.

Hugo로 만듦
JimmyStack 테마 사용 중