UDN
Search public documentation:
TextureSupportAndSettingsCH
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
贴图支持及设置
概述
贴图分辨率
目前 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 mip 生成和 DirectX Texture Compression(DirectX贴图压缩)的 ATI 的 Compressonator 创建的材质中编译出来的结果。
分辨率 | 从 1x1 开始的 Mip 总量 | DXT1 | DXT5 |
16x16 | 5 mip | 312 字节 | 496 字节 |
32x32 | 6 mip | 824 字节 | 1.48kb (1,520 字节) |
64x64 | 7 mip | 2.80kb (2,872 字节) | 5.48kb (5,616 字节) |
128x128 | 8 mip | 10.8kb (11,064 字节) | 21.4kb (22,000 字节) |
256x256 | 9 mip | 42.8kb (43,832 字节) | 85.4kb (87,536 字节) |
512x512 | 10 mip | 170kb (174,904 字节) | 341kb (349,680 字节) |
1024x1024 | 11 mip | 682kb (699,192 字节) | 1.33MB (1,398,256 字节) |
2048x2048 | 12 mip | 2.66MB (2,796,344 字节) | 5.33MB (5,592,560 字节) |
4096x4096 | 13 mip | 10.6MB (11,184,952 字节) | 21.3MB (22,369,776 字节) |
8192x8192 | 14 mip | 42.6MB (44,739,384 字节) | 85.3MB (89,478,640 字节) |
法线贴图格式
引擎配置 TextureGroup(贴图组)属性
配置设置文件的源集合放置在文件 UnrealEngine3\Engine\Config\BaseEngine.ini 中的[SystemSettings]部分。
对于开发中的游戏,[My] Documents\My Games\[your_game]\Config\[your_game]Engine.ini文件也包含了一个在Engine\Config\ 文件夹下的基本属性的镜像集合,并且它通常应该是针对您游戏的特定设置进行修改的副本。 注意对于虚幻编辑器及在游戏中的情况,有独立的 TextureGroup(贴图组)项的集合。这两个集合分别放置在 config(配置)文件的[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) 在<您的游戏> Engine.ini 文件中的 TextureGroup(贴图组设置)通常会和这个类似。注意 LOD 设置一般设置为游戏设计及目标平台范围极限。 TEXTUREGROUP_World=(MinLODSize=256,MaxLODSize=1024,LODBias=1)
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 | 将会渲染的最小 mip 尺寸,在像素中指定,范围是从 1 到 8192 之间,它的值必须是 2 的幂数,必须比 MaxLODSize 小。 |
MaxLODSize | 将会渲染的最大 mip 尺寸,在像素中指定,范围是从 1 到 8192 之间,它的值必须是 2 的幂数,必须比 MinLODSize 大。 |
LODBias | 一个负值或正值,它决定了在加载数值进行渲染前要偏移的 mip 等级的数量,值在 MinLODSize 和 MaxLODSize 之间。 |
MinMagFilter | 可以在通过使用 GPU 缩放贴图时指定贴图筛选类型。请参阅下面的图表。 |
MipFilter | 可以在从一定距离或在掠角位置观看贴图的时候指定 GPU 是否应该将这两个 mip 混合在一起。请参阅下面的图表。 |
NumStreamedMips | 允许动态载入或载出的 mip 数量。如果贴图有 10 个 mip,NumStreamedMips 为 2,那么将只允许动态载入或载出这 2 个最高的 mip。因此,在任何给定时间这个贴图在内存中都会有 8-10 个 mip。将 NumStreamedMips 设置为 0 意味着将不会动态加载 mip,而且通常会完全加载使用这个 LOD 组的贴图。将 NumStreamedMips 设置为 -1 意味着也允许动态载入或载出所有 mip(但是仍然还有一些其他大的限制条件)。NumStreamedMips 是一个默认值为 -1 的可选设置。 |
MinMagFilter | MipFilter | 过滤类型 |
point | - | Point(点) |
linear | point(点) | Bilinear(双线性) |
linear | - | Trilinear(三线性) |
aniso | point | Anisotropic Point(各向相异的点) |
aniso | - | Anisotropic Linear(各向相异的直线) |
TextureGroup、LODGroup 和 LODBias
在 Texture Properties(贴图属性)中附加的 LODBias 设置和在配置 ini 文件 TextureGroup(贴图组)指定的 LODBias 相加。 LODBias 的 偏移 或偏移量指出了选择要进行渲染的 mip。LODBias 在 LODGroup 的 Min/Max 范围前进行计算。在 Texture Properties(贴图属性)中的 LODBias 和 TextureGroup 的 LODBias 相加来决定要使用的最终 LODBias 值。
LODBias 的值为 0 是指贴图分辨率。LODBias 值为 1是指贴图的向下数第一个 mip、 LODBias 的值为 2 是指向下数第二个 mip等等。比如,一个分辨率为 1024x1024 的贴图的 LODBias 值为 1,则会导致在渲染时使用 512x512 mip。 在贴图属性中为每个独立贴图指定的 LODBias 可以是正值或者负值,以便它能偏移 TextureGroup(贴图组)的默认的 LODBias 值来使 mip 的值变得或者较高或者较低。
比如,一个 TextureGroup(贴图组)的 LODBias 为 0 并且 Texture Properties(贴图属性)的 LODBias 值也为 0,那么将导致最终的 LODBias 值为 0。
TextureGroup(贴图组)的 LODBias 值为 0,Texture Properties(贴图属性)的 LODBias 为 1,将导致最终的 LODBias 值为 1。 TextureGroup(贴图组)的 LODBias 值为 1,Texture Properties(贴图属性)的 LODBias 为 1,将导致最终的 LODBias 值为 2。 TextureGroup(贴图组)的 LODBias 值为 1,Texture Properties(贴图属性)的 LODBias 为 -1,将导致最终的 LODBias 值为 0。 计算出了最终的 LODBias 后,检查贴图 mip 来看它是否适合 TextureGroup(贴图组)的 Min/Max LODSize 范围,如果需要则进行调整。这允许简单地改变配置 ini 文件来有效地将特定的 TextureGroup(贴图组)限定在区间 min/max(最小/最大)LOD 范围内。比如,一个 LODBias 为 1 分辨率为 1024x1024 的贴图使用 512x512 的 mip,如果它在上面显示的 TEXTUREGROUP_World LODGroup 中,那么将会检查它来确定它是否在 TextureGroup(贴图组)的 Minimu(最小)和 Maximum(最大)的 LODSize 范围内,在这里它们是 256 和 1024。 由于每个游戏名称有它们自己独特的 TextureGroup 设置,美工人员及关卡设计者应该意识到每个组 MinLODSize 和 MaxLODSize。
如果一个游戏随带发行了具有 2048 个贴图的 TextureGroup(贴图组)并且 MaxLODSize 值为 1024,那么它将会增加发行的包的大小,且不会在渲染质量方面带来好处。
贴图导入属性
对于 32-位的 ARGB 则不用勾选 CompressionNoAlpha 项来一张 DXT5 贴图。 高光(Specular)和透明性(Opacity)信息通常最好放置到 32-位 DXT5 贴图的 Alpha 通道中而不是使用两个 24-位的 DXT1 贴图。尽管两个 DXT1 贴图和一个 DXT5 贴图的文件大小一样,但是在引擎中 DXT5 使用一个 TextureSampler(贴图取样器)而两个 DXT1 将使用两个 TextureSamplers(贴图取样器)。视频适配器一般有 16 个 TextureSamplers(贴图取样器)(SM3 和 SM4)。
DXT5 贴图的 Alpha 通道也更适于保存灰度数据,因为它没有使用和 RGB 平面一样的有损耗压缩方式。 如果一个贴图必须比任何特定的 TextureGroup(贴图组)的最大 LOD 值都大,请一定要选择本来就支持那个贴图尺寸的 TextureGroup(贴图组)并且不要降低 mip。 当使用许多 2048 及大贴图时一定要小心,尤其是当目标支持平台是游戏控制台时。通过覆盖 TextureGroups(贴图组)的默认应用,您可以影响贴图的内存池,并可能会在视频内存较少的系统中引发一些问题,比如多个场景贴图剧烈地降低 mip 从而看上去非常的模糊。 当导入贴图时,一定要选择合适的附加设置,比如当导入 NormalMap(法线贴图)时选择 TC_NormalMap 的 CompressionSettings。
贴图查看器属性
在通用浏览器中双击一个贴图,或者在一个贴图上右击并从弹出的菜单中选择 Texture Viewer(贴图查看器)。