지구상에서 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.