steam吧 关注:4,566,533贴子:71,412,088
  • 2回复贴,共1

关于DLSS等超级采样的一点科普

只看楼主收藏回复

倒也不是多认真的科普,我也不是技术人员,科普内容来自以前看到的解释,凭记忆还原,若有不对,希望大家斧正。
顺带一提,之前在其他贴子下留言了,但打了这么多次字,还是单开贴子吧,多少赚点经验()
正文:
简单来说,一张图象由无数的像素组成,假设我要显示60帧的高山流水图,那么游戏会在16.67ms内绘制出一张图,其中GPU是负责给像素「上色」的画家。
一张1080p的画面总共有2,073,600个像素,这是上个世代主流的分辨率,但在现世代,这个标准被提高到了2160p,也就是4k。
4K的像素相较上世代有着大幅度的增长,一幅画像足有8,294,400个像素,是上世代的4倍,每个像素都需要GPU去计算像素该有的颜色,在其他条件不变的情况下,意味着GPU的性能要增加4倍!
以ps4为例,GPU的浮点运算有2Tflops,那么ps5的性能是多少呢?是10Tflops上下,也就涨了五倍而已。
很明显,光是提升分辨率,就快把性能给吃光了,哪来的馀量给你提升画面?
因此,开发者们想出来一个办法:我们不要跑满4K,只跑个1440p如何?
实际上,ps5上不少游戏确实是以1440p为目标运行,但这些游戏不会明白的告诉你,相反,他们宣称这是个4k游戏,你在电视机上看到的画面是4k而不是游戏内部实际运行的1440p。
这,就要讲到现代游戏的一大重点,超级采样技术,也就是fsr、DLSS(还有Xess()
回到文章开头的假设,但现在我要运行2160p的高山流水图,但我并没有升级我的GPU,仍使用我那张可以每16.67ms绘制一张1080p图像的GPU。
通常来讲,由于像素数量的暴增,我的GPU需要更多的时间才能绘制一张4k图像,按照简单的数学计算,每生成一张1080p需要16.67ms,我将像素翻了四倍,那么需要66.68ms才能生成一张2160p的画面。
最终,我那张能60帧运行1080p高山流水图的GPU,拿去运行2160p,只能有15帧。
30帧尚且无法忍受,更何况15帧?
于是,超级采样出现了。
「既然我们能运行60帧的1080p,那我们就想个办法,让1080p看上去和4k一样!」
面对四倍的像素差,开发者研究了一下,觉得现有的渲染技术可以改善一下。
首先,一秒钟绘制60帧同样的画面太浪费了,画面静止不变时,GPU仍要每秒绘制60张同样的图像,效率太低了。
很多时候,画面整体变化不大,只有那么几个物件有动作变化,GPU仍要抛弃之前已经画好的像素,重新画一遍。
因此,开发者设计了几条规则,其中重要的是下面两项:
1. 已经画好的像素,若是场景不变,不需要重新绘制。
2. 实时接收游戏引擎给予的运动矢量,若是有物件变动,会根据矢量判断,哪些像素保持不变,哪些像素要重新绘制。
3. GPU将会以1080p(或其他分辨率)的绘制图像,但不会画完就丢,而是将上一张画好的图像,与下一张新图像结合,拼成一张完整的4k画面。
有了这三条规则,GPU不需要绘制同样的像素,大幅降低GPU的压力。
我们在重新看回刚才的假设,用只能1080p60帧的GPU,去运行4k的高山流水图,既然画面整体静止,只有水面流动的话,首先GPU会以1080p的形式画出一部分,等到4帧过后,就会有一张完整的4k图像。
然后,GPU根据引擎给予的运动矢量,将因为运动的物件而产生的新帧和旧帧结合,判断哪些像素该丢掉,那些像素会保留继续使用,以及新帧与旧帧像素之间冲突的地方该怎么修复。
这就是超级采样的技术原理,fsr、DLSS其实是一回事,区别在于,DLSS是由人工智能判断哪些像素该保留、修复,而fsr是看开发者自己写的代码。
透过原理,我们也可以知道,超级采样并不是什么帧率提升器,正相反,它其实是「画质提升器」,是用来提升画面观感的,并且,和其他类似的画质选项,它是会消耗性能的。


IP属地:中国台湾来自Android客户端1楼2024-08-14 00:59回复
    其实就是超分辨率的帧数提升来自于降低渲染分辨率,一升一降赚了差值。所以dlaa是比原生分辨率还要消耗性能。


    IP属地:上海来自Android客户端2楼2024-08-14 13:59
    收起回复