Android platform에서 권장하는 texture compressed option은 ETC 다. 알파채널이 있을경우 자동으로 RGBA 16bit로 압축되며 이에 따라 texture 품질 저하 및 용량은 네배로 늘어난다.
Unity3D에서 압축되어진 texture 결과물의 비교.
손실압축인 ETC에 비해 RGBA4444로 처리되는 texture 포맷이나 unity의 경우 엔진 내부에서 원 소스>>ETC>>RGBA의 프로세스를 거쳐 압축되는듯해 품질 손실이 일어나는 듯 하다고 보고 있다. 권장되는 방법은 texture alpha 소스를 별도의 texture를 분리해 작업하고 shader 역시 이러한 방식으로 받도록 코딩하는 것이다.
알파 texture의 효율적인 활용(texture atlas를 활용한 해결. JP님 공유 자료)
Kenjiro/ChromaPack을 활용한 효율적인 alpha texture 제작 및 관리 (texture 압축 포맷 plug-in을 통한 해결법. 이득우님 공유자료)
test texture(1024x512)
scene내 배경 전체를 뒤덮게되는 1024x512 texture의 사용에 있어 ETC compressed texture의 경우 이미지 손실 저하가 너무 드러나기 때문에 마침 이 문제에 대해 테스트. 결론은 매끄러운 품질의 texture를 얻기 위해서는 RGB 24bit가 제일 무난 하다는 결론.(용량은 이미지에서 볼 수 있듯 6배 증가). JPG로 recompressed되면서 ETC2와 RGB 24bit의 품질차가 크게 드러나지 않는데 실제 엔진에서 그려지는 결과물은 꽤 차이가 난다.(그래도 unity에서는 RGB 16bit보다는 좋다는...)
대다수의 texture에 적용하기보다 gradient color가 들어간 이미지에서 이러한 증상이 더 두드러진다. 의외로 실사 texture의 경우에는 생각보다는 티가 덜난다. 배경 플랜으로만 쓰이는 것만으로도 문제가 되는 것이였지만 여기에 shader animation까지 적용해서 쓰고 있어 아무래도 로퀄 텍스쳐임이 두드려져서 테스하게 되었다.
'Technical Report > Unity Shader' 카테고리의 다른 글
Wrapped Diffuse (0) | 2015.01.19 |
---|---|
multipass surface shader : DiffuseOutline (0) | 2015.01.19 |
Matcap shader review. (0) | 2015.01.12 |
Unity3D Transparent cutout lightmap (0) | 2014.12.26 |
Surface shader compile parameter (0) | 2014.11.18 |