首页 常见问题文章正文

一帧等于多少秒,游戏一帧等于多少秒

常见问题 2022年11月11日 23:16 156 admin
理财顾问联系方式

是这样的,之前练习群里的群友做了一个动画,使用的渲染器是redshift2.6.41,渲染的时候很慢,单帧渲染时长1小时:

后来动画终于渲染完了,然后我大概看了一下视频中的场景,我觉得也不应该这么慢呀,以这个速度用于工作中我觉得可能不太实际。

原作者的显卡是1060,虽然渲染的快慢和显卡的好坏也有着必然的联系,因此我找作者要到了原工程,打算研究一下原因:

最后在经过一系列的采样以及场景的优化之后,让渲染的速度提高了4-5倍,我觉得这个例子挺典型的,特别对于许多刚开始做动画的鹿友应该会有帮助。

所以在征得原作者同意的情况下写了这篇文章,这里感谢作者@鹏哥提供工程文件用于测试讲解,该视频的B站的BV号是:BV1ei4y1o722,感兴趣的鹿友可以看一下:

然后今天的内容除了分享对采样以及场景的优化以外,还会针对三个型号的显卡渲染速度进行评测对比,分别是我自己的显卡1070以及苦七的两个显卡2080ti和3090。

另外由于3090不支持redshift2.6.41,所以3090测试的时候是用的demo版3.0.45也没有改色彩空间那些,但是我觉得这个对测试渲染速度影响不大。

01

采样计算原理

在开始进行采样优化之前,我觉得还是需要说明一下redshift的采样原理,这个很重要。

我自己以前也是从官方帮助文档以及各种教程中学习的,加上了一些自己的理解,其实它是一个比较大的话题,我这里尽量用简单易懂的描述说明一下。

redshift的的采样主要分为首次采样和次级采样,它们的作用其实是不同的,首次采样也就是我们在渲染设置里看到的统一采样,它其实就是摄像机光线,这些光线主要用于处理抗锯齿、景深、运动模糊、模型以及贴图的细节。

它的数值代表着摄像机光线的数量,而redshift本身是具有自适应采样,这个由自适应错误阈值来控制。

例如默认参数最小采样4,最大采样16,代表着摄像机至少发出4条,最多发出16条光线来处理前面我们说的锯齿以及景深等信息。

而具体什么时候需要4条,什么时候需要更多的光线则由这个数值0.01的参数决定。

自适应错误阈值数值越小,容错率越低,代表着稍微有一点噪点信息它都会发射更多的光线来处理,渲染时间自然也就越长:

接下来我们再说说次级采样,也就是我平常说的本地采样,它主要用于处理灯光、GI、反射、折射等等信息。

由于redshift的可控性很高,这些本地采样可以通过每个不同的材质或者灯光进行单独设置:

而GI中蛮力模式的采样可以通过渲染设置中GI光线数量来设置:

除此之外,也有一种懒人模式,就是通过渲染设置中的采样覆盖来对场景中的本地采样进行统一设置:

对于本地采样的光线数量它并不是简单的参数设置,这里会有一个计算公式:

本地采样/最大统一采样=本地采样的光线数量

例如默认参数统一采样最小4,最大16,然后我这里把采样覆盖里的反射采样数值改成32,反射本地采样32/最大统一采样16=2,代表着每1条本地采样发出的摄像机光线,都会另外产生2条采样光线用于处理反射的信息。

同时本地采样也同样具有自适应采样的属性,因此它同样受到自适应错误阈值数值的控制对场景里的反射信息最少采样4次,最多采样16次,但注意,这里的每次采样,反射的光线是2条:

除此之外还有一个注意事项,由于本地采样的计算公式是本地采样/最大统一采样,因此当本地采样的数值设置低于最大统一采样时,除完以后的数值小于1,那么redshift会默认这个光线数量就是1。

例如同样默认参数统一采样最小4,最大16,如果我将反射本地采样设置为8,那么8/16=0.5,这个这个值小于1就会被渲染器默认为是1条光线:

