S3 텍스처 압축

S3 Texture Compression

S3 텍스처 압축(S3TC) (DXTn, DXTC 또는 BCn이라고도 함)은 S3 Graphics, Ltd.[1][2]의 Iourcha et al.에서 새비지 3D 컴퓨터 그래픽 가속기에 사용하기 위해 원래 개발한 관련 손실 텍스처 압축 알고리즘의 그룹이다.압축 방법은 1970년대 후반에 출판된 블록 잘라내기 코딩을 각색한 이전에 출판된 컬러 압축과 현저하게 유사하다.[3]일부 이미지 압축 알고리즘(예: JPEG)과 달리 S3TC의 고정 속도 데이터 압축은 단일 메모리 액세스(cf)와 결합된다.Color Cell Compression 및 일부 VQ 기반 체계)는 하드웨어 가속 3D 컴퓨터 그래픽텍스처를 압축하는 데 사용하기에 적합했다.이후 마이크로소프트DirectX 6.0과 OpenGL 1.3(GL_EXT_texture_compression_s3tc 확장을 통해)에 포함되면서 하드웨어 및 소프트웨어 제조업체들 사이에 기술이 광범위하게 채택되었다.S3그래픽은 더 이상 그래픽 액셀러레이터 시장에서 경쟁사가 아니지만, 게임 콘솔이나 그래픽 카드 등 2017년 10월까지 S3TC 기술 사용에 대한 라이센스 수수료가 부과·징수되고 있다.S3TC의 광범위한 사용으로 인해 OpenGL 드라이버가 이를 지원해야 하는 사실상의 요구사항이 발생하였지만, S3TC의 특허 등록 상태는 오픈 소스 구현에 큰 걸림돌이 되는 반면,[4] 특허 받은 부분은 피하려고 하는 구현 접근방식은 존재했다.[5]

특허

S3 텍스처 압축에 대한 복수의 USPTO 특허 중 일부(예: US 5956431 A)는 2017년 10월 2일에 만료되었다.[6]그러나 적어도 하나의 연속 특허인 US 6,775,417은 165일 연장을 했다.이 지속 특허는 2018년 3월 16일에 만료되었다.

코덱

S3TC 알고리즘의 5가지 변형(이름 DXT1 ~ DXT5, 각 형식에 마이크로소프트가 할당한 FourCC 코드를 참조)이 각각 특정 유형의 이미지 데이터를 위해 설계되었다.모두 4×4 블록의 픽셀을 64비트 또는 128비트 양으로 변환하여 압축비가 24비트 RGB 입력 데이터로 6:1 또는 32비트 RGBA 입력 데이터로 4:1이 된다.S3TC는 손실 압축 알고리즘으로, 영상 화질 저하를 초래하며, 동일한 메모리 요구 사항을 유지하면서 텍스처 분해능을 높일 수 있는 능력에 의해 최소화되는 효과다.손으로 그린 만화 같은 이미지는 잘 압축되지 않으며, 보통 지도 데이터도 잘 압축되지 않는데, 이 두 가지 모두 보통 유물을 생성한다.ATI3Dc 압축 알고리즘은 S3를 극복하도록 설계된 DXT5의 수정이다.일반 지도에 관한 TC의 단점.ID 소프트웨어는 압축하기 전에 빨간색 구성요소를 알파 채널로 이동한 다음 픽셀 셰이더에서 렌더링하는 동안 다시 이동하는 방식으로 Doom 3의 일반 지도 압축 문제를 해결했다.[7]

많은 현대의 이미지 압축 알고리즘과 마찬가지로 S3TC는 비록 특허권이 여전히 압축 알고리즘을 다루고 있지만, 구현자들이 특정한 필요에 맞게 압축 알고리즘을 설계할 수 있도록 이미지를 압축 풀기 위해 사용하는 방법만을 명시한다.nVidia GeForce 256 ~ GeForce 4 카드도 16비트 보간법을 사용하여 DXT1 텍스처를 렌더링했으며, 컬러 그라데이션으로 텍스처를 풀 때 밴딩이 발생하였다.다시 말하지만, 이것은 코덱 자체의 기초와는 관련이 없는 텍스처 압축의 불리한 인상을 만들었다.

DXT1

DXT1(Block Compression 1 또는 BC1)은 S3TC의 가장 작은 변화로, 출력 64비트에 16개의 입력 픽셀을 저장하며, 두 개의 16비트 RGB 5:6:5 색 값 1 그리고 4x4 2비트 조회 테이블로 구성되어 있다.

만약 c0>요리 1{\displaystyle c_{0}>, c_{1}}(216비트 부호 없는 숫자로 해석함으로써 이 색깔들을 비교하), 그리고 두가지의 다른 색깔들 계산되고 그러한 그들이 각 구성 요소, c2=23c0+13c1{\displaystyle c_{2}={2\over 3}c_{0}+{1\over 3}c_{1}}와 c3=13c0+. 23 1 모드는 원래 Apple Video 코덱의 모드 0xC0과 비슷하게 작동한다.[8]

그렇지 않으면 1}, 2= 0+ c }, 미리 구성된 알파 형식에 해당하는 투명한 검은색이다.이 색상은 불투명한 텍셀의 색과 인접한 검은색 투명 텍셀 사이의 보간으로 인해 선형 텍스처 필터링과 알파 테스트를 사용할 때 투명 영역을 둘러싼 검은색 테두리를 유발하기도 한다.

그런 다음 조회 테이블을 참조하여 각 픽셀의 색상 값을 결정하며, 값은 에 해당하는 0이고, 값은 에 해당하는 3이다

DXT2 및 DXT3

