UDN
Search public documentation:
TextureSupportAndSettingsKR
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
텍스처 지원과 설정
문서 변경내역: David Green 원저. 홍성진 번역.
개요
텍스처 해상도
현재의 DirectX 비디오 어댑터와 게임 콘솔들은 1x1 에서 2048x2048 까지, 그리고 최대 8192x8192 까지의 다양한 텍스처 해상도를 지원하고 있습니다. 특정 하드웨어 장치에 의해 지원되는 최고 텍스처 해상도는 제조업자나 모델에 따라 다릅니다. 가용 텍스처 메모리 풀의 양 또한 하드웨어에 따라 다릅니다.
언리얼 엔진 3 에는 월드 지오메트리나 유저 인터페이스같은 다양한 영역에 렌더링되는 텍스처 해상도 관리용 기능 및 설정이 다수 있습니다.
엔진 텍스처 해상도 한계
Src\D3D9Drv\Src\D3D9Device.cpp
Src\Engine\Inc\RHI.h
Src\Engine\Inc\UnTex.h
Src\Engine\Src\RHI.cpp
Src\Engine\Src\TextureCube.cpp
압축된 텍스처 메모리 요구량
압축 비율에 대한 해상도는 상수이므로, 이 표에 기재되지 않은 텍스처의 해상도에 대한 메모리 요구량을 계산하려면 해상 비율을 곱하기만 하면 됩니다. 예를 들면, 1024x512 텍스처의 메모리 요구량은 1024x1024 텍스처 메모리 요구량의 절반이 됩니다.
이 표의 데이터는 Box-Filter 밉 생성과 DirectX Texture Compression 을 사용하여 ATI 의 Compressonator 에 의해 작성된 텍스처로부터 컴파일 되었습니다.
해상도 | 1x1 부터의 총 Mip 의 수 | DXT1 | DXT5 |
16x16 | 5 밉 | 312 바이트 | 496 바이트 |
32x32 | 6 밉 | 824 바이트 | 1.48kb (1,520 바이트) |
64x64 | 7 밉 | 2.80kb (2,872 바이트) | 5.48kb (5,616 바이트) |
128x128 | 8 밉 | 10.8kb (11,064 바이트) | 21.4kb (22,000 바이트) |
256x256 | 9 밉 | 42.8kb (43,832 바이트) | 85.4kb (87,536 바이트) |
512x512 | 10 밉 | 170kb (174,904 바이트) | 341kb (349,680 바이트) |
1024x1024 | 11 밉 | 682kb (699,192 바이트) | 1.33MB (1,398,256 바이트) |
2048x2048 | 12 밉 | 2.66MB (2,796,344 바이트) | 5.33MB (5,592,560 바이트) |
4096x4096 | 13 밉 | 10.6MB (11,184,952 바이트) | 21.3MB (22,369,776 바이트) |
8192x8192 | 14 밉 | 42.6MB (44,739,384 바이트) | 85.3MB (89,478,640 바이트) |
노멀 맵 텍스처 포맷
엔진 Config TextureGroup 프로퍼티
환경설정 세팅 파일의 소스 세트는 UnrealEngine3\Engine\Config\BaseEngine.ini 파일의 [SystemSettings] 부분에 있습니다.
게임을 개발할 때, [My] Documents\My Games\[your_game]\Config\[your_game]Engine.ini 파일에는 Engine\Config\ 폴더에 있는 기본 프로퍼티들의 미러 세트가 들어 있으며, 이것은 보통 여러분이 자신의 게임에 대한 특정 설정의 변경에 사용하는 복사본이 됩니다. 언리얼 에디터 및 게임내에 각각 독립적인 TextureGroup 항목 세트가 있는 것을 주지하십시오. 이 두 세트는 각각 환경설정 파일의 [SystemSettingsEditor] 와 [SystemSettings] 부분에 들어 있습니다. BaseEngine.ini 파일의 TextureGroup 세팅 항목은 아래와 비슷합니다. 오래된 QA 버전에는 각 세팅에 대한 MinMagFilter 및 MipFilter 프로퍼티가 포함되어 있지 않을 수 있습니다. TEXTUREGROUP_World=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WorldNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WorldSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Character=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_CharacterNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_CharacterSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Weapon=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WeaponNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WeaponSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Vehicle=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_VehicleNormalMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_VehicleSpecular=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Cinematic=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Effects=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=linear,MipFilter=point)
TEXTUREGROUP_EffectsNotFiltered=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_Skybox=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_UI=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_LightAndShadowMap=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0,MinMagFilter=aniso,MipFilter=point)
TEXTUREGROUP_WorldNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_WorldSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_Character=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_CharacterNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_CharacterSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Weapon=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_WeaponNormalMap=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_WeaponSpecular=(MinLODSize=256,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Vehicle=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_VehicleNormalMap=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_VehicleSpecular=(MinLODSize=512,MaxLODSize=1024,LODBias=0)
TEXTUREGROUP_Cinematic=(MinLODSize=256,MaxLODSize=4096,LODBias=0)
TEXTUREGROUP_Effects=(MinLODSize=128,MaxLODSize=512,LODBias=1)
TEXTUREGROUP_Skybox=(MinLODSize=512,MaxLODSize=2048,LODBias=0)
TEXTUREGROUP_UI=(MinLODSize=512,MaxLODSize=1024,LODBias=1)
TEXTUREGROUP_LightAndShadowMap=(MinLODSize=512,MaxLODSize=4096,LODBias=0)
TEXTUREGROUP_RenderTarget=(MinLODSize=1,MaxLODSize=4096,LODBias=0)
PC AppCompat 버킷
TEXTUREGROUP 프로퍼티
MinLODSize | 렌더되는 밉의 최소 사이즈. 픽셀 단위로 지정되며 1 에서 8192 범위의 2 의 제곱수입니다. 이 값은 반드시 MaxLODSize 보다 작아야 합니다. |
MaxLODSize | 렌더되는 밉의 최대 사이즈. 픽셀 단위로 지정되며 1 에서 8192 범위의 2 의 제곱수입니다. 이 값은 반드시 MinLODSize 보다 커야 합니다. |
LODBias | 렌더용으로 업로드하기에 앞서 오프셋하기 위한 밉 레벨의 수를 결정하는 음수 또는 양수의 값. MinLODSize 와 MaxLODSize 사이로 제한됩니다. |
MinMagFilter | 텍스처 필터의 타입을 정의합니다. 아래의 도표 참고. |
MipFilter | 텍스처 필터의 타입을 정의합니다. 아래의 도표 참고. |
NumStreamedMips | 스트림 인/아웃에 허용된 밉 수입니다. 텍스처에 밉이 10 있고, NumStreamedMips 가 2라면, 가장 높은 두 개의 밉만이 스트림 인/아웃 허용됩니다. 그러므로 텍스처는 언제고 메모리에 8-10 밉을 갖고 있게 됩니다. NumStreamedMips 를 0으로 설정하면 스트림되는 맵이 없으며, 이 LOD 그룹을 사용하는 텍스처는 항상 전체 로드된다는 뜻입니다. NumStreamedMips 를 -1 로 설정하면 (여전히 적용되는 제약은 있지만) 모든 밉의 스트림 인/아웃이 허용된다는 뜻입니다. NumStreamedMips 는 옵션 세팅으로, 디폴트는 -1 입니다. |
MinMagFilter | MipFilter | 필터 타입 |
point | - | 점 |
linear | 점 | 양선형 |
linear | - | 삼선형 |
aniso | 점 | 이방성 점 |
aniso | - | 이방성 선형 |
TextureGroup, LODGroup, LODBias
텍스처 프로퍼티의 추가적인 LODBias 설정은 config ini 파일의 TextureGroup 에서 지정된 LODBias 에 첨가됩니다. LODBias 는 렌더링을 위해 어느 mip 이 선택되는지를 바이어스 또는 오프셋합니다. LODBias 는 LODGroup 이 범위를 최대/최소화 하기 전에 계산됩니다. 텍스처 프로퍼티에 있는 LODBias 가 TextureGroup 에 있는 LODBias 에 첨가되어 사용되는 최종 LODBias 값을 결정합니다.
LODBias 값 0 은 주 (native) 텍스처 해상도입니다. LODBias 값 1 은 텍스처에 대한 그 아래 첫 번째의 mip, 그리고 LODBias 값 2 는 그 아래 두 번째 mip 등입니다. 예를 들면 1024x1024 텍스처의 LODBias 가 1 이면 렌더링을 위해 512x512 mip 이 선택되는 결과가 됩니다. 각 개별 텍스처에 대해 텍스처 프로퍼티에서 지정된 LODBias 값은 양수일 수도 있고 음수일 수도 있습니다. 따라서 이는 TextureGroup 의 기본 LODBias 를 더 높거나 더 낮은 mip 값으로 오프셋할 수 있습니다.
예를 들어, TextureGroup의 LODBias 가 0 이고 텍스처 프로퍼티의 LODBias 가 0 이면 최종 LODBias 는 0 이 됩니다.
TextureGroup 의 LODBias 가 0 이고 텍스처 프로퍼티의 LODBias 가 1 이면 최종 LODBias 는 1 이 됩니다.
TextureGroup 의 LODBias 가 1 이고 텍스처 프로퍼티의 LODBias 가 1 이면 최종 LODBias 는 2 가 됩니다.
TextureGroup 의 LODBias 가 1 이고 텍스처 프로퍼티의 LODBias 가 -1 이면 최종 LODBias 는 0 이 됩니다. 최종 LODBias 가 계산된 다음에는, 이 값이 TextureGroup 의 최소/최대 LODSize 범위에 맞는지 확인하기 위해 텍스처 mip 이 점검되고, 필요한 경우에는 값이 조정됩니다. 이것은 간단한 config ini 파일의 변경으로 특정 TextureGroup 을 효율적으로 최소/최대 LOD 범위 내에 제한할 수 있도록 합니다. 예를 들면, LODBias 가 1 인 1024x1024 텍스처가 위에서 보는 것처럼 TEXTUREGROUP_World LODGroup 에 있는 경우에는 512x512 mip 을 사용합니다. 그 다음에 이것이 TextureGroup 의 최소 및 최대 LODSize 범위 (이 경우에는 256 과 1024) 에 부합하는지 확인하기 위한 점검이 행해집니다. 각 게임의 타이틀에는 그 고유의 TextureGroup 설정이 있기 때문에, 아티스트와 레벨 디자이너들은 각 그룹에 대한 MinLODSize 와 MaxLODSize 를 인식해야 합니다.
게임에 2048 텍스처가 MaxLODSize 1024 의 TextureGroup 에 배정되어 출하된다면 렌더링의 질에는 아무런 도움이 되지 않으면서 배포할 수 있는 패키지의 사이즈만 증가시키게 될 것입니다.
텍스처 임포트 프로퍼티
32-비트 ARGB 텍스처에 대해서는 CompressionNoAlpha 를 체크하지 않은 상태로 두어 DXT5 텍스처를 만들어 냅니다. Specular 및 Opacity 정보는 대개 두 개의 24-비트 DXT1 텍스처를 사용하는 대신 32-비트 DXT5 텍스처의 알파 체널에 배치되는 것이 가장 좋습니다. 두 개의 DXT1 텍스처 파일의 사이즈가 한 개의 DXT5 와 같기는 하지만, 엔진에서 DXT5 는 하나의 TextureSampler 를 사용하는 반면 두 DXT1 들은 여전히 두 개의 TextureSampler 를 사용합니다. 비디오 어댑터들은 일반적으로 16 개의 TextureSampler 를 가지고 있습니다 (SM3 및 SM4).
DXT5 텍스처의 알파 채널은 또한 그레이스케일의 데이터를 보유하기에 더 적합합니다. RGB 평면과 같은 스타일의, 손실이 많은 압축을 사용하지 않기 때문입니다. 만일 텍스처가 TextureGroup 의 최대 LOD 값보다 커야 한다면, 원래대로의 텍스처 사이즈를 지원하고 mip 을 떨구지 않는 TextureGroup 을 선택하십시오. 너무 많은 2048 및 큰 텍스처의 사용을 주의하십시오. 특히 콘솔에 대한 지원을 목표로 할 경우 주의해야 합니다. TextureGroups 의 기본 사용을 오버라이드함으로써 텍스처 메모리 풀에 영향을 주고, 여러개의 장면 텍스처가 강제로 mip 을 떨어뜨려서 “흐릿하게” 보이게 하는 등, 시스템에 비디오 메모리가 더 적어지게 하는 문제를 초래할 수 있습니다. 텍스처를 임포트할 때는 TC_NormalMap 의 CompressionSettings 를 선택하는 등, 적절한 추가 설정을 선택하도록 하십시오.
텍스처 뷰어 프로퍼티
제너릭 브라우저에서 텍스처를 더블 클릭하거나 텍스처를 오른 클릭하여 나타나는 메뉴에서 Texture Viewer 를 선택하십시오.