设为首页收藏本站

微软Hololens全息现实网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

一键登录:

查看: 1697|回复: 1

游戏优化之Shader中变量类型对性能的影响

[复制链接]
发表于 2016-7-6 22:43:44 | 显示全部楼层 |阅读模式

众所周知,Shader中代码的效率对整个游戏或者应用的性能起着至关重要的作用。如果在较为复杂的场景中使用了不够高效的Shader代码,会严重影响帧率。今天这篇文章将由Unity官方技术支持工程师用一个简单的实验来证明,如何通过改变变量类型来优化游戏或应用的性能。 测试截图: 测试信息 ...

众所周知,Shader中代码的效率对整个游戏或者应用的性能起着至关重要的作用。如果在较为复杂的场景中使用了不够高效的Shader代码,会严重影响帧率。今天这篇文章将由Unity官方技术支持工程师用一个简单的实验来证明,如何通过改变变量类型来优化游戏或应用的性能。


测试截图:
e5b900b41fb382ec80df51cf20ce992a.jpg


测试信息

测试对象:一个自建的简单场景,包含一个平面Plane,一个球体Sphere和一个长方体Cube。主摄像机围绕并朝向整个场景以恒定的角速度移动旋转。测试Shader:Guertin Motion Blur,详情请查看相关论文:http://graphics.cs.williams.edu/papers/MotionBlurHPG14/


曝光模式:恒定曝光时间

曝光时间:1/30 ms采样数目:每个像素10次采样最大模糊半径:5%测试平台:iPhone 6S测试API:Metal 首先,我们使用最初版本的Shader,所有Shader的操作方法中,变量均采用32位浮点数(float)类型进行计算。比如其中某个被调用的函数:


3a104009067f78fc055691dfbdae1448.jpg

最终的测试结果如下(平均每一帧耗时,单位毫秒):

测试样品1:20.10ms

测试样品2:20.74ms

测试样品3:20.60ms

测试样品平均值:20.48ms

最后一次测试的XCode的Profile截图如下:

22362130298f5cb596a4af57be9a40d5.jpg

然后,我们对最初版本的Shader做一些简单的修改以进行优化。这里将所有32位浮点数(float)更改成16位浮点数(half)。同样,上面的函数被修改成:


c5f3e7de041f6902d91b8283c4124347.jpg

下面是修改后的测试结果(平均每一帧耗时,单位毫秒):

·             测试样品1:16.58ms

·             测试样品2:15.72ms

·             测试样品3:16.32ms

·             测试杨萍平均值:16.21ms

最后一次测试XCode的Profile截图如下:

a6ecf2485ba01b78ea7bb2ecbbceb67b.jpg

通过以上对比测试,在我们的例子中,通过更改Shader中操作过程中的参数类型,可以得到20%以上的性能提升。 因此,我们可以得出以下结论:在渲染系统中,通过更改操作数的类型,可以有效提高代码运行效率。显然。这些提升,对于硬件并非十分强大的移动平台,将会带来不容忽视的性能优化。 这是因为,在大多移动平台上,GPU有对half操作数的优化支持,能够在足够精度的计算中,得到较为满意的效率提升。但是,half也不能随意乱用,我们一定要尽量减少不必要的类型转换,因为类型转换会耗费更多的GPU运行周期。例如:


875267e594fbf7ef6096e64ffd940966.jpg

综上所述,在移动平台的游戏开发过程中,我们应时刻警惕类型对性能的影响。根据自己的需要,运用足够精度的操作数类型,并减少不必要的类型转换。这样,我们的代码将会更高效,游戏也会更流畅。

(欢迎加入官方QQ讨论群433190386)

(Unity中文论坛)





上一篇:VR体验店这笔生意真有想象的好做?
下一篇:多伦多初创公司开发把手机变测谎仪的app
发表于 2016-7-6 22:48:32 | 显示全部楼层
好厉害好厉害呀
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

注册验证邮件查收提醒:

由于各大邮箱政策原因,

如果没收到邮件提醒,

您的注册验证邮件可能

被投送到您邮箱的垃圾箱,

请注意查收验证哦


QQ|小黑屋|Hololens全息现实网 ( 京ICP备15026232号   点击这里给我发消息

GMT+8, 2018-11-21 05:33 , Processed in 0.598647 second(s), 30 queries .

Powered by Hololens全息现实网 X3.2

© 2001-2017 Hololens全息现实网

快速回复 返回顶部 返回列表