官方文档
https://docs.unrealengine.com/5.3/zh-CN/textures-in-unreal-engine/
https://docs.unrealengine.com/5.3/zh-CN/texture-format-support-and-settings-in-unreal-engine/
属性
Texture Stream 与 LOD Bias
ue 的贴图可以勾选 Never Stream,此时会取消纹理流送;否则默认开启纹理流送。
关闭纹理流送,就可以保证每次都加载贴图原生大小,保证最高分辨率,但是可能有性能影响,一般ui可以开。
纹理流送首先加载最小的mipmap,然后逐渐增加;如果 LOD Bias 为0,则最后加载到原贴图最大版本为止;为1则为第一级。例如 2048 的贴图,LOD Bias 为1,则纹理流送到 1024 为止。
Texture Group
纹理组,可以一起设置贴图的各种设置:默认压缩、mip生成、lod bias等等。
我们主要在 Device Profiles 设定,引擎路径 Engine\Config\BaseDeviceProfiles.ini 下有全局的设定:
项目Project路径\Config\DefaultDeviceProfiles.ini 下有各个设备的重载:
编辑器编辑入口:
Cook
对于贴图的 Cook 的调用栈为:
可能的分支:
贴图大小综合作用
贴图有 MaxTextureSize、Lod Bias、Texture Group,我们综合作用下,在cook对应平台时,会根据对应 DeviceProfile 以及贴图对应的 group 设置拿到 对应的 lod bias 等设置,例如我们安卓档配的 lod bias 是1,那么在贴图的 MipGenSettings 不为 TMGS_NoMipmaps 的时候,lod bias 会起作用,这时候 贴图的最后 lod bias 会在原始设置基础上增加安卓挡位的 1
若有 MaxTextureSize,则会在原来的宽高基础上做对应钳制,钳制完再应用 Lod Bias。
例如,MaxTextureSize 为 512,贴图设置 Lod Bias 为 2,原始宽为 2048,高 1024,MipGenSettings 不为 TMGS_NoMipmaps,对应到安卓档位的 lod bias 为 1;则在最后打安卓cook的时候: 此时 MaxTextureSize 起作用,首先把宽和高钳制,宽到 512,高到 256;接着计算 lod bias,为原始设置 2 加上安卓档位的 1 为 3,因此宽 512 » 3 为 64,高 256 » 3 为 32.
(这只是大体逻辑,更进一步的还会受到其他因素的影响)
|
|
但是我这里发现,我没有在启用编辑器下,也就是 WITH_EDITOR 是 0 的情况下,我测试的贴图的 GetSurfaceWidth 和 GetSurfaceHeight 一直为0,查了很久也不清楚是为什么。
最后改为了:
|
|