Alpha channel이 들어있는 texture의 lightmapping을 만들때에는 위의 우측처럼 mesh를 인식해서 맵을 구워주게 된다. 원하는 결과물은 아래와 같이 texture alpha가 적용된 상태로 라이트 맵핑이 되는것~!!
1. 배경포럼에 이 이슈를 올렸을때 기술적 해결은 shader Properties에
_TransparencyLM ("Transmission LightMap", 2D) = "white" {}
만 추가하는것으로 해결하는 방법이 있다.
대마왕님 블로그 링크 : http://chulin28ho.tistory.com/244
Unity Forum 링크 : http://answers.unity3d.com/questions/49537/can-transparent-textures-be-lightmapped.html
이방법의 경우 원론적인 해결법인데....알파채널의 흰색이 빠지고 검은색이 채워지는 문제가 발생. 기존의 알파채널에서 투명도 적용받는 부분이 반대로 되어 나온다.. 이걸 쓰려면 alpha texture를 반전 시켜야 하는데.....그러면 기존의 transparent texture는 또 그거대로 다 수정해야 하는 이슈 발생...
2. shader 이름에 TransparentCutout만 들어가면 알아서 빼준다고 하는데 테스트 해보니 난 안된다... ㅡ,.ㅡa..(망할 비스트..)
3. texture alpha channel에 alpha texture가 들어가니 제대로 나온다. 물론 이 경우 플랫폼 셋팅이 안드로이드일경우 texture가 ETC4로 compressed 되지 않고 RGBA 16bit로 압축되어 버린다. lightmap 구울때만 넣어주고 다시 지우고 import 하는 걸로 해결...
모바일 플랫폼이 아니면 이게 문제가 될거 같지 않은데 원론적으로 접근하자면 1의 shader만 손을보면 해결법이 나올거라 생각한다. shader 수정은 다음 기회로~
'Technical Report > Unity Shader' 카테고리의 다른 글
Android platform texture compresstion option에 따른 결과물 (0) | 2015.01.16 |
---|---|
Matcap shader review. (0) | 2015.01.12 |
Surface shader compile parameter (0) | 2014.11.18 |
Unlit tranceparent cutout alpha shader(alpha texture 분리) (0) | 2014.07.10 |
DisplaceMesh Binding을 활용한 Normal Tile 제작 (0) | 2013.03.19 |