DXT2 and DXT3 (collectively also known as Block Compression 2 or BC2) converts 16 input pixels (corresponding to a 4x4 pixel block) into 128 bits of output, consisting of 64 bits of alpha channel data (4 bits for each pixel) followed by 64 bits of color data, encoded the same way as DXT1 (with the exception that the 4-color version of the DXT1 algoc }의 상대적 값에 따라 사용할 버전을 결정하는 대신 rithm을 항상 사용한다.

DXT2에서 색상 데이터는 알파에 의해 사전 설정되고, DXT3에서는 알파에 의해 사전 설정되지 않은 것으로 해석된다.일반적으로 DXT2/3은 반투명 영역과 불투명한 영역 사이의 날카로운 알파 전환이 있는 이미지에 잘 적합하다.

DXT4 및 DXT5

DXT4와 DXT5(Clock Compression 3 또는 BC3)는 16개의 입력 픽셀을 128비트의 출력으로 변환하며, 64비트의 알파 채널 데이터(8비트 알파 값 2개와 4x4 3비트 조회 테이블)로 구성되며, 그 다음에 64비트의 컬러 데이터(DXT1과 동일한 방식으로 인코딩됨)를 변환한다.

만약α 0>α 1{\displaystyle \alpha_{0}>, \alpha _{1}}, 그 후엔 6 다른 알파 값 계산되고 있는 것처럼 α 2=6α 0+1α 1-7{\displaystyle \alpha_{2}={{6\alpha_{0}+1\alpha _{1}}\over 7}},α 3=5α 0+2α 1-7{\displaystyle \alpha_{3}={{5\alpha_{0}+2\alpha _{1}}\ov.어 7}}, , , , and 7= + 1 6\pair _}}}{1}}}}{1}+ 7

Otherwise, if , four other alpha values are calculated such that , , , and with and .

그런 다음 조회 표를 참조하여 각 픽셀에 대한 알파 값을 결정하며, 값은 0 에 해당하는 0이고, 7 에 해당하는 7 DXT4의 색상 데이터는 알파에 의해 미리 계산되지만 DXT5는 그렇지 않다.DXT4/5는 보간 알파 체계를 사용하기 때문에 일반적으로 DXT2/3보다 알파(투명성) 그라데이션에 대해 우수한 결과를 산출한다.

추가 변형

BC4와 BC5

BC4와 BC5(Block Compression 4, 5)는 Direct3D 10에 추가된다.그들은 DXT4/5 (BC3)에 있는 알파 채널 인코딩을 재사용한다.[9]

  • BC4는 16개의 입력 단일 채널(예: 그리스케일) 픽셀을 BC3 알파와 동일한 방식으로 인코딩된 64비트의 출력에 저장한다.확장된 팔레트는 더 높은 품질을 제공한다.
  • BC5는 16개의 입력 이중 채널(예: 접선 공간 일반 지도) 픽셀을 128비트의 출력에 저장하며, 각각 BC3 알파와 동일한 방식으로 인코딩된 두 개의 반으로 구성된다.

BC6H와 BC7

BC6H(때로는 BC6)와 BC7(Block Compression 6H 및 7)은 Direct3D 11에 추가된다.[9]

  • BC6H는 16개 입력 RGB HDR(플로트16) 픽셀을 128비트 출력 비트로 인코딩한다.
  • BC7은 16개의 입력 RGB8/RGBA8 픽셀을 128비트의 출력으로 암호화한다.

BC6H와 BC7은 인코딩 모드를 선택할 수 있는 훨씬 복잡한 알고리즘을 가지고 있다.결과적으로 품질이 훨씬 좋아졌다.[9]

S3TC 형식 비교

포시씨 DX 10/11 이름 설명 알파는 프리ultiplyoughto premultiplised? 압축비 텍스처 유형
DXT1 BC1 1비트 알파/불투명 6:1(24비트 소스 이미지용) 단순 비알파
DXT2 BC2 명시적 알파 4:1 샤프 알파
DXT3 BC2 명시적 알파 아니요. 4:1 샤프 알파
DXT4 BC3 보간 알파 4:1 그라데이션 알파
DXT5 BC3 보간 알파 아니요. 4:1 그라데이션 알파
해당 없음 BC4 보간 그리스케일 해당 없음 2:1 그라데이션
해당 없음 BC5 보간 2채널 해당 없음 2:1 그라데이션

참고 항목

참조

  1. ^ US 5956431 "유추된 픽셀 값이 있는 고정 속도 블록 기반 이미지 압축"
  2. ^ US 5956431, 이우르차, 콘스탄틴 I.; 나약, 크리슈나 S. & 홍, 저우, "추론된 픽셀 값을 갖는 고정금리 블록 기반 영상 압축에 대한 시스템과 방법" 1999년 9월 21일 발행되었다.
  3. ^ "1990 IEEE Color Cell Compression Paper". Ieeexplore.ieee.org. doi:10.1109/TENCON.1990.152671. S2CID 62015990. {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  4. ^ "S3TC situation on official DRI information page". Dri.freedesktop.org. Retrieved 2012-01-25.
  5. ^ S2TC: Phoronix대한 S3TC 특허 상황의 가능한 해결 방법
  6. ^ Yates, Tom (2017-02-15). "This is why I drink: a discussion of Fedora's legal state". LWN.net. Retrieved 2017-02-16. ... The patent on S3 texture compression expires on October 2, 2017, so Steam games might work better on Fedora after that date. ...
  7. ^ Duffy, Robert (July 27, 2004). "DOOM 3 Video Requirements". Gamershell.com. Archived from the original on January 3, 2008. Retrieved 2012-01-25.
  8. ^ 토그니, 로베르토 등"Apple RPZA".멀티미디어위키.
  9. ^ a b c Reed, Nathan. "Understanding BCn Texture Compression Formats". Nathan Reed’s coding blog.

외부 링크

(Wayback Machine 복사본)