UDN
Search public documentation:

TextureComparisonKR
English Translation
日本語訳

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

DXTC: DXTC 예제 및 기술 비교

문서 요약: 비압축 및 팔레트화함을 사용한 DirectX 텍스처 압축 유형간의 비교. 모든 스킬과 경험 레벨에 다 좋음.

문서 변경 내역: 마지막 업데이트: Tom Lin(DemiurgeStudios?). 문서 요약 관련. 원저자: Lucas Alonso

개요

목적

본 문서의 목적은 콘텐츠 제작들에게 언제 DXTC 형식을 사용하여 텍스처를 압축하는 것이 적절한지, 어떤 경우 압축하지 않는 상태로 두거나 Bright 를 사용하여 팔레트화하는 것이 좋은지 설명하기 위함입니다.

DXTC 기본 지식

본 문서서에서 관련하는 DXTC 알고리즘 부분은 색상 정보에 압축하는 부분입니다. 그 이유는 모든 DXTC 의 버전 (DXT1-5) 에서 이것이 동일한 방식으로 실행되기 때문입니다. 색상 정보 표준 팔레트화된 비트맵과 유사한 방식으로 저장됩니다. 전체 이미지를 256 컬러 팔레트를 사용하여 저장하는 대신에 DXTC 는 각 4X4 픽셀 블록마다 작은 팔레트를 사용하여 저장합니다. 이 미니 팔레트 각각은 4 색까지 표현할 수 있습니다. 그러나 그 중 2 색은 다른 2 가지 색으로부터 보간되므로 실제로는 파일에 저장되지 않습니다. 따라서 일반적으로 65k 비트맵을 단 32k 로 압축할 수 있습니다. 따라서 비디오 메모리에 2 배의 텍스처 양을 저장하거나 같은 양의 텍스처를 2 배의 해상도로 저장할 수 있습니다.

colourtable.gif

NVIDIA DXT1 문제

NVidia 하드웨어의 DXT1 압축해제 장치의 하드웨어 구현에는 약간의 품질 문제가 있습니다. 이것은 텍스처가 내부적으로 32 비트 대신 16 비트 컬러로 처리되기 때문입니다. 따라서 특히 어두운 그림자의 질이 현저하게 떨어지게 됩니다. 모든 다른 DXTC 형식 (DXT2-5) 은 이에 영향을 받지 않습니다. 하지만 문제는 알파 정보를 저장하는 것입니다. 압축하려는 텍스처가 알파 채널을 사용하지 않는 경우에는 이로 인한 영향은 별로 없습니다. 그러나 알파 정보를 사용하지 않고 유일한 형식은 품질 문제를 갖고 있기 때문에 특별한 경우에만 이 알파 정보를 사용하지 않는 형식을 사용합니다.

예제

텍스처 1

소스 소스 디테일
Bradley1_SOURCE.png Bradley1_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Bradley1_BRIGHT.png Bradley1_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Bradley1_DXTC.png Bradley1_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Bradley1_DXT1.png Bradley1_DXT1_ZOOM.png

이 예제에서의 3 가지 텍스처의 차이가 일반 스케일에서는 분별하기 어렵지만 줌인하여 DXTC 압축으로 인한 아티팩트를 볼 수 있습니다(일정하게 고른 색상의 작은 블록). 이 경우 확대해도 아티팩트를 거의 볼 수 없습니다. 따라서 이 유형의 텍스처는 DXTC 사용에 이상적입니다. 게임내 NVidia DXT1 은 아주 희미해 보입니다. 그러므로 화질 선명도의 손실이 상관없지 않는 경우가 아니라면 DXT3 를 사용하는 것을 고려해 보십시오.

그레디언트 (Gradient)

소스 소스 디테일
Gradient_SOURCE.png Gradient_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Gradient_BRIGHT.png Gradient_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Gradient_DXTC.png Gradient_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Gradient_DXT1.png Gradient_DXT1_ZOOM.png

그러나 이 예제에서는 Bright 예제는 완전한 품질을 유지하고 있는 반면에, DXTC 텍스처에서 밴드가 나오고 있는 것이 쉽게 보실 수 있을 것입니다. 위에서 언급한 바와 같이, 이것은 DXTC 알고리즘이 픽셀의 4X4 블록당 4 가지 색상 밖에 사용하지 않는 때문입니다. 즉, 블록내에서 색상이 충분히 있지 않을 경우 이 같은 결과를 얻습니다. 분명히 이런 경우에는 DXT1 을 사용하지 말아야 하겠습니다.

