UE移动端渲染问题及设置
移动端渲染设置总结
1. 阴影马赛克问题
调整渲染设置 r.shadowquality=3
2. 部分贴图马赛克问题
SamplerSource 改成 Shared:Wrap
?
3. 远景闪烁问题
[/Script/Engine.Engine]
NearClipPlane=1.000000
NearClipPlane=0.1 改为 1.0
它是相机的一个参数,用于定义相机视椎体的近裁剪平面。视椎体是一个用于确定哪些对象会被渲染的区域,它由近裁剪平面、远裁剪平面、以及左、右、上和下平面组成。
近裁剪平面式相机视椎体靠近相机位置的那个平面。所有距离相机小于这个值的物体都会被裁剪掉,即不会被渲染。这个值可以通过相机设置进行调整。
设置近裁剪平面的值有助于防止渲染过近的物体,同时确保渲染引擎只关注于相机视野内的有效场景。调整近裁剪平面还可以影响渲染的精度和深度缓冲的分辨率,因此需要根据特定场景的需求来选择合适的值。
4. 偶发的满屏乱码问题
很难复现的问题,最终发现每次场景中有其他用户下蹲则必然触发此问题。原因是在 ALS 的下蹲中打了这么一行日志
GEngine->AddOnScreenDebugMessage(77, 8.0f, FColor::Silver, FString::Printf(TEXT("%s:Crouching"), GEngine->GetNetMode(GEngine->GetWorld()) ? "S" : "C"));
- ChatGPT 给的解释:
- 在 UE 中,使用
AddOnScreenDebugMessage
打印日志时,如果日志内容中包含中文或者其他非 ASCII 字符,可能会导致在某些情况下出现乱码的问题,特别是在 Android 设备上。这个问题可能是由于字符编码或文本转换问题引起的。为了解决这个问题,可以尝试用FText
来处理文本,以确保正确的字符编码。 - 试了,用
FText
并不行。。。
- 在 UE 中,使用
5. 部分地形材质无法加载的问题
主要原因是移动端材质只支持最多16个 Sampler,我们的地形材质比较复杂
简单几种材质叠加即超过了16个 Sampler,解决方案:
-
不使用高度混合而采用权重混合
-
去掉某些复杂材质的法线输入,采用世界位置偏移。
优点是材质可以正常显示,缺点是效果受影响。
6. 相同光照设置低端机型进入发白
使用 renderdoc 截帧,调整如图所示红框中的范围值,可以确定是光照的问题。
尝试修改光照单位
未果
最后定位到
场景中除了平行光还有天光,光源类型设置的 SLS Captured Scene
,应该设置为 SLS Specified Cubemap
-
SLS Captured Scene
- (SLS, Sky Light Source)使用场景中实时捕获的天空作为光源
- 这种类型的 SLS 光源会动态地捕捉场景的天空,并将其用作全局光照的一部分。这样可以获得更加动态和真实的光照效果,特别是在天空和云层等环境元素发生变化时。
-
SLS Specified Cubemap
- 使用开发者提供的特定立方体贴图(Cubemap)作为光源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现