DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 압축 텍스처 리소스   [목차열람] [주소복사] [슬롯비우기]
압축 텍스처 소스
 
Microsoft DirectX 9.0

압축 텍스처 소스


텍스처 맵이란, 3D 의 형상 위에 드로잉(Drawing) 해 디테일을 더하는 디지털 화면이다. 텍스처 맵은, 래스터화의 실행중에 형상에 맵핑 된다. 이 프로세스는, 시스템 버스와 메모리의 양쪽 모두를 대량으로 사용하는 경우가 있다. 텍스처로 소비되는 메모리 용량을 줄이기 위해서(때문에), Microsoft® Direct3D® 에서는 텍스처 표면의 압축을 지원 하고 있다. 몇개의 Direct3D 장치는, 압축 텍스처 표면을 네이티브에 지원 한다. 이러한 장치에서는, 압축한 표면을 생성 해 데이터를 로드하면 그 표면을 다른 텍스처 표면와 같게 Direct3D 로 사용할 수 있다. 텍스처를 3D 개체에 맵 할 때는, Direct3D 가 압축의 복원을 실시한다.

스토리지의 효율과 텍스처 압축

텍스처 압축 포맷은 모두 2 의 거듭제곱이다. 이것은, 텍스처가 반드시 정방형이다고 하는 것은 아니고, x 와 y 가 함께 2 의 거듭제곱인 것을 의미하고 있다. 예를 들어, 원의 텍스처가 512 × 128 바이트이면, 다음의 밉맵 처리에서는 256 × 64 와 같이, 1 레벨 마다 2 의 거듭제곱 1 개분씩 작게 되어 간다. 한층 더 레벨을 내려 텍스처를 16 × 2 및 8 × 1 까지 필터링 하면, 압축 블록이 항상 4 × 4 의 텍셀 블록이기 위해서(때문에) 불용 비트가 생긴다. 블록의 미사용 부분은 패딩 된다. 최소 레벨에서는 불용 비트가 있지만, 전체적으로 얻을 수 있는 것은 여전히 중요하다. 이론적으로 최악의 경우란, 2K × 1 텍스처 (2 의 0 승)이다. 이 경우, 1 블록에 대해 1 픽셀행밖에 encode 되지 않고, 블록의 나머지의 부분은 미사용이 된다.

단일 텍스처내에서의 포맷의 편성

중요한 점은, 모든 단일의 텍스처에서는, 16 텍셀의 그룹 마다 64 비트 또는 128 비트로서 저장 되는 데이터를 지정하도록(듯이) 주의한다고 하는 점이다. 64 비트 블록 (즉, 포맷 DXT1)이 텍스처용으로 사용되는 경우, 몇개의 텍스처의 블록 마다 불투명과 1 비트 알파 포맷을 조합할 수가 있다. 즉, color_0 와 color_1 의 부호 없음 정수의 매그니튜드의 비교는, 16 텍셀의 각 블록 마다 실행된다.

128 비트 블록을 사용하는 경우, 텍스처 전체에 알파 채널을 명시적 (포맷 DXT2 또는 DXT3)으로, 또는 보간 한 모드 (포맷 DXT4 또는 DXT5)로 지정해야 한다. 색의 경우와 같이, 보간 한 모드 (포맷 DXT4 및 DXT5)를 선택하는 경우, 8 개의 보간 한 알파인가, 블록 단위로 사용할 수 있는 6 개의 보간 한 알파 모드의 어느쪽이든을 사용할 수 있는 것에 주의 해야 한다. 게다가 alpha_0 와 alpha_1 의 매그니튜드의 비교는, 블록 마다 행해진다.

Direct3D 는, 3D 모델의 텍스처 처리에 사용하는 표면 압축기노우를 갖추고 있다. 여기에서는, 압축 텍스처 표면의 데이터의 생성 및 조작에 대해 설명한다.

설명하는 내용은 다음과 같다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP