3Dc
3Dc3Dc(FourCC : ATI2)는 DXN, BC5 또는 블록 압축 5라고도 하며 ATI가 처음 발명하여 구현한 일반 맵에 대한 손실 데이터 압축 알고리즘이다.이전의 DXT5 알고리즘을 기반으로 구축되어 개방형 표준이 되었다. 현재 3Dc는 ATI와 엔비디아에 의해 구현되고 있다.
대상응용
타겟 어플리케이션인 노멀 맵핑은 직선 그리드에서 텍스처 맵과 유사한 표면 규범을 읽어 기하학적 표면의 조명을 시뮬레이션하는 범프 맵핑의 확장판이며, 단순한 모델에게 복잡성 증가의 인상을 준다.그러나 이 추가 채널은 그래픽 시스템의 메모리 대역폭에 대한 로드를 증가시킨다.소비자 3D 하드웨어에 구현된 기존의 손실 압축 알고리즘은 과도한 가시적 사실 없이 일반 맵을 재현하는 데 필요한 정밀도가 부족하여 3Dc의 개발을 정당화했다.
알고리즘.
표면 표준은 단위 길이의 3차원 벡터다.길이 제약으로 인해 정상적인 두 요소만 저장하면 된다.따라서 입력은 2차원 값의 배열이다.
압축은 4×4 블록으로 실시한다.각 블록에서 각 값의 두 구성요소는 별도로 압축된다.각 블럭에 대해 두 성분 각각은 선택할 수 있는 8개의 값 팔레트를 가지고 있다.팔레트는 선의 시작과 끝을 나타내는 두 개의 값과 시작과 끝 값의 선형 결합으로 생성되는 나머지 여섯 개의 값에서 생성된다.
압축은 기본적으로 압축할 16픽셀 중 가장 낮은 값과 가장 높은 값을 찾아 각각 8비트 수량으로 저장함으로써 달성된다.그런 다음 4×4 블록 내의 개별 요소들은 각각 3비트씩 저장되며, 가장 낮은 값에서 가장 높은 값으로 8단계 선형 척도로 위치를 나타낸다.각 픽셀의 3비트 값(팔레트 인덱스)은 원래 값에서 최소 거리로 팔레트 항목을 선택하여 선택한다.
두 소스 구성요소를 모두 포함하면 4x4 블록당 128비트가 된다.유사한 8비트 정밀도를 가진 압축되지 않은 체계에서 소스 데이터는 256비트를 점유하며 동일한 영역에 대한 32개의 8비트 값이다.따라서 알고리즘은 2:1 압축비를 생성한다.
8비트가 아닌 입력 데이터에 16비트 정밀도를 사용하는 것이 일반적이어서 압축비는 '최대 4:1'로 표기되기도 한다.이것은 말 그대로 입력의 1/4 크기인 압축 출력을 생성하지만, 그것은 비교할 수 없는 정밀도를 가지고 있다.
3Dc+
3Dc+ (FourCC: ATI1) (also known as BC4 or Block Compression 4) can compress textures, i.e. light maps, shadow maps, HDR textures and material properties. 3Dc+ provides 2:1 compression ratio with single component (DXT5 alpha) 8-bit integer textures and 4:1 compression ratio with normal maps and textures consisting of two 8-bit integer components