【博物纳新】NVIDIA可破坏开源库测评

栏目: 软件资讯 · 发布时间: 6年前

内容简介:【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。更多精彩内容请关注:lab.uwa4d.com导读

【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。

更多精彩内容请关注:lab.uwa4d.com

导读

NVIDIA GameWorks是NVIDIA公司为游戏开发推出的图形技术解决方案。该解决方案包含了针对游戏开发中物理、渲染、粒子模拟等方面的工具,实现了非常逼真的效果。今天给大家介绍的开源库项目是NVIDIA GameWorks的Unreal引擎插件。通过该插件,开发者可以在Unreal引擎中方便地使用NVIDIA GameWorks中的各种游戏开发组件和功能。该插件中包含了7大系统,分别是:

  1. Blast破坏系统,该系统支持物理模拟的可破坏效果。
  2. Flex粒子模拟系统,该系统可用于模拟逼真的粒子效果,例如:水流、烟雾、布料等。
  3. Flow稀疏体素流体模拟系统,该系统采用稀疏网格模拟了逼真的流体效果。
  4. HairWorks毛发模拟和渲染系统,该系统提供了非常逼真的毛发渲染效果。
  5. WaveWorks水波模拟系统,该系统使用频域的频谱散射模型进行模拟,并采用逆FFT转换成空间域进行渲染,可模拟逼真的大面积海洋效果。
  6. VXGI实时全局光照系统,该系统提供了实时的全局光照效果。
  7. HBAO+环境光遮蔽系统,该系统提供了快速、稳定的屏幕空间环境光遮蔽效果。

本文主要介绍Blast系统在Unreal引擎中的使用方式以及性能测评。开源库链接:

https://lab.uwa4d.com/lab/5b85680302004fb65975d352

Blast使用

在Unreal引擎中使用GameWorks插件中的Blast系统需要重新编译Unreal引擎。因此,开发者在下载好该开源库项目后,还需根据使用说明下载Unreal 4.18引擎源代码,然后编译引擎以及编辑器即可开始使用。

该项目中已经为我们提供了一个Blast系统的例子工程(BlastPluginSample)。打开该工程即可在场景中看到几个已经创建好的可破坏物体以及第一人称射击角色,如下图所示:

【博物纳新】NVIDIA可破坏开源库测评

运行该工程,并用第一人称视角向物体进行射击即可看到物体被击碎、破坏的效果,如下图所示:

【博物纳新】NVIDIA可破坏开源库测评
【博物纳新】NVIDIA可破坏开源库测评
【博物纳新】NVIDIA可破坏开源库测评
【博物纳新】NVIDIA可破坏开源库测评

Blast Mesh Actor

集成好GameWorks插件后,Unreal引擎中会新增一种可破坏物体类型,Blast Mesh Actor。上述场景中所有可破坏的物体都属于该类型。Blast Mesh Actor物体具有一种新的组件,Blast Mesh Component。该组件会引用Blast Asset资源,该资源包含了可破坏物体的网格以及被预先切割好的碎片信息,如下图所示:

【博物纳新】NVIDIA可破坏开源库测评

上图中的玻璃板的Blast Asset是例子工程中已创建好的。如果要利用已有Mesh生成Blast Asset也非常容易。我们以一个Cube Mesh为例。首先,在内容目录下的该Mesh资源上点击右键,选择菜单中的“create blast mesh”,即可创建相应的Blast Asset:

【博物纳新】NVIDIA可破坏开源库测评

然后,双击该Blast Asset,即可打开Blast Mesh Editor。点击 工具 上的“Fracture”,引擎会自动随机生成该Mesh的碎片信息:

【博物纳新】NVIDIA可破坏开源库测评

随着点击次数增加,碎片块数量会增多,碎片大小减小。引擎提供了不同的方法生成碎片,最终生成的碎片形状和方向不同。该生成算法可在“Fracture Settings”窗口中进行设置,默认情况下是采用“Voronoi Uniform”:

