3. Vertex 압축
• Float(4Byte)를 단위로…
• FixedPoint
▫ Icon2008 애니메이션을 위한 최적화 기법
• UBYTE4
▫ UBYTE4: 0~255 범위의 unsigned char형 4개
▫ UBYTE4N: 0~1 범위의 unsigned char형 4개
4. Vertex압축(Cont.)
• Texcoord
▫ -1.0~1.0의 float값
▫ Float2->Short2(4)로 압축(FixedPoint)
• Normal/Tangent/Binormal
▫ -1.0~1.0의 float값
▫ Float3->UBYTE4N(4)로 압축
-1.0~1.0의 범위를 0.0~1.0의 범위로 scale필요.
• SkinWeights/SkinJoints
▫ Weight(0.0~1.0), Joints(0~x)
▫ Float4->UBYTE4N(4), Float4->UBYTE4(4)로 압축
범위 내에 값이 존재함으로, 따로 변환하지 않는다.
5. Vertex압축(Cont.)
• Tip
▫ 압축 결과 Quality를 눈으로 비교하여, 적절히 적용
한다.
▫ UBYTE4형을 지원하지 않는 그래픽카드의 지원을
고려해야 한다면, COLOR(DWORD)형을 이용하거
나 다른 방법을 사용해야 한다.
Color와 UByte4는 rgba의 순서를 다르게 저장.
실제 “콜오브듀티4 ”의 오류 중 하나의 예.
6. Texture
• .dds로 압축
• NormalMap을 압축할 경우, 압축 형식(DXT1, DXT5,
DXT5nm)에 따라 shader내부에서 Sample을 처리한다.
• http://developer.nvidia.com/object/real-time-normal-
map-dxt-compression.html
• 2048x2048 Texture
▫ TGA: 16.4M-> DXT5: 5.4M(mipmap포함)