UDN
Search public documentation:
NormalMapFormatsKR
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
日本語訳
中国翻译
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
노멀맵 포맷
문서 변경내역: 잭 포터 작성. 홍성진 번역.
개요
노멀 포맷
압축 세팅 | 텍스처 포맷 | 채널 | 픽셀당 비트 | 1024x1024 에 대한 크기 | 코멘트 |
TC_Normalmap | DXT1 | 3(*) | 4 | 512 KB | * DXT1 의 알파 채널에 1 비트 알파(마스크)를 저장할 수 있습니다. |
TC_NormalmapAlpha | DXT5 | 4 | 8 | 1024 KB | |
TC_NormalmapUncompressed | V8U8 | 2 | 16 | 2048 KB | DXT1 에 비해 메모리 사용량이 네 배라, 엔진은 DXT1 풋프린트에 맞추기 위해 자동으로 해상도를 1 밉맵 낮춥니다. |
TC_NormalmapBC5 | BC5 (3Dc / DXN) | 2 | 8 | 1024 KB | DirectX 10 과 Xbox 360 에서, ATI 카드는 DirectX 9 에서도 지원됩니다. |
TC_Normalmap / DXT1
TC_Normalmap (DXT1) 는 다른 어떤 포맷보다 메모리 사용량이 적으나, DXT 블록 압축은 노멀 데이터를 저장하기에 그리 적합하지 않습니다. 결과는 보통 매우 각지게 됩니다.TC_NormalmapAlpha / DXT5
TC_NormalmapAlpha (DXT5) 의 시각적 결과는 DXT1 과 같으나, 마스크로 사용하기 위해 압축된 알파 채널 데이터가 픽셀당 4 비트 있기도 합니다. 퍼포먼스를 보자면 다른 텍스처를 샘플링하는 것 보다는 DXT5 텍스처에 필요한 마스크를 넣는 편이 낫습니다. 그러나 마스크를 디퓨즈 텍스처에 넣는다면, 노멀에 또다른 포맷을 사용할 수도 있을 것입니다.TC_NormalmapUncompressed / V8U8
미압축 포맷은 노멀의 3 채널 중 둘을 각각 8 비트(, 즉 픽셀당 16 비트)씩으로 저장합니다. 품질은 가장 좋습니다만 두 채널만 저장되기 때문에 Z 는 픽셀 셰이더에서 계산해 줘야 합니다. (머티리얼 에디터에서 이 계산을 자동으로 해 주는데, 위 스크린샷에서 인스트럭션 수가 늘어난 것을 볼 수 있습니다.) 메모리 사용량이 DXT1 의 4배이기 때문에, X Y 해상도를 절반으로 (즉 1 밉레벨) 줄이면 메모리 사용량은 같아집니다. 저희는 반해상도 미압축 노멀이 DXT1 압축 노멀보다 낫다고 믿기에, 텍스처 에디터는 TC_NormalmapUncompressed 포맷을 선택하면 자동으로 해상도를 낮춥니다. 다른 포맷으로 바꾸면 텍스처의 원래 해상도로 돌아갑니다. (이 기능에 대한 코드는 UTexture2D::Compress() 에 있으니, 이 기능을 지우거나 끄시려면 참고하시기 바랍니다.)TC_NormalmapBC5 / BC5 (3Dc / DXN)
BC5, 또는 3Dc 나 DXN 으로 알려진 포맷은 모든 플랫폼에 지원되지는 않습니다. DirectX 10, Xbox360 과 ATI 그래픽 카드의 DirectX 9 에서만 지원됩니다. 노멀의 X Y 벡터에는 DXT5 의 알파 채널과 비슷한 픽셀별 4 비트 블록 압축 스키마를 사용합니다. 즉 각 채널이 서로 독립적이라는 뜻입니다. DXT5 와 같은 메모리 풋프린트로 훨씬 각이 덜지는 결과를 냅니다. 미압축 포맷처럼 Z 는 픽셀 셰이더에서 구합니다.머티리얼 에디터 사용 참고
TextureSample 노드
TextureSample 노드 안에는 어떤 포맷의 노멀을 사용해도 제대로 돌아갑니다. 그러나 노멀 포맷 검사는 머티리얼 셰이더가 리컴파일될 때만 합니다. 그래서 셰이더를 리컴파일하지 않고 노멀 텍스처의 CompressionSettings(압축 세팅)을 바꾸면, 생성되는 픽셀 셰이더 코드가 일치하지 않을 수 있습니다. UnpackMin/Max 의 작동방식과도 비슷한 점이 있습니다.TextureSampleParameter2D 노드
TextureSampleParameter2D 노드의 디폴트 값 안에서는 어떤 포맷의 노멀을 사용해도 제대로 돌아갑니다. 그러나 디폴트 값을 덮어쓰는 머티리얼 인스턴스는 파라미터의 디폴트 Texture 프로퍼티로 CompressionSettings(압축 세팅)을 똑같이 해야 합니다. TextureSample 과 마찬가지로, 셰이더 리컴파일 없이 디폴트 텍스처의 CompressionSettings(압축 세팅)을 바꿀 때 똑같은 경고가 적용됩니다.TextureSampleParameterNormal 노드
TextureSampleParameterNormal 노드의 디폴트 값 안에서는 어떤 포맷의 노멀을 사용해도 제대로 돌아가며, 또 머티리얼 인스턴스 에디터에서 만든 불변 인스턴스도 노멀 파라미터를 아무 포맷 텍스처로 덮어쓸 수 있습니다. 포맷이 다른 픽셀 셰이더를 필요로 한다면, 그 인스턴스의 새 버전이 리컴파일됩니다. 그러나 TextureSample 과 마찬가지로, 셰이더 리컴파일 없이 디폴트 텍스처의 CompressionSettings(압축 세팅)을 바꿀 때 똑같은 경고가 적용됩니다.추천사항
- TC_Normalmap 대신 저해상도 TC_NormalmapUncompressed 를 쓰는 것이 콘텐츠가 나아 보인다면, 그리 하십시오. 메모리 사용량은 같습니다.
- Xbox 360 게임을 제작중이고, 저해상도 TC_NormalmapUncompressed 에 비해 TC_NormalmapBC5 가 메모리 두 배 가치는 한다면 사용해도 좋습니다.
- 노멀맵을 파라미터로 쓸 일이 있을 때마다 TextureSampleParameterNormal 머티리얼 노드를 사용해 보십시오.
- 특정 머티리얼 인스턴스 부모와 함께 사용하는 노멀맵 포맷에 일관성을 유지해야 생성되는 셰이더 수를 줄일 수 있습니다.