본문으로 바로가기
반응형


대마왕님의 ETC2를 실무에서 써보자 포스팅의 테스트와 활용에 대한 포스팅


1부 서론 : http://chulin28ho.tistory.com/314
2부 테스트 : http://chulin28ho.tistory.com/315


수정 포스팅 - 17.2.2


이 포스팅을 작성할즈음에 SM3.0이 타겟 디바이스로 결정될 경우 모바일 개발환경의 리소스 관리에서 변화가 있을것으로 전망했다. 이제 많은 프로젝트에서 2.0 지원 포기여부를 고려하기에 포스팅을 갱신하여 정리





좌에서 우로.


1. RGBA 16bit(non alpha channel) 0.5MB
2. ETC 4bit 128kb
3. RGBA 16bit(alpha channel) 0.5MB
4. ETC2 4bit 128kb
5. RGBA 32bit 1.0MB
6. ETC2 8bit 250kb


4번과 6번만 알파가 들어간 texture(1 bit alpha). 밉맵은 해제한 상태. 밉맵 키면 밉맵만큼 용량이 늘어난다. 0.5MB >> 0.7MB


일단 RGBA 16bit 품질이 제일 구리다.(쓰지말자... 어쩔수 없다면 차라리 리사이징하고 RGBA 32쓰는게 나을수도 있다.)


ETC, ETC2 품질 차이가 꽤 난다. 그러나 ETC2와 RGB 24bit는 차이가 크게 나지 않는다. 실사의 경우 더 구별하기 힘듬

그러나 마스킹 텍스쳐의 경우 RGB 채널간 오염이 ETC2도 생긴다. 그건 그냥 RGB 24 줄여 쓰던가 하자.


ETC2 + 1bitAlpha의 경우 품질 저하가 인지할 정도로 발생하나 ETC1 정도의 퀄리티로 알파를 지원하므로 AlphaTest를 사용할경우는 이쪽을 추천.. 텍스쳐 품질 저하가 극심하다면 기존처럼 ETC2 두장 쓰는게 좋다.


ETC2 8bit Alpha의 경우 256단계의 알파채널을 가지는데 SM3.0 타겟으로 개발할경우 UI, 이펙트 소스 용량에서 꽤나 이득을 볼 수 있다.





OpenGL ES사이트에서 타겟 디바이스의 ES 3.0 지원 여부를 확인하자





모바일 디바이스에서 빌드했던 화면(위는 ES 2.0 지원인 S3, 아래는 ES 3.0 노트3)


ES 2.0 디바이스에서 ETC2를 사용할경우 메모리에서 모조리 압축이 풀린상태로 메모리에 올라간다. 즉 ETC2 = RGB 24bit 상태로 올라간다.


아울러 ETC2를 사용할 경우 IOS 대응에서 ETC와 PVRTC 두개를 따로 관리할 이슈가 사라진다. 다만 PVRTC2와 ETC2의 품질차이를 고려해본다면 부분적으로는 PVRTC2를 사용하는것도 IOS 빌드에서 욕심내봄직하다 생각한다.





Bonus

모바일에서 normal texture 압축 결과물 비교.



Android format은 ETC1이 제일 구리고..(어쩔수 없으니...) ETC2부터는 꽤 쓸만해도 RGB24와 퀄리티 차이가 나긴 난다.. 그런데 ETC2 + 1bit Alpha에서 품질저하가 극심하다.(노멀에서 이걸 쓸일이 있겠나만 바꿔 생각하면 디퓨즈에서 이미지 손실이 이정도로 난다는 예로 보는게....)




보너스로 PVRTC의 결과와 DX1까지.. PVRTC2 가 품질이 꽤 괜찮다... 훔..

애석하게도 Mali나 Adreno에서 PVRTC2를 지원한다는 소리는 없다.....





반응형