【博物纳新】NVIDIA可破坏开源库测评

下图显示了不同类型算法生成的碎片形状:

【博物纳新】NVIDIA可破坏开源库测评
(本图取自开源库项目文档)

开发者可根据自己需求进行设置。

拖动工具栏上的“Explode Amount”滑动条,可方便地观察生成的碎片:

【博物纳新】NVIDIA可破坏开源库测评

将保存好的Blast Asset拖进场景,引擎会自动创建相应的Blast Mesh Actor。在Blast Mesh Actor的Details面板中的Blast标签下,可以设置物体的硬度、造成破坏的半径等参数进行设置:

【博物纳新】NVIDIA可破坏开源库测评

更加详细的参数设置信息,可参考开源项目的文档。

Blast 性能测试

目前,Unreal引擎默认集成了NVIDIA的APEX中的破坏系统。Blast则是比APEX效率更高、更加灵活的解决方案。 两者的性能对比在NVIDIA官方网站有详细介绍 ,本文不再赘述。本文主要介绍在PC平台上的性能数据,Mobile端由于打包编译问题暂时无法测试。测试场景为开源项目中的Blast例子场景,使用 UWA Unreal线上性能检测工具 进行测试。

测试平台信息如下:

CPU:Intel(R) Core(TM) i7-6700HQ 2.6GHz

GPU:NVIDIA Geforce GTX 1070

OS:Windows 10

下图显示了测试过程中,游戏线程和渲染线程的耗时走势:

【博物纳新】NVIDIA可破坏开源库测评

由上图可知,游戏线程的耗时远高于渲染线程。因此,该项目的耗时瓶颈在于CPU端的运算。该场景渲染也比较简单,所以GPU端的渲染计算量并不大。

经过对各模块耗时的分析,我们发现物理模块是耗时最大的模块,如下图所示:

【博物纳新】NVIDIA可破坏开源库测评

上图紫色线条表示Worker线程计算PhysX Task的时间,黄色线条表示游戏线程中物理模拟时间,蓝色线条表示游戏线程中分配PhysX Task计算任务给Worker线程以及驱动PhysX更新的时间。由上图可知物理模拟和PhysX的计算耗时较高,甚至在某些击碎物体的瞬间,其计算耗时会出现峰值(红色方框对应红色竖线处屏幕截图)。

同时,通过对主线程的函数调用栈分析发现,在击中某一可破坏物体时,其BlastMeshComponent的Update耗时比较高,在总耗时中占比较高的比例:

【博物纳新】NVIDIA可破坏开源库测评
【博物纳新】NVIDIA可破坏开源库测评

STAT_PostTickComponentUpdate表示的是主线程更新所有跟渲染相关的信息,并传送到渲染线程。由于击碎物体时会瞬间造成大量碎片,因此造成该更新函数的耗时突然升高:

【博物纳新】NVIDIA可破坏开源库测评

总结

本文介绍了NVIDIA GameWorks开源库项目中Blast破坏系统在Unreal引擎的插件使用方法以及性能测评。该系统支持预先生成好碎片的方式,在运行时模拟出逼真的击碎效果。其使用方法简单容易操作。其耗时较高部分主要有两块:其一是物理模拟耗时,其二是击碎瞬间生成碎片大量渲染信息的耗时。

快用 UWA Lab合辑 Mark好项目!

【博物纳新】NVIDIA可破坏开源库测评

今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路......

请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员修炼之道(影印版)

程序员修炼之道(影印版)

Andrew Hunt、David Thomas / 中国电力出版社 / 2003-8-1 / 39.00

本书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视——即根据需求,创建用户乐于接受的、可工作和易维护的代码。本书包含的内容从个人责任到职业发展,直至保持代码灵活和易于改编重用的架构技术。从本书中将学到防止软件变质、消除复制知识的陷阱、编写灵活、动态和易适应的代码、避免出现相同的设计、用契约、断言和异常对代码进行防护等内容。一起来看看 《程序员修炼之道(影印版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器