ue4 点击启动_UE4-纹理流送(Texture Streaming)

本文介绍了UE4纹理流送的概念,解释了流送如何根据玩家距离调整纹理的分辨率,并讨论了如何处理纹理流送池内存不足的问题。此外,还详细说明了如何强制纹理不流送以保持最高分辨率,但需要注意这样做可能带来的性能影响。
部署运行你感兴趣的模型镜像

d335927aa7a5eb058b99b2156e906fdd.png

1.什么是纹理流送(Texture Streaming)

当你处理许多纹理时,特别是在建筑可视化项目或汽车类项目中,你可能偶尔会发现纹理有点模糊。它们没有显示所有细节,因为它们的流送(Streaming)不正确。通常你不会遇到这种情况,但如果遇到了,你就需要了解接下来的知识。

简单来说,流送就是获取纹理的所有细节层级(Level of Detail,LOD)或多级渐进纹理(Mipmaps),然后在玩家靠近时显示最高分辨率的渐进纹理,在玩家远离时显示低分辨率版本,但仅限场景摄像机的视锥范围内。我们之前讨论过多级渐进纹理(Mipmaps),它相当于纹理的细节层级。事实上,细节层级或多级渐进纹理和纹理完全一样,只不过细节层级会稍微小一点,占用的资源更少一些。纹理流送能够在摄像机接近或者远离场景对象时,流送这些不同的细节层级。

纹理流送设有一个缓存池:一片专门用于缓存多级渐进纹理的内存区域。随着纹理不断远离摄像机,它们会变得越来越小,在纹理流送池中占用的内存也越来越少,直到不再占用任何内存。然而,当玩家越来越接近对象时,纹理在流送池中的占用空间也越来越大,因为引擎必须显式更大的多级渐进纹理。介绍这点的原因是,在建筑可视化项目或汽车类项目中,如果你使用细节程度非常高的纹理。你可能会遇到警告,提示纹理流送池可用空间不足。这就说明为内存池预先分配的空间太小了,它很容易就会被塞满。向内存中添加的内容已经超出了承受范围。

如果要增加内存池大小,你需要做的是打开UE4控制台。为此,点击反引号(`) 键,打开控制台后输入 r.Streaming.Poolsize,然后是流送池的大小,请以兆字节为单位。你应该将流送池大小设为 100MB 或 5000MB ,具体大小完全取决于你的项目情况和项目需求。

77f1760ff721db5b92d983486ef4269e.png

如果你发现所有项目级别都有这个问题,或每次打开项目后,都必须增加纹理池大小。你可以打开 “DefaultEngine.ini” 文件,然后在 [/Script/Engine.RendererSettings] 下方,你可以添加或更改 r.Streaming.PoolSize ,后面是流送池的大小,以兆字节为单位。这能确保 UE4 每次启动后,你都能获得正确的流送池大小。

768b7b67ef3d853a654e767381503749.png

如果你开始担心:“哦,我的天哪,我得马上去调整大小!”。但是十有八九,你永远不会遇到这条报错,就算遇到了,照我的方法解决就行了。

2.如何强制纹理不流送

强制纹理不流送的目的是确保始终显示最高分辨率的纹理,你不应该将项目中的所有纹理都设置成最高分辨率,这样做会严重影响性能。通常,你应该让那些靠近用户的纹理使用“永不流送”,比如 UI 元素或者是会在用户靠近时显示文本的元素。

那我们该怎么设置呢?你只需要打开纹理编辑器,在 “Level Of Detail” 分段下的高级选项中,勾选 “Never Stream” 属性即可。

bb4d23ae11dde8bddbee1198f0be1a9f.png

如果你启用了 “Never Stream” ,并且同时把 “Compression Settings” 设置为 “UserInterface2D” 后, 纹理只要在游戏中出现,基本上始终会以最高分辨率显示。这会让它的渲染开销变得非常大,不仅是在内存中,而且屏幕绘制开销也会变大,因为它没有压缩,所以会用到大量信息。它永远都不会使用其他渐进纹理,即便它在屏幕中只占 200 或 100 像素或在屏幕上占用 2000 像素,开销是一样的。

d2cb1d06e45e92bd99a13039ceada9af.png

你需要记住,将纹理设置为 “Never Stream” 能让你获得最高质量的效果,但会影响性能。因此,你需要在项目中慎重使用 “Never Streaming”。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Assertion failed: Texture->LevelIndex != INDEX_NONE [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Streaming\TextureStreamingBuild.cpp] [Line: 659] 0x00007ff65b7f4ec6 UE_GameProject_424.exe!UMeshComponent::GetStreamingTextureInfoInner() [] 0x00007ff65b8f38e5 UE_GameProject_424.exe!UStaticMeshComponent::GetStreamingRenderAssetInfo() [] 0x00007ff65b7f4aaa UE_GameProject_424.exe!UPrimitiveComponent::GetStreamingRenderAssetInfoWithNULLRemoval() [] 0x00007ff65c817604 UE_GameProject_424.exe!FRenderAssetInstanceState::AddComponent() [] 0x00007ff65c7b5b58 UE_GameProject_424.exe!FLevelRenderAssetManager::IncrementalBuild() [] 0x00007ff65c7b633b UE_GameProject_424.exe!FLevelRenderAssetManager::IncrementalUpdate() [] 0x00007ff65c7b6971 UE_GameProject_424.exe!FRenderAssetStreamingManager::IncrementalUpdate() [] 0x00007ff65c7dd2b8 UE_GameProject_424.exe!FRenderAssetStreamingManager::UpdateResourceStreaming() [] 0x00007ff65b925351 UE_GameProject_424.exe!FStreamingManagerCollection::UpdateResourceStreaming() [] 0x00007ff65b91f96d UE_GameProject_424.exe!FStreamingManagerCollection::Tick() [] 0x00007ff65bb5bd97 UE_GameProject_424.exe!UGameEngine::Tick() [] 0x00007ff65d1299a3 UE_GameProject_424.exe!FEngineLoop::Tick() [] 0x00007ff65d1416dc UE_GameProject_424.exe!GuardedMain() [] 0x00007ff65d1417ba UE_GameProject_424.exe!GuardedMainWrapper() [] 0x00007ff65d144666 UE_GameProject_424.exe!LaunchWindowsStartup() [] 0x00007ff65d154254 UE_GameProject_424.exe!WinMain() [] 0x00007ff660fe835a UE_GameProject_424.exe!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288] 0x00007fff18d4259d KERNEL32.DLL!UnknownFunction [] UE5 打包项目运行时出现以上报错
06-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值