FPS Sample开源库测评

栏目: 编程语言 · 发布时间: 5年前

内容简介:【博物纳新】是UWA旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。更多精彩内容请关注:lab.uwa4d.comFPS Sample是Unity技术团队做的第一人称联机射击游戏工程,由6人团队完成。它包含了完整的代码和资源,是对Unity新特性的非常好的应用示例,这些新特性主要包括高清晰渲染管线(HDRP)、新的网络传输层和实体组件系统(EC

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

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

导读

FPS Sample是Unity技术团队做的第一人称联机射击游戏工程,由6人团队完成。它包含了完整的代码和资源,是对Unity新特性的非常好的应用示例,这些新特性主要包括高清晰渲染管线(HDRP)、新的网络传输层和实体组件系统(ECS)。本文将简单介绍FPS Sample项目、项目对HDRP的运用以及项目的性能检测。

项目介绍

FPS Sample的完整工程目前可以在Github上下载,项目工程约36GB,注意要使用Git LFS才能下载到完整资源。项目中包含了1个主要场景、2个角色、4件武器的完整资源,可以进行最多16个玩家的多人射击游戏,可选死亡竞赛模式和突围模式。

目前项目工程使用的Unity版本是2018.3 beta 12,支持的构建平台为Windows (客户端&服务端) 和Linux (服务端)。

画面效果:

FPS Sample一经发布,其高质量的画面效果就惊艳了游戏圈,以下为游戏的部分画面截图:

FPS Sample开源库测评 FPS Sample开源库测评 FPS Sample开源库测评 FPS Sample开源库测评

FPS Sample使用了Unity 2018推出的可编程渲染管线(SRP)中专注于高端图形渲染的高清晰渲染管线(HDRP),与之对应的是专注于性能的轻量级渲染管线(LWRP)。HDRP是一个基于物理的渲染管线,在FPS Sample中运用到了许多HDRP中的新功能,以实现更好的画面效果。

1.次表面散射(SSS)

次表面散射可以模拟光穿透半透明物体的效果。它也常用于渲染皮肤。在FPS Sample中,会看到如下图中水果质感的植物,在高折射率的表面,可以看到很多镜面反射的效果,而在低折射率的面上几乎看不到这样的效果。

FPS Sample开源库测评 场景中运用了次表面反射的植物渲染效果
FPS Sample开源库测评
次表面反射开启和未开启的渲染效果对比

2.体积设置(Volume Settings)

体积设置允许可视化修改环境设置并调整如天空、阴影、雾等效果,创建自定义的体积设置并在场景中进行切换,以实现HDRP场景中的不同视觉外观。比如在进入一个较暗的洞穴时,可能需要调整HD阴影设置以降低太阳级联距离,并增加全局体积雾密度。

FPS Sample开源库测评 示例Volumetrics设置开启和未开启的渲染效果对比
FPS Sample开源库测评 示例Volumetrics设置截图

3.贴花(Decal)

Enable Decal是HDRP的材质新开启的一个参数,在项目中,可以用于制作材质表面的细节,比如墙上的铁锈痕迹。

FPS Sample开源库测评 用贴花表现墙面上的锈迹
FPS Sample开源库测评
用贴花表现墙面的斑驳

4.物理光单位系统(PLU)

物理光单位系统-Physical Light Units(PLU)意味着光照单位是基于真实的可测量数值,它可以达到较高的保真度。通常来说将LUX用作定向光(Directional Light)的单位,因为在真实世界中,LUX用于测量太阳光的强度。其它真实世界光源使用 Lumen 来测量光强度,它可用作场景里小型光发射器的参考单位。

在FPS Sample中,Directional light的强度被设定为2000 lux。

FPS Sample开源库测评

5.HDRP的新灯光类型的运用

在HDRP中,光照系统进行了很多改进,其中包括新增的矩形区域光源、允许光线以直线发射的线性光功能等。

FPS Sample开源库测评 矩形区域光的应用
FPS Sample开源库测评
线性光的应用

性能测试

我们使用UWA线上性能测评服务和UWA GOT Online对该项目进行了性能测试,得到了具体的运行数据,以供开发者参考。使用的测试环境如下:

测试设备A:

系统: Win10

内存: 16G

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

GPU: NVIDIA GeForce GTX 1070

测试设备B:

系统: Win10

内存: 16G

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

GPU: NVIDIA GeForce GTX 960M

测试场景:Level_01

分辨率:1920x1080

画质效果:Ultra & TAA

一、性能总览

1. 总体性能趋势

在特效全开的情况下,项目在设备A上可以跑到FPS均值36帧,而设备B上只能跑到均值19帧,且在运行过程中会有明显卡顿感,两次测试的FPS数据对比如下:

FPS Sample开源库测评 FPS Sample开源库测评 FPS Sample开源库测评

2. 渲染模块分析

上面已经提到FPS Sample使用了HDRP,因此我们在性能报告中,会特别关注渲染模块的耗时。究竟新的渲染管线在性能表现上,和传统的Built-in渲染管线有什么区别呢?

FPS Sample开源库测评

在CPU时间占用中,可以发现我们熟悉的Camera.Render不见了,取而代之的是RenderPipelineManager.DoRenderLoop_Internal这个方法,这里可以看到具体的裁剪、后处理、灯光效果、阴影等各个渲染模块的耗时情况。

同样,我们对比了在两个测试平台上的渲染耗时,可以看到在测试B中,由于渲染线程和GPU压力过大,WaitForPresent这一项非常高,比测试A的均值高了将近18ms,RenderPipelineManager的耗时也高了1.68ms。

FPS Sample开源库测评

3.逻辑代码分析

在FPS Sample中,主要的逻辑代码是Game.Update和Game.LateUpdate。两个方法在两次测试中的CPU耗时均值如下:

FPS Sample开源库测评

两次测试中,逻辑代码的耗时差距不大。查看Game.Update的耗时曲线和堆栈信息,可以看到有许多尖刺状的峰值,具体查看之后发现是由GC.Collect导致的。

FPS Sample开源库测评

其他如动画、物理等模块的CPU耗时比较常规,这里就不再多做分析了。之后我们会把这个项目的性能测试报告放到UWA官网上作为示例项目展示,感兴趣的朋友可以多关注一下。

快用 UWA Lab合辑 Mark好项目!

FPS Sample开源库测评

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

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


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

查看所有标签

猜你喜欢:

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

Building Social Web Applications

Building Social Web Applications

Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99

Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具