并且我看到晚上有一种说法,这种低于1被渲染器默认为1的设置会导致自适应采样失效从而增加渲染时间。

也就是说同样是统一采样最小4,最大16,反射本地采样的数值设置为8或者16,它们实际计算的反射光线数量都是1条,但是由于数值设置为8的时候会导致自适应采样失效,所以设置为8的时候渲染时间会比16要长。

然而经过我多次测试,这一点好像并不绝对,这个等我们后面实际做采样优化的时候再说:

02

如何设置采样

把原理说清楚了,我们才好进一步说明应该如何设置采样。

首先大前提大家还是需要了解,采样参数的设置不是一定的,你需要在提高采样参数的同时去考虑提高参数以后从而增加的渲染时间成本,你需要在两者之间需求平衡。

其次既然我们知道了统一采样主要处理的抗锯齿、景深、运动模糊等信息,因此当我们的场景中没有景深或者运动模糊的话,最大采样的数值完全可以不用设置得很高。

我这里用前面的水池烟雾工程作为说明,例如我这个场景中打开了GI,然后主要的通道信息是反射、折射、灯光以及体积雾:

可以先打开显示采样查看一下,场景中大部分过曝的白色代表着采样不够:

然后视情况逐渐提高数值,参数按照2的N次方来调整,例如最大是16,那么接下来就是32、64、128以此类推。

直到整体模型等信息能够显现出来,其他还有过曝的白色则需要通过提高本地采样来调整:

当参数为128的时候,已经能够应付大部分的场景了,256基本就算是比较高的数值了,一般我的统一采样不会超过512。

接下来再调整最小采样,这个数值一般8-16就足够了,让最大和最小采样差别不要那么大否则可能会导致自适应采样出错:

当统一采样确定下来以后,其他本地采样就简单了,我常用的方法就是使用多通道来观察,场景里有哪些通道就把哪些通道扔进来。

由于上面我们提到的计算公式的原因,所以本地采样数值起底就是最大采样的数值,然后再同样视情况按照2的N次方来提高参数。

例如我这里由于最大采样的数值是256,所以所有的本地采样都256起:

如果你觉得某个通道还有些噪点的话,就在该本地采样的参数上调整就行了,例如我这里256感觉GI还有点噪点,那就提高到512:

其他通道也是一个道理,仅在你觉得还需要再降低噪点的通道上增加本地采样就好了,不过我通常没弄的那么细致,都是将场景中有的通道本地采样设置为一样。

并且有的时候你会发现提高本地采样,适当降低最大统一采样会更干净更有效率,这就是由于本地采样计算公式的原因:

除此之外,如果你对图片要求比较高的话,可以尝试降低自适应错误阈值的参数,比如0.005或者0.003,但是这样渲染时间会增加。

一帧等于多少秒,游戏一帧等于多少秒

反过来如果提高这个数值也可以节约渲染时间,例如0.015或0.02,具体多少看自己能够接受多少的噪点吧。

特别是渲染动画,其实很多时候真没必要给到太高的精度,我这里把自适应错误阈值提高到了0.02,要非常仔细才能看出噪点的区别,但是速度却提升了很多:

03

渲染优化

接下来我们再回到前面说的渲染优化的问题吧,首先试一下1070渲染了多长时间吧:

接近40分钟一帧,离谱,我们看看采样的参数设置方面有没有问题吧。

这里作者统一采样最小是64,最大128,其他所有本地采样均没有打开覆盖,也就是默认每种本地采样只有一条光线:

首先让我们试试本地采样数值如果低于最大统一采样是否会影响渲染速度吧。

我这里就直接用预览里面的来测试一下速度了,可以看到现在预览的时间其实都很慢。

当我激活了覆盖,把所有本地采样都给到128以后,这个时间反而慢了5秒钟:

