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

불투명 텍스처와 1 비트 알파 텍스처


텍스처 포맷 DXT1 는, 불투명 또는 단일의 투과색이 있는 텍스처용이다.

각 불투명 또는 1 비트 알파 블록을 위해서(때문에), 2 개의 16 비트값 (RGB 5:6:5 포맷)과 1 픽셀 2 비트의 4 × 4 비트 맵이 저장 된다. 이것은, 16 텍셀에 대해서 합계 64 비트, 즉 4 비트/텍셀이 된다. 블록 비트 맵에는, 4 색간을 선택하는 텍셀 마다 2 비트가 있다. 4 색중 2 색은, encode 된 데이터에 저장 된다. 다른 2 색은, 선형 보간으로 저장 되는 색으로부터 파생한다. 다음 그림은 이 레이아웃을 나타내고 있다.

비트 맵 레이아웃

1 비트 알파 포맷은, 블록에 저장 된 16 비트색값을 비교하는 것으로써, 불투명 포맷과 구별된다. 이것들은, 부호 없음의 정수로서 처리된다. 최초의 색이 다음의 색보다 큰 경우는, 불투명 텍셀만이 정의되고 있는 것을 의미한다. 즉, 텍셀을 나타내는데 4 색이 사용된다. 4 색의 encode에는 2 개의 파생한 색이 있어, 전 4 색은 RGB 색공간(color space)에 균등하게 분포한다. 이 포맷은, RGB 5:6:5 포맷에 유사하고 있다. 다른 점에서는, 1 비트 알파 투명도용으로 3 개의 색은 사용되어 4 번째의 색은 투과형 텍셀을 나타내기 위해서(때문에) 확보된다.

3 개의 색의 encode에는 1 개의 파생한 색이 있어, 4 번째의 2 비트 코드는 투과형 데쿠세루 (알파 정보)를 들어갈 수 있기 위해서(때문에) 확보된다. 이 포맷은, 알파 마스크를 encode 하기 위해서 마지막 비트를 사용하는 RGBA 5:5:5:1 에 유사하고 있다.

다음 샘플 코드는, 3 색의 encode를 선택하든가, 혹은 4 색의 encode를 선택할까를 결정하기 위한 알고리즘을 나타낸다.

if (color_0 > color_1) 
{
    // Four-color block:derive the other two colors.     
    // 00 = color_0, 01 = color_1, 10 = color_2, 11 = color_3
    // These 2-bit codes correspond to the 2-bit fields 
    // stored in the 64-bit block.
    color_2 = (2 * color_0 + color_1 + 1) / 3;
    color_3 = (color_0 + 2 * color_1 + 1) / 3;
}    
else
{ 
    // Three-color block:derive the other color.
    // 00 = color_0,  01 = color_1,  10 = color_2,  
    // 11 = transparent.
    // These 2-bit codes correspond to the 2-bit fields 
    // stored in the 64-bit block.  
     color_2 = (color_0 + color_1) / 2;    
     color_3 = transparent;    

}

투과형 픽셀의 RGBA 구성 요소는, 혼합전에 제로로 설정해 두는 것을 권한다.

8 바이트 블록용의 메모리층을 다음 표에 나타낸다. 최초의 인덱스가 y 축, 2 번째의 인덱스가 x 축으로 대응 하면 생각한다. 예를 들어, 텍셀 [1][2] 는 (x, y) = (2,1)로 텍스처 맵 픽셀을 참조한다.

다음의 표는, 8 바이트 (64 비트) 블록용의 메모리 레이아웃을 나타내고 있다.

워드 어드레스16 비트 워드
0Color_0
1Color_1
2Bitmap Word_0
3Bitmap Word_1

color_0 와 color_1 (2 극값에서의 색)의 배치를 다음에 나타낸다.

비트컬러
4:0 (LSB*)청색 성분
10:5녹색 성분
15:11적색 성분

*최하정도 비트 (LSB)

bitmap word_0 의 배치

비트텍셀
1:0 (LSB)텍셀 [0][0]
3:2텍셀 [0][1]
5:4텍셀 [0][2]
7:6텍셀 [0][3]
9:8텍셀 [1][0]
11:10텍셀 [1][1]
13:12텍셀 [1][2]
15:14 (MSB*)텍셀 [1][3]

*최상정도 비트 (MSB)

bitmap word_1 의 배치

비트텍셀
1:0 (LSB)텍셀 [2][0]
3:2텍셀 [2][1]
5:4텍셀 [2][2]
7:6텍셀 [2][3]
9:8텍셀 [3][0]
11:10텍셀 [3][1]
13:12텍셀 [3][2]
15:14 (MSB)텍셀 [3][3]

불투명색encode의 예

불투명 encode의 예로서 적과 흙이 극값이라고 가정한다. 빨강은 color_0, 흑은 color_1 로 한다. 4 개의 보간색을 사용해, 균일하게 변화하는 그라데이션을 형성한다. 4 × 4 비트 맵의 값을 결정하려면 , 다음에 나타내는 계산식을 사용한다.

00 ?  color_0
01 ?  color_1
10 ?  2/3 color_0 + 1/3 color_1
11 ?  1/3 color_0 + 2/3 color_1

비트 맵은, 다음과 같이 된다.

확장된 비트 맵 레이아웃

이 비트 맵은 다음과 같은 일련의 색이 된다.

불투명한 encode 된 그라데이션

1 비트 알파 encode의 예

부호 없음 16 비트 정수 (color_0)가 부호 없음 16 비트 정수 (color_1)보다 작은 경우, 이 포맷이 선택된다. 이 포맷은, 푸른 하늘을 배경으로 한 나뭇잎 등에 사용할 수 있다. 몇개의 텍셀은, 3 색의 초록의 그림자가 잎에 대해서 사용되는 동안에 투과형으로서 기록된다. 이것들 2 색은 극값에 적합해, 3 번째의 색은 보간 한 색이 된다.

그러한 화면의 예를 다음에 나타낸다.

1 비트 알파의 예

위의 그림에 하얗게 나타나는 화면에서는, 텍셀은 투과형으로서 encode 되는 것에 주의 해야 한다. 또, 투과형 텍셀의 RGBA 구성 요소는, 혼합전에 제로로 설정하도록(듯이) 주의 해야 한다.

색과 투과성에 대한 비트 맵 encode는, 다음의 계산식을 사용해 결정된다.

00 ?  color_0
01 ?  color_1
10 ?  1/2 color_0 + 1/2 color_1
11   ?    Transparent

비트 맵은, 다음과 같이 된다.

확장된 비트 맵 레이아웃



© 2002 Microsoft Corporation. All rights reserved.
↑TOP