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开源库测评

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

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


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

查看所有标签

猜你喜欢:

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

C和C++代码精粹

C和C++代码精粹

阿林森 / 董慧颖 / 人民邮电出版社 / 2003-4-1 / 59.00

《C和C++代码精粹》基于作者备受好评的C/C++ User Journal杂志上的每月专栏,通过大量完全符合ISO标准C++的程序集合,说明了C++真正强大的威力,是C和C++职业程序员的实践指南。可以帮助有一定经验的C和C++程序员深入学习这两种密切相关的语言,对书中代码的参悟和应用,可以帮助他们从根本上提高使用程序的效率。一起来看看 《C和C++代码精粹》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具