Unity 내일배움캠프 TIL 1124 | Unity Texture Format

cheeseonrose·2023년 11월 27일
0

Unity 내일배움캠프

목록 보기
86/89
post-thumbnail

[유니티 TIPS] 알쓸유잡 | 효율적인 텍스처 압축 이해하기& 꿀팁

💡 Texture Format



🐤 텍스쳐 압축이 필요한 이유

  • 일반적으로 우리가 생각하는 이미지는 32 bit True Color(채널 당 8 bit)
    bpp(bit per pixel)라고 표현
  • 32 bit를 그대로 저장하지 않음 → 압축!
    • PNG는 비손실 압축
      → 이미지에 들어있는 색상 숫자에 따라 용량 차이가 심함
      → 유사한 색상이 많을 경우 PNG는 압축 효율이 좋기 때문에 동일한 품질이라면 JPG보다 퀄리티가 좋을 수 있음
    • JPG는 손실 압축
  • PNG나 JPG 이미지를 그대로 GPU에서 사용하게 되면 큰 용량을 차지
    • PNG나 JPG는 디스크에 저장된 용량을 아끼기 위한 것이지, 메모리 효율을 위해 제작된 알고리즘은 아님
      → GPU에서 사용하는 전용 포맷으로 사용
  • 이미지를 GPU에서 렌더링할 때 사용 ⇒ Texture
  • 조건
    • 빠른 디코딩
    • 랜덤 액세스
      • 순차적으로 접근하는 것이 아닌 특정 지점에 접근해서 바로 값을 얻어야 함
    • 인코딩 상태로 메모리에 존재
      • GPU가 압축된 상태에서 랜덤하게 접근해서 데이터를 얻음
    • 사이즈 절약(메모리, 저장 장치)



🐔 가변 비율 압축 vs 고정 비율 압축

  • 가변 비율 압축 : PNG, JPG
    • 이미지가 복잡하면 압축 효율이 떨어지고, 단순하면 압축 효율이 높아짐
    • 이미지는 기본적으로 가변 비율 압축 방식
    • Ex : RLE (Run-Length Encoding, 실행 길이 인코딩)
  • 고정 비율 압축 : 우리가 사용하는 Texture
    • 4:1, 8:1, 16:1 등으로 길이 고정



🦜 DXT

  • DirectX에서 사용하는 대표적인 Texture 포맷
  • 블록 기반 압축 사용 (BC, S3TC)
    • 대부분의 Texture는 블럭 기반 압축
    • 4 * 4 블럭으로 나누어서 블럭 단위로 압축
    • 랜덤 액세스할 때는 해당 블럭으로 찾아가 블럭의 압축을 풀어서 접근
  • DXT 1 방식은 64 bit 사용
    • 한 픽셀 표현을 위해 4 bit 사용 (64 bit / (4 * 4))



🦆 PVRTC

  • 주로 애플에서 사용
  • 옛날에 사용하던 방식임
  • DXT와 흡사한 방식
  • 컬러 key 2개를 뽑음
    • 4 * 4 pixel 단위로 key를 뽑음
    • 2개의 대표 이미지 색상은 가로, 세로 1/4 사이즈로 생성
  • DXT에서 나아가 이미지를 블러링
    • DXT는 블럭 기반이므로 확대하면 블록 모양이 티가 남
    • 블러링으로 인한 침범 문제가 있음



🦢 ETC

  • 주로 안드로이드에서 사용
  • 사람의 눈은 밝기 변화에는 민감하고 채도 변화에는 둔감
    → 색상은 저해상도로, 밝기는 고해상도로 저장해서 조합
  • ETC 1(4bpp)과 ETC 2(4, 8bpp)
    • 퀄리티 차이가 남
  • 크런치 (Crunch)
    • 메모리 절약보다는 디스크 용량을 아끼기 위한 것
    • ETC 포맷을 디스크에 저장할 때 한 번 더 압축
    • 메모리에 올릴 때 압축을 풀어서 올림
    • 로딩할 때 좀 더 걸릴 수 있음



🦉 ASTC

  • 통일된 텍스쳐 포맷
  • Addaptive, Scaler
  • 유연하고 확장성 있는 텍스쳐 포맷
    블록 사이즈 지정 가능
    • 알베도 텍스쳐나 모델링에 쓰이는 텍스쳐는 4 * 4로 높은 품질 사용
    • 파티클이나 이펙트는 12 * 12를 사용
    • 텍스쳐별로 유연하게 선택
  • PVRTC는 색이 번지는 현상이, ETC는 의도하지 않은 컬러가 나타나는 현상이 있음
    → ASTC를 사용하면 원본과 매우 흡사한 품질로 사용 가능
  • 대표 컬러를 뽑아서 블렌딩하는 방식
    • 블록마다 모드가 다름 (최대 8가지)
    • key 컬러 안에서도 그라데이션이 들어감
    • 최대 4개까지 key 컬러를 뽑을 수 있음
  • 1:1 해상도로 저장하는 것이 아닌 알고리즘에 의해 패턴을 만들어냄
  • 주로 모바일에서 사용
    • 요즘 사용하는 기기들은 거의 ASTC를 지원



🦩 BC7

  • ASTC와 매우 유사한 접근 방식
  • ASTC는 가변 크기 블록을 갖지만, BC7은 고정 크기 블록을 가짐
  • 주로 PC, 콘솔에서 사용
  • ASTC와 거의 동일한 품질





끗~,,

0개의 댓글