其实这一点上确实有点迷,我之前在测试的时候,将本地采样给到128以后,确实是快了一些的,不知道为什么时灵时不灵,为了保持统一,我们还是都覆盖上吧。

然后原作者的最低采样给到了64,我觉得有点偏高,给到8就好了,测试了一下速度提升1秒几乎可以忽略,目前这些调整是几乎和原图没有区别的:

然后我这里把自适应错误阈值给到了0.02,可以看到现在的速度有了明显的提升。

虽然放大看会有些许噪点,但是我觉得这是完全可以接受的范围,特别是对一个动画来说:

至此目前采样来说我觉得已经没有什么可以优化的了,不能再降了,可能我们还是要考虑从场景优化入手。

我们观察一下场景吧,发现作者用实例克隆了很多个灯光:

除此之外,顶部还有一个面光源,一个HDR环境光,还有一个用于营造光影的面光源,这样加上克隆的灯光总共就是23盏灯:

再加上本身主体是4个玻璃材质,玻璃材质中又有气泡那些透明材质,我想渲染时间长估计原因就在这里了。

因此我首先尝试减少灯光,关掉了克隆的灯光,只在主体的背部给一盏灯,然后左右各一盏灯,并且顶部的面光源也关掉,可以看到,渲染时间大幅度减少:

虽然高光的细节可能会和原作者的不同,但是多调整一下应该也能打出不错的效果来。

其次我发现作者其中有一个材质球是一个玻璃材质混合了sss材质,这个材质我感觉在这个场景中过于复杂了,因为本身动画其实也看不出太大的区别。

于是我又将材质球调整成就一个普通的sss材质,渲染速度再一次提升:

最后我在渲染设置里,把反射及折射的次数改到了12,因为我观察到12和16的区别的影响其实并不大:

渲染一个完整的尺寸看看渲染时间吧:

最终渲染的时间变成了不到9分钟一帧,我这里把原参数的渲染图以及速度提升后的渲染图也发出来大家可以看看区别哈

原参数渲染图

调整后渲染图

虽然高光或者很多细节可能会不一样,但是相比于原来的40分钟一帧,这个渲染速度的提升可不是一个量级的啊!

总结一下,算是我这次测试的一些心得吧:首先场景优化非常重要。

材质方面如果不是必要的就不用加太多细节,特别是动画,很多细节本来就看不出来或者一晃而过,一味的增加细节可能会白白浪费掉很多时间。

然后就是灯光方面,我们也不要一个劲的猛补灯光,可以尝试在较少灯光的情况下打出更满意的效果。

最后就是采样的优化了,例如这个场景中,我们还没有去优化纹理贴图等,如果在场景优化满足的前提下,我们完全可以通过合理的采样设置渲出更高质量的图,并且也不会增加很多渲染时间。

04

显卡渲染时长对比

最后的最后,这个其实是苦七建议的,可以顺便做一个显卡渲染时长的对比供大家参考性价比。

显卡1070,无新卡,京东拍拍价格我查到的最低2100元,原参数渲染时间39:19:

参数调整后渲染时间08:49:

显卡2080ti,无新卡,京东拍拍价格我看平均在5K-7K的都有,我不懂配置哈,大家自己参考吧,原参数渲染时间19:47:

参数调整后渲染时间04:56:

显卡3090,新卡京东价格我查了一下便宜的也要1.8W。。。原参数渲染时间11:11:

参数调整后渲染时间03:28:

确实都有不少提升哈,不过3090的价格就贵了很多,嘛~反正我也不懂这些,测出来写出来供大家参考吧,下面是今天的视频版:

好啦,今天的分享就到这里,想要原视频的鹿友后台撩我获取吧!

更多内容欢迎关注公众号:

本文由“野鹿志”发布

转载前请联系马鹿野郎

一帧等于多少秒,游戏一帧等于多少秒

私转必究

标签: 一帧等于多少秒

发表评论

鑫投网 如有事宜请发送到:1004834228@qq.com