rgba32 bit texture를 etc 4bit texture 2장으로 사용하기

반응형

하나의 비압축 텍스처를 두 압축 텍스처로 대체하여 용량을 1/4로 줄이는 방법


1024 by 1024 기준으로 rgba32 텍스처의 용량은 밉맵을 제외하고 4m.

이를 압축포맷으로 변경하면 0.5m가 된다.

하지만 압축포맷으로 만들면 알파를 뺼수가 없다.

그래서 압축 텍스처 두장을 사용하여 하나는 압축 rgb,

하나는 압축 알파로 사용한다.


위 첨부 소스의 MakeCompressedTexture 함수를 보면 비압축 텍스처를 

압축 텍스처 두장으로 만들어 준다.

첫번째 압축 텍스처에는 원본에서 rgb값을 그대로 쓰고

두번째 압축 텍스처에는 원본에서 r값을 rgb에 저장한다.


그리고 shader 코드에서 이 두번째 압축 텍스처의 rgb값을

알파값으로 사용한다.


이 글을 공개로 바꾸면서 첨부 해 둔 script와 shader 소스 첨부를 제거하였다.

대신 내용을 좀 더 자세히 적어보자면 


1. script에서 rgba32 텍스처를 선택해 픽셀값을 rgb값을 가지는 etc1 텍스처 하나와

rgb에 a값을 가지는 etc1 텍스처 하나를 만든다.


2. shader를 하나 만들어 두 텍스처를 받도록 하고 rgb값엔 rgb텍스처 값을 넣고

a값에는 알파값을 저장한 텍스처의 rgb값을 넣는다.




'Optimizing > Common' 카테고리의 다른 글

Dark Secrets of Shader Development  (0) 2017.12.14
Tiling와 Offset을 활용한 2개의 압축텍스처 최적화  (0) 2017.02.28
adreno profiler  (0) 2016.08.19
TAGS.

Comments