텍스처 압축
3차원 컴퓨터 그래픽스 |
---|
핵심 |
|
주 용도 |
|
관련 주제 |
텍스처 압축(Texture compression)은 3차원 컴퓨터 그래픽스 렌더링 시스템에서 텍스처 매핑을 저장하기 위해 설계된 이미지 압축의 특수 형태이다. 기존의 이미지 압축 알고리즘과 달리 텍스처 압축 알고리즘은 임의 접근에 최적화되어 있다.
텍스처 압축은 런타임에 메모리 사용량을 줄이는 데 적용될 수 있다. 텍스처 데이터는 종종 모바일 애플리케이션에서 가장 큰 메모리 사용의 원인이 된다.
장단점
[편집]텍스처 압축에 대한 그들의 획기적인 논문에서,[1] 앤드루 비어스, 마니쉬 아그라왈라, 나빈 차다흐는 다른 이미지 압축 기술과 텍스처 압축을 구별하는 네 가지 특징을 나열한다. 이 특징들은 다음과 같다.
- 디코딩 속도
- 압축된 텍스처 데이터에서 직접 렌더링할 수 있는 것이 매우 바람직하며, 렌더링 성능에 영향을 미치지 않기 위해 압축 해제는 빨라야 한다.
- 임의 접근
- 렌더러가 텍셀에 접근하는 순서를 예측하기 어렵기 때문에, 모든 텍스처 압축 방식은 압축 해제된 텍스처 데이터에 대한 빠른 임의 접근을 허용해야 한다. 이는 JPEG 또는 런 렝스 부호화와 같은 많은 잘 알려진 이미지 압축 방식을 배제하는 경향이 있다.
- 압축률 및 시각적 품질
- 렌더링 시스템에서 손실 압축은 다른 사용 사례보다 더 허용될 수 있다. crunch와 같은 일부 텍스처 압축 라이브러리[2]는 개발자가 부호율-변형 이론 (RDO)과 같은 방법을 사용하여 압축률과 시각적 품질 간의 균형을 유연하게 조절할 수 있도록 한다.
- 인코딩 속도
- 텍스처 압축은 인코딩 프로세스가 애플리케이션 제작 프로세스 중에 한 번만 수행되는 경우가 많으므로 비대칭 인코딩/디코딩 속도에 더 관대하다.
위의 내용을 고려할 때, 대부분의 텍스처 압축 알고리즘은 때때로 추가적인 전처리 및 후처리 단계를 포함하여, 작은 고정 크기 픽셀 블록을 작은 고정 크기 코딩 비트 블록으로 손실 벡터 양자화하는 형태를 포함한다. 블록 절단 부호화는 이 계열의 알고리즘 중 매우 간단한 예시이다.
데이터 접근 패턴이 잘 정의되어 있기 때문에, 텍스처 압축 해제는 렌더링 중에 전체 그래픽스 파이프라인의 일부로 실시간으로 실행될 수 있으며, 그래픽 시스템 전체의 대역폭 및 저장 요구 사항을 줄인다. 텍스처 맵뿐만 아니라 텍스처 압축은 범프 맵 및 표면 법선 맵을 포함한 다른 종류의 렌더링 맵을 인코딩하는 데 사용될 수도 있다. 텍스처 압축은 밉맵 및 비등방성 필터링과 같은 다른 형태의 맵 처리와 함께 사용될 수도 있다.
가용성
[편집]실용적인 텍스처 압축 시스템의 예로는 S3 텍스처 압축 (S3TC), PVRTC, 에릭슨 텍스처 압축 (ETC) 및 적응형 확장 가능한 텍스처 압축 (ASTC)이 있으며, 이들은 최신 그래픽스 처리 장치의 특수 기능 유닛에 의해 지원될 수 있다.
많은 비디오 가속 카드 및 모바일 GPU에 구현된 OpenGL 및 OpenGL ES는 일반적으로 벤더 확장을 통해 여러 일반적인 종류의 텍스처 압축을 지원할 수 있다.
슈퍼 압축
[편집]압축된 텍스처는 "슈퍼 압축"이라고 불리는 방식으로 추가로 압축될 수 있다. 고정 속도 텍스처 압축 형식은 임의 접근에 최적화되어 있으며 PNG와 같은 이미지 형식에 비해 훨씬 효율성이 떨어진다. 추가 압축을 통해 프로그래머는 효율성 격차를 줄일 수 있다. 추가 계층은 CPU에 의해 압축 해제되어 GPU가 일반 압축 텍스처를 받도록 할 수 있으며,[3] 또는 새로운 방법에서는 GPU 자체에 의해 압축 해제될 수 있다. 슈퍼 압축은 일반 텍스처 압축과 동일한 양의 VRAM을 절약하지만, 디스크 공간 및 다운로드 크기를 더 많이 절약한다.[4]
신경망 텍스처 압축
[편집]재료 텍스처의 임의 접근 신경망 압축(Neural Texture Compression)은 엔비디아의 기술로, 기존 텍스처 압축 방법과 유사한 저장 공간 요구 사항을 유지하면서 두 가지 추가 세부 수준(16배 더 많은 텍셀, 즉 4배 더 높은 해상도)을 가능하게 한다.[5]
핵심 아이디어는 여러 재료 텍스처와 그 밉맵 체인을 함께 압축하고, 각 재료에 최적화된 작은 인공 신경망을 사용하여 압축을 해제하는 것이다.[6]
같이 보기
[편집]각주
[편집]- ↑ Andrew Beers; Maneesh Agrawala; Navin Chaddha (1996), “Rendering from Compressed Textures”, 《Computer Graphics, Proc. SIGGRAPH》: 373–378
- ↑ “crunch open source texture compression library”. 《GitHub》. 2016년 9월 13일에 확인함.
- ↑ Strom, Jacob; Wennersten, Per (2011년 8월 5일). 《Lossless compression of already compressed textures》. HPG '11: Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics. 177–182쪽. doi:10.1145/2018323.2018351.
- ↑ Krajcevski, Pavel; Pratapa, Srihari; Manocha, Dinesh (2016년 11월 11일). 《GST: GPU-decodable supercompressed textures》. 《ACM Transactions on Graphics》 35. 1–10쪽. doi:10.1145/2980179.2982439.
- ↑ “Nvidia Uses Neural Network for Innovative Texture Compression Method”. 2023년 5월 6일.
- ↑ “Random-Access Neural Compression of Material Textures | Research”.
외부 링크
[편집]- http://gamma.cs.unc.edu/GST/ GST: GPU-decodable Supercompressed Textures