type
status
date
slug
summary
tags
category
icon
password
fullWidth
fullWidth

《鸣潮》基于虚幻引擎4的多平台效果和性能优化实践

UE4移动端TAAU

💡
TAAU(Temporal Anti-Aliasing Upsample)是一种图形渲染技术,用于减少锯齿,同时提升分辨率。它结合了时域抗锯齿(TAA)上采样(Upsampling)技术,通过多帧采样和像素偏移量计算来平滑图像边缘,并在合成步骤中使用上采样来提高图像的清晰度。
  • 相比于TAA,新增了Velocity Pass,并在原有的TAA Pass基础上使用了上采用技术:
notion image

Velocity Pass优化角色鬼影问题

  • Velocity Buffer由两部分构成:屏幕空间速度(Screen Space Velocity)和角色蒙版(Character Mask)
    • Screen Space Velocity:把每个像素点的速度向量(float2)编码成一张RGB8图像
    • Character Mask:像素是否为角色区域编码成一张1bit二值图像
  • Velocity Buffer带来的问题:性能消耗较大
    • 角色本体和角色描边是分开渲染的,需要两个Velocity Buffer Pass分别处理本体和描边
    • 每个Velocity Buffer由于要知道上一帧的历史数据,需要蒙皮两次
  • 优化目标和方案
notion image
  • History Pixel Clamp的问题和解决方案
    • 用History Pixel Clamp方法,历史帧的权重较高画面会模糊产生重影;历史帧权重较低,画面会闪烁
    • 解决方案是动静像素差异处理;使用运动速度插值动态和静态两套权重,达到静态更稳定动态更清晰
notion image
  • 使用锐化卷积核处理动态像素

图像上采样提高分辨率

💡
图像上采样(Upsampling):一种用于增加图像分辨率的技术;通过在现有像素之间插入新的像素来放大图像,提高图像的分辨率。
  • 重用了TAA的上采样,获取当前像素周围的像素数据,利用周围像素的信息来生成更清晰的结果,在不同设备上选择Lanczos、Lanczos2、Lanczos3滤波器

树的多平台适配方案

💡
Streaming Assets:存放需要在运行时直接访问的资源文件。与其他资源文件不同,放在StreamingAssets中的文件不会被压缩或加密,而是原封不动地打包到应用程序;具有跨平台只读性特点。
notion image
💡
LOD(Level of Detail):通过为同一对象创建多个不同细节级别的模型,根据对象与相机的距离动态切换模型,减少渲染负担;如远处的树木使用底模,近处的树木使用高模。
HLOD(Hierarchical Level of Detail):通过将多个对象合并为一个层次化的代理模型来减少绘制调用;通过合并网格减少了需要渲染的对象数量,减少渲染负担。
  • 在《鸣潮》中,PC端近景用的是Mesh Tree,中景用的是Billboard Tree,远景用的是Imposter Tree;移动端近景用的是Billboard Tree,中远景用的是Imposter Tree
  • Billboard:使用2D平面来表示树木,这些平面始终面向相机渲染阴影时,Billboard平面面向光源
notion image
  • Imposter Tree:使用预渲染的2D图像来表示树木,这些图像会根据相机的视角动态调整;Imposter Buffer是一张32bit图,RGBA四个通道分别是8bit,表示不同的信息
    • R和G通道:储存法线信息,通过八面体投影还原为3D法向量
    • B通道:储存局部深度信息,用于还原在场景中的深度和世界坐标
    • A通道:储存漫反射灰度信息,并用于区分树叶和树干,应用不同着色器
  • 设计目标
notion image
  • 通过Imposter Buffer中储存的局部深度信息,可还原齐次裁剪空间(Clip Space)中的深度;有了深度信息之后可以接受自投影、接受云层投影、投影到场景效果
notion image
  • Dynamic Texture Array:在一个数组中存储多个2D纹理,并在着色器中通过索引进行采样;可以减少Draw Call,提高渲染性能;可以在运行时动态更新纹理数组中的内容,适用于需要频繁更换纹理的场景
 
Relate Posts
【Built-in渲染】Unity内置管线角色NPR渲染的简单实践
Lazy loaded image
【Built-in渲染】绘画色彩理论在卡渲后处理中的应用
Lazy loaded image
【虚幻Slate】虚幻编辑器扩展之开发一个AVG游戏剧情编辑器
Lazy loaded image
【TypeScript】基于抽象语法树的自定义代码检查实现方案
Lazy loaded image
【TypeScript】性能记录框架和装饰器
Lazy loaded image
【TypeScript】浅析TypeScript中的装饰器(旧语法)
Lazy loaded image
【UnrealCircle摘要】TypeScript、PuerTS、V8优化实践 by 王宏波【UFSH摘要】虚幻引擎5 Motion Matching实践简介 by 王远明
Loading...
Latest posts
【虚幻Slate】虚幻编辑器扩展之开发一个AVG游戏剧情编辑器
2025-12-25
【TypeScript】性能记录框架和装饰器
2025-12-12
【Built-in渲染】绘画色彩理论在卡渲后处理中的应用
2025-12-12
【散文随笔】我的高中生活(二)
2025-12-12
【散文随笔】我的高中生活(一)
2025-12-12
【兴趣爱好】音乐创作存档
2025-12-12