지구상에서 2BPP에서 알맞은 색을 어떻게 얻습니까?


11

PowerVR 텍스처를 살펴 보았고 픽셀 당 2 비트로 보이는 여러 텍스처로 실행되었습니다. 솔직히 이것은 내 마음을 혼란스럽게한다. 픽셀 당 pi 당 4 개의 상태 만있을 때 어떻게 절반 정도의 색상을 유지합니까? 나는 그러한 위업의 압축에 대해 이야기하는 모든 자료를 좋아할 것입니다. 감사!


JPG를 사용하면 1BPP 미만으로 알맞은 색상을 얻을 수 있습니다.
Ivan Kuckir

답변:


13

이 백서 에서 소개 된 PVRTC 2BPP 인코딩 은 이미지를 8x4 텍셀 블록으로 나누고 32 개의 텍셀 블록마다 2 개의 RGB 색상 만 저장되도록 각 블록을 압축합니다.

32 개의 텍셀 중 어느 것도 자체 색상을 저장하지 않습니다. 각 텍셀은 8x4 텍셀 블록의 두 RGB 색상을 혼합하는 방법에 대한 정보 만 저장합니다.

소스 이미지에 무지개가 32 색인 8x4 텍셀 블록이있는 경우 PVRTC 2BPP 압축은 품질을 유지하는 데 매우 좋지 않습니다. PVRTC 2BPP에서는 각 8x4 텍셀 블록에 혼합 할 RGB 색상이 2 개 밖에 없기 때문입니다.


매혹적인! 대단히 감사합니다. 슬프게도, 연결된 용지를 넣는 데 많은 문제가 있습니다. 아마 아마존의 EC2에서 호스팅됩니까? ;)
Toji

6

텍스처 압축은 픽셀을 압축하지 않습니다. 픽셀 블록을 압축합니다. 개별 픽셀이 참조되면 GPU는 픽셀을 나타내는 블록을 계산합니다. 그런 다음 전체 블록을 처리하여 해당 픽셀의 색상을 얻습니다.

RGB 텍스처에서 블록 크기가 4x4 픽셀이라고 가정합니다. 압축되지 않은 각 블록은 4x4x3 = 48텍스처 메모리에서 바이트를 소비 합니다.
압축 알고리즘은 각 채널 (RGB)의 평균을 계산하여 블록 (3 바이트)과 함께 저장합니다. 이제 픽셀이 원래 색상에 더 가깝도록 평균을 조정하기 위해 각 픽셀에 2 비트를 부여하십시오. 다른 4x4x2x3/8 = 12바이트입니다.
새로 개발 된이 압축기에서 사용하는 총 바이트 수는 블록 당 15 바이트이며 압축률은 31.25 %입니다.

내 신화 압축기는 7.5bpp를 사용합니다. 그것은 2 bpp pvrtc가 달성 할 수있는만큼 좋지는 않지만, 이제 2 bbp가 달성 될 수있는 방법에 대한 대략적인 아이디어가 있습니다.

업데이트 :
방금 pvrtc 에 대한 wikipedia 페이지를 보았습니다 . pvrtc가 전통적인 블록 기반 압축을 사용하지 않는 것 같습니다. 다음은 블록 기반 압축의 작동 방식과 pvrtc의 차이점을 설명하는 문서 입니다. 특히 참고 : 블록 기반 필터는 4bpp (알파 없음)를 사용하여 괜찮은 이미지를 생성 할 수있는 반면 nvrtc는 2bpp를 사용하여 수행 할 수 있습니다.


1

@ Toji, 종이가있는 사이트는 약간 기 질적이지만 오늘 아침에 나를 위해 일했습니다. 실패하면 ACM / SIGGRAPH에 액세스 할 수 있으면 여기에 호스팅 됩니다 . 이상하게도, 그것은 이었다 IMG / 파워 VR 개발자 웹 사이트 (무료 등록)에도하지만 난 오른쪽 부분을 찾을 수 없습니다. :-(

[업데이트] 여전히 IMG 사이트에 있습니다. [/ UPDATE]

@bmcnet : PVRTC는 텍스처를 ETC 또는 S3TC와 같은 블록으로 나누지 않습니다. FWIW, 블록 기반 텍스처를 실험했지만 충분한 데이터를 자체 포함 된 블록으로 압축하고 원하는 결과를 얻을 수있는 방법을 찾지 못했습니다. 대신 '전역'텍스처 압축 시스템에 가깝습니다. 2 개의 저해상도 이미지를 가지고있어 대상 해상도에 대해 쌍방향으로 업 스케일 한 다음이를 텍셀 단위로 혼합합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.