《Tower Valley》是一个融合多种前沿技术的 Demo,旨在展现团结引擎的实时渲染能力:结合虚拟几何体、虚拟阴影贴图、实时动态全局光照、VG 植被方案等技术,呈现电影级的视觉效果与流畅的高性能体验。
欢迎体验《Tower Valley》
为获得最佳游戏体验,请在 Windows 平台使用 Tuanjie Editor 1.8.0 或更高版本。推荐配备 RTX 4070 或更高性能的显卡,且显存不低于 10 G,体验步骤:
1. 通过 Git 仓库获取 Demo 工程:
git checkout main2. 用 Tuanjie Editor 打开工程。 3. 选择菜单栏 Tower Valley -> Load Demo Scenes, 待场景加载完毕即可体验。Load Demo Scenes, 待场景加载完毕即可体"},"attribs":{"0":"*0+1e"}},"apool":{"numToAttrib":{"0":["author","7475251529973383169"]},"nextNum":1}},"type":"text","referenceRecordMap":{},"extra":{"channel":"saas","isEqualBlockSelection":false,"pasteRandomId":"eb4e1c64-1feb-4a9d-a265-3ee2228695d8","mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":11,"type":"text","selection":{"start":0,"end":50},"recordId":"SgG3dvB69ogeSKxHVchcndvLnL7"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text">
Demo 特性
相比于 Unity6 团队发布的实时渲染 Demo《Time Ghost: Environment 》,在《Tower Valley》中,我们构建了更具挑战的场景,设计了更复杂的地形地貌,加载了数量更庞大的植被,更引入了大量的高清扫描模型资产,使得同屏需要处理的三角形数量峰值超过5 亿;除此之外,我们还采用了实时光照和阴影技术,以此来充分验证引擎的渲染能力。
关键技术方案
在《Tower Valley》中,我们使用了一系列技术来应对复杂场景的挑战:
使用虚拟几何体技术解决海量物体以及大量高模的渲染
使用实时动态全局光照轻松解决室内场景的照明
使用虚拟阴影贴图渲染高质量阴影
使用VG植被方案处理海量草体的渲染
虚拟几何体(Virtual Geometry)
《Tower Valley》场景元素丰富且数量庞大,我们在场景上摆放着:
大量物体:共计 2 亿三角面,包括地形地貌、石头、树木。
高模物体:共计 1 亿三角面,包括瞭望塔 (6 千万三角面)、房子、装饰物。
这种复杂的场景对渲染提出了很高的要求,虚拟几何体(VG)的出现,轻松地化解了这个难题。VG 是一个在运行时解决海量多边形的图形渲染技术, 它适用于场景中有着大量的物体,以及高精度模型的物体,它解决的是屏幕像素和场景中多边形数目不匹配的问题。虚拟几何体有诸多优势:
基于 GPU 驱动的渲染管线,具备精细的 GPU 剔除能力
场景支持海量的多边形
几何体数据可以流式加载
内存和显存不再受限于模型的面数
有自适应 LOD 算法并有自然的过渡
优化工作流
无需手工制作和配置 LOD
无需从高模烘焙法线贴图
在我们的场景模型中,除草体以外,有共计约 3.7 亿的三角面,其中有 3 亿适用 VG,我们分别对比关闭和开启VG的性能指标,可见 VG 对于性能的提升非常显著。
打开 Window > Analysis > Rendering Debugger,选择 GDRP 标签页,在对应属性中选择 Buffer Visualization 为 TriangleID,可在场景中可视化查看VG的渲染状态(如上图)。
更多关于VG的用法,请参考:极限轻量化!团结引擎 Virtual Geometry 入坑指南 - 技术专栏 - Unity 官方开发者社区
https://developer.unity.cn/projects/66124ceeedbc2a001e3e8039
虚拟阴影贴图(Virtual Shadow Map)
随着虚拟几何体(VG)的推出,常规的阴影渲染技术,如级联阴影贴图(CSM),已经不能满足高面数模型对于阴影质量的要求,而虚拟阴影贴图则能够通过其超高的分辨率(16k x 16k)很好地对这一类模型和场景进行适配。VSM 是 GPU 驱动的渲染管线技术,适用于高面数模型和大型场景,它具有诸多优势。
VSM 优势一:质量更高
下图对比了 Tuanjie Editor 中级联阴影贴图(CSM)和虚拟阴影贴图(VSM)的效果差异。得益于分辨率的提升,VSM 能够取得更好的阴影质量。
测试条件:对于级联阴影贴图,我们将 Resolution 选项设置为 High,并将 Angular Diameter Scale for Softness 设置为 0 来渲染硬阴影。在 Volume 中,级联阴影贴图的 Max Distance 被设置为 400。
VSM 优势二:大型场景性能更好
我们构建了一个 3200m * 1000m,包含大约 40 万个 Game Object 的大型场景,对比实验结果如下:
我们对比了 VSM 和 CSM 的硬阴影的性能差异,不难发现:
VSM 的性能显著优于其他几种方案,耗时约为表现第二的 CSM+VG(400m)方案的一半。
在采用 CSM 的方案中,我们也能看到开启 VG 后能够极大提升 CSM 的性能表现。
VSM 优势三:高精度模型场景性能更好
测试场景中,大小为 7m * 9m 的面积里,包含了 120 个面片数量约为 300 万面的高精度模型,对比实验结果如下:
我们发现:在渲染小场景中的高精度模型阴影时,虽然 VSM 的 CPU 耗时略微高于 CSM(我们还将持续优化这部分开销),但是 GPU 耗时大大降低了。
综上,VSM 在性能和质量的表现上,都有明显优势,因此,我们推荐大家在使用 VG 的项目中,同时开启 VSM 和 VG 以取得最好的效果。
VSM 用法请参考: 团结引擎 - 手册: 如何使用虚拟阴影贴图
https://docs.unity.cn/cn/tuanjiemanual/Manual/VirtualShadowMap-HowToUse.html
实时动态全局光照(TuanjieGI)
在 Tower Valley 场景中,对室内场景车库的渲染,我们启用了团结引擎的实时动态全局光照系统(TuanjieGI)。它是团结引擎 1.7.0 版本推出的全局光照和反射系统,能够实时渲染出逼真的光照效果,而无需预烘焙光照贴图。它具有以下特性:
实时响应场景的动态变化,如光源的移动、游戏对象的添加或删除,材质的修改等。
综合考虑直接和间接光照,模拟光线在整个场景中的传播行为。
使用屏幕空间光线追踪、距离场等软件光线追踪技术,无需特定显卡支持。
基于 Volume Profile 的配置选项,允许精细调整全局、局部光照效果
与虚拟几何体技术无缝集成,无需复杂设置
TuanjieGI 用法请参考:
https://docs.unity.cn/cn/tuanjiemanual/Manual/TuanjieGI.html
TuanjieGI / VG / VSM 协同工作
我们希望通过多种技术的组合使用,兼顾优秀的渲染性能和良好的光照效果。因此我们构建了一个由超多高清扫描资产组成的场景,并测试多种技术组合的性能参数。
在这个测试场景里,同屏处理三角形数量峰值超过 1.2 亿。测试条件:RTX 5060Ti,显存 8 GB,Play Mode 输出分辨率设置为 1920*1080。测试数据如下:
不难发现,在适用的场景里,TuanjieGI / VG / VSM 的协同使用,能取得较好的预期效果。
获取上述Demo,请访问:
https://cnb.cool/tuanjie/TuanjieGI_Demo_Tower/
VG 植被方案
《Tower Valley》场景的复杂和渲染压力,同样体现在海量草体的渲染。在场景中有超过 3000 万棵草,使用传统的植被渲染方案将给 CPU 带来极大的计算压力,我们结合使用了 VG 和 Tile Impostor 技术来缓解压力。VG 除了作用于复杂模型这一传统优势,其 GPU Driven 的特性使得在进行大量植被的渲染时,也能取得相应的性能提升。VG 植被方案将原本在 CPU 上进行的部分工作,例如场景 Instance 管理与 Culling 流程,转移到了 GPU 上进行,使得整个流程变得更为 GPU Driven,从而缓解 CPU 压力,并获得良好的性能表现,其关键技术点体现在:
使用 VG 渲染近处草,Tile Impostor 渲染远处草,从而取得最优的性能收益。
近处的植被使用 VG 渲染,与传统 Renderer 开启 VG 略有不同的是,我们通过调用 API 一次性将大量草体 Instance 数据和它们对应的 Prefab 数据传输至 VG Manager,从而保证效率最大化。
视野远处存在的大量植被会导致渲染时严重的 Over draw,为了解决这一问题,我们使用 Tile Impostor 渲染远景草,将 100m * 100m 的草地划为一个 Tile,并烘焙为 Prefab,减轻运行时渲染开销。
对于 VG 草体,不在内存中创建传统 Renderer 所需的数据结构,从而减轻内存压力和 CPU 计算量。同时,将草体对应的 VG Instance 与一般 Renderer 对应的 VG Instance 做区分,删减草体对应的 VG Instance 所需的数据量,极致轻量化,减轻显存压力。
优化 VG 数据上传 GPU 效率,保证 CPU 和 GPU 之间每帧发生海量数据交互时,仍能维持一个稳定的帧率。
针对 VG 草体和顶点动画,优化 VSM Cache 的更新机制,只更新设定范围内的 VSM Cache,从而节省计算量,提升性能。
当前,VG 植被方案在不断地开发完善中,包括顶点动画的性能优化、TAA 支持以及内置的 Impostor 方案等,预计未来将会取得更优的性能和更好的效果。
Known issues
虚拟几何体的顶点动画对 TAA 抗锯齿支持尚不完善,在工程设置中已开启 RTX 显卡的 DLSS 超分功能以优化画质,但在非 RTX 显卡上草体的摇曳摆动会有明显的拖影。
在显存不足 10G 的 PC 上,使用 Game Mode 时可能会遭遇显存耗尽并使用共享显存,从而导致 Editor 异常卡顿的情况。
启用 TuanjieGI Reflection 后,镜头运动过程中,反射区域可能出现轻微跳变。
Unity 官方微信
第一时间了解Unity引擎动向,学习进阶开发技能
每一个“点赞”、“在看”,都是我们前进的动力
热门跟贴