본문 바로가기
자료는 자료지/회사 내부용 자료

깔끔한 폰트 셰이더 TsFont_HeadupText 개량

by 대마왕J 2012. 8. 10.

이전에 TsFont_HeadupText 셰이더는 큰 문제가 없었습니다만...

AT2에서 묘한 문제들이 발생했습니다.

일단 EZGUI로 그린 녀석이라 블룸같은 후처리가 전부 먹어 버리고,

그 다음에 이유는 모르겠지만 잔상이 남아서 말이죠.
아마도 디퍼드 렌더링이 되면서 버퍼와 뭔가 충돌이 나는게 아닐까 싶은데...

 

그래서 이번에 셰이더를 뜯어서 문제를 해결했습니다. 해결한 김에 심플하게 개량하기도 했구요.

 

 그래서 만든 심플 버전 TsFont_HeadupText 셰이더입니다.

 메뉴도 완전 심플하게 바귀었습니다.

 

 그전에는 외각선 따로, 알파 따로 계산하고, 내부의 글자 선명도를 계산하는게 따로 있었습니다만

이번에는 알파가 외각선의 두께를 같이 의미하고, 내부의 글자 확장과 선명도를 계산하는 메뉴만 있습니다.
Outline color는 외각선의 칼라를 의미하고,
폰트의 색상은 이전과 같이 버텍스 칼라로 구분됩니다.

이상하게도 이전의 셰이더에서도 Main Color를 사용하지 않았습니다. 그러면서 만들어져 있었지요. (약간 의심스러운 값도 들어 있었구요) 
그래서 일단 따라 만들어 놨습니다. 저 Main color는 아무런 작동도 하지 않습니다.

즉, 이전에 사용하던 메터리얼 그대로, 같은 옵션으로 사용 가능하게끔 조치해 놨습니다.

수치가 무척 민감하므로 함부로 건드리지 말아 주세요.

 일단 멀리 있을때에는 좀 지글대는 문제가 있습니다.
개선하려고 노력을 많이 해봤는데 근본적인 문제가 있더군요. 바이리니어 샘플러의 한계...
밉맵을 쓰면 좀 개선되지만 GUI 속성이라 밉맵 사용불가.

그래서 외각선을 완전 검은색으로 하지 않았고, 폰트의 외각도 좀 부드럽게 만들었습니다.
그래서 좀 완화 시키는 정도로 타협.

나중에 보니까 이전의 TsFont_HeadupText 셰이더는 멀리 가면 이것보다 더 깨졌었더군요.

카메라에 초근접하면 DOF 가 먹습니다. 그냥 오브젝트라 후처리 다 먹는건 방법이 없더군요.
유니티 본사에 문의한 결과입니다.

하지만 다행히 문제없이 이쁘게 먹힙니다.

카메라랑 너무 가까워지면 없애 버릴 수도 있고...  

 블룸을 먹지 않게 하는건 현재 불가능합니다. 그래서 현재의 라이팅 체계에서 블룸이 먹지 않을만큼의 밝기로 내렸습니다만, HDR의 톤맵핑 때문에 다른 맵에서 어찌될지는 잘 모르겠습니다.
블룸 문제 또 발견되면 말씀해 주세요.

 대충 이 정도에서 가장 이쁘게 보이도록 만들어 봤습니다.

또한 이전의 문제였던 'DOF가 들어간 알파 텍스쳐와의 충돌문제' 도 완벽히 해결되었습니다.
잔상도 전혀 남지 않게 성공했구요.

커밋완료되었고 순기 컨펌 되었습니다.

반응형

댓글