텍스처 2

소스 소스 디테일
MoreRocks_SOURCE.png MoreRocks_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
MoreRocks_BRIGHT.png MoreRocks_BRIGHT_ZOOM.png
DXTC DXTC 디테일
MoreRocks_DXTC.png MoreRocks_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
MoreRocks_DXT1.png MoreRocks_DXT1_ZOOM.png

예제 1 에서와 같이 이것은 일반적으로 DXTC 를 사용할 텍스처를 유형입니다. DXTC 압축된 텍스처의 품질이 저하되는 것은 거의 신경쓰이지 않습니다.

텍스처 3

소스 소스 디테일
Wall_SOURCE.png Wall_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Wall_BRIGHT.png Wall_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Wall_DXTC.png Wall_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Wall_DXT1.png Wall_DXT1_ZOOM.png

표준 텍스처의 경우입니다. DXTC 의 아티팩트가 확대된 텍스처에서 쉽게 보일 수 있지만 소스 텍스처와 DXTC 압축 버전의 차이는 거의 알 수 없습니다. 이 경우에는 Bright 의 작업 결과도 상당히 좋습니다.

무지개 그레디언트 (Gradient)

소스 소스 디테일
Rainbow_SOURCE.png Rainbow_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Rainbow_BRIGHT.png Rainbow_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Rainbow_DXTC.png Rainbow_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Rainbow_DXT1.png Rainbow_DXT1_ZOOM.png

이 예제에서는 Bright 는 이 텍스처에 사용된 42,000 색을 단지 256 색으로 맞추는데 어려움을 겪고 있는 것을 볼 수 있습니다. Bright 의 시도는 인상적이지만, 이 경우 DXTC 압축 또는 압축되지 않은 32 비트 텍스처가 더 현명한 선택입니다. 따라서 DXT1 은 피해야 합니다.

텍스트/HUD 아트

소스 소스 디테일
Text_SOURCE.png Text_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Text_BRIGHT.png Text_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Text_DXTC.png Text_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Text_DXT1.png Text_DXT1_ZOOM.png

복합 텍스트/hud 이미지들 및 관련된 텍스처의 경우 이 예제에서도 볼 수 있듯이 DXTC 는 그다지 좋아 보이지 않습니다. 텍스트 주위의 블록 아티팩트는 매우 보기 싫은 효과를 내고 있습니다. Bright 또는 비압축 텍스처가 더 나은 옵션입니다.

DXTC 악몽

소스 소스 디테일
Haha_SOURCE.png Haha_SOURCE_ZOOM.png
BRIGHT BRIGHT 디테일
Haha_BRIGHT.png Haha_BRIGHT_ZOOM.png
DXTC DXTC 디테일
Haha_DXTC.png Haha_DXTC_ZOOM.png
NVIDIA DXT1 NVIDIA DXT1 디테일
Haha_DXT1.png Haha_DXT1_ZOOM.png

이것은 정말 불공평합니다:-) 각 4X4 블록에 16 개 고유의 색상을 사용하면 DXTC 가 이것을 허용된 방식으로 압축할 수 없을 것입니다. 이 경우 Bright 에서는 전체 텍스처에 16 개 고유 색밖에 없기 때문에 아무 문제가 없습니다.

결론

  • 보장된 품질이 필요한 경우 DXT1 의 사용을 피하십시오. Nvidia 하드웨어에서 문제가 없는 다른 종류의 DXTC 를 선택하고 최종 결정하기 전에 Nvidia 하드웨어에서 DXT1 텍스처를 검사하십시오.
  • 예를 들어 텍스트 및 heightmap 에서와 같이 품질이 가장 중요한 특별 용도 텍스처의 경우 DXTC 를 사용하지 마십시오.
  • 품질 저하가 거의 눈에 띄지 않는 일반 텍스처를 압축하는 경우 DXTC 를 사용하지 마십시오 (DXT3/5).
  • 업로드하기 전에 8 비트 팔레트화된 텍스처는 32 비트로 변환되기 때문에 디스크에서의 적은 저장 크기를 제외하고는 아무런 이점도 없습니다. 비압축 32 비트와 동일해 보일 때만 사용하십시오.