是时候聊一下光线追踪了
消息来源:baojiabao.com 作者: 发布时间:2024-04-29
首先是声明:本文大部分源自我2013年在显卡吧发的帖子,部分内容参考MC
在3月19日的GDC大会上,微软正式公布了DirectX Raytracing(DirectX光线追踪,简称DXR)的新功能,整合进DX12 API,让图形硬件可以进行实时的光线追踪,而根据GDC上多家厂商的演示视频,相比现在的游戏画质,提升可以说是质变(下图)。
目前包括3Dmark、北极光、寒霜、SEED、虚幻4和Unity等引擎均已准备将DXR技术整合进自家引擎之中,NVIDIA也随着微软的脚步推出了RTX Technology,支持光线追踪。不过最低支持好像需要volta显卡,也就是目前的pascal无法支持(emm,这算是逼迫玩家换显卡吗?)。而AMD也于3月20日推出了他们家的光线追踪技术---ProRender,可见光线追踪时代到来已经是定局。
DXR的最终目的是用来取代目前的光栅化技术。不过就目前来说,它还不能做到这样,仅仅只能用作当前渲染技术的补充,因为硬件机能还远远不够。这也就是今天我们要聊的话题。
其实光线追踪早就不是什么新鲜的事物,它在电影制作中早已遍地开花。著名的阿凡达便是光线追踪渲染出的电影作品。而游戏上也不是首次应用,不过既然要聊光线追踪,那么我们就从光线追踪的原理说起。
P1:光线追踪的原理
大家在游戏中对游戏中水面相信并不陌生。目前见过最好的游戏水面也就是孤岛危机系列中的了吧?但是比起电影,比如刚刚说过的阿凡达。你会发现孤岛危机中的水面已经被秒的渣渣都不剩。这是因为,我们目前的游戏,都在使用光栅化算法。而在这些电影中,则采用的光线追踪算法。而我们经常看到的3DS Max、Maya等软件最终渲染出的图片,也是用光线追踪算法渲染的。因为光线追踪是用来模拟现实中光线的各种现象(比如折射,衍射,散射,反射,吸收等)以及传播过程,所以光线追踪可以渲染出我们肉眼无法分辨的场景(你看出来阿凡达所有场景是渲染的了吗?)
光线追踪是模拟的我们人眼看到可见光的过程(下图)。 它源自于几何光学通用技术,通过追踪光线与物体表面发生的各种交互(比如折射,反射),最终得到光走过的路径。简单打个比方,假设屏幕不是屏幕,而是一块玻璃,这块玻璃内构筑出一个“真实的”世界,只要找到这块玻璃内能透过人眼的光线,加以追踪就能构建出完整的3D画面。
既然光线追踪这么好,那么为什么不用它呢?因为光线追踪非常的吃资源。所以目前游戏基本都以光栅化渲染为主。因为光栅化只需要计算数学模型到屏幕上的过程,所以光栅化有着很高的效率,而对游戏来说,每秒钟24帧以上的计算量是保证游戏性的前提,所以高效率的光栅化取代了光线追踪成为了3D游戏渲染的主力。而它的缺点也很明显,因为它无法计算真实的光线路径,所以很多地方会失真,比如下图中的远哭1.
光线追踪算法分为两种:正向追踪算法和反向追踪算法。其中,正向追踪是大自然的光线追踪方式,即由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼的过程。反向追踪则是观察者的角度出发,只追踪那些观察者所能看见的表面投射光。正因为这个特点,所以目前主流的光线追踪都是反向追踪,因为这样足够,而且可以大幅度的节省计算机本身的资源。
P2:光线追踪如何工作?
对我们的生活而言,常见的光现象无非折射,反射,吸收这三种。一束光经过各种反射,吸收,改变了光原本的光谱,而改变之后的光再经过多次的反射,吸收等过程,最终进入我们的眼睛,这就是光线追踪要做的事情。
那么说了光线追踪的工作过程,那么就让我们来看看实际应用吧。在实际应用中,根据使用者的设置,光线追踪会赋予每个像素点几条到几十条不等的光线,在场景内传播,而因为场景内的物体已经早已被开发者赋予好了各种属性,光线经过这些物体之后会发生各种改变,最终呈现在屏幕上。但是这么做会出现一个问题,因为有些光线并不是我们所能看到的,这时候计算它就会造成不必要的性能浪费,所以就有了反向追踪。所以反向追踪算法中,光线会被分类,假设这条光是不可见光,系统就会自动抛弃掉整个光路,如果可见,就开始计算,最终得出画面。下图就是一张早已被广泛传播的光线追踪作品。
P3:实际应用?
熟悉intel的肯定不会忘记Larrabee,这是intel曾经计划推出的独立显卡。而这个项目主要负责人Daniel Pohl曾经在2004年用光线追踪技术重做过雷神之锤3。这是因为这款游戏的母公司idsoftware开源了该游戏。而且给雷神之锤3增加光线追踪技术很简单,只需要10行左右的代码就可以完成。下图就是用光线追踪技术的雷神之锤3,这水面,你能相信这是一款2001年的游戏?也正是因为这件事,Daniel Pohl被intel看上并招入公司。而Larrabee也曾经被intel寄予厚望,因为Larrabee是源于CPU架构,所以特别适合用作光线追踪计算,但是各种原因让Larrabee一度折戟,至今也没有什么起色,而就目前而言,说intel已经完全放弃了Larrabee估计也没人有不同意见。
P4:未来
为什么光线追踪不能成为主流?无非就是计算量过大,哪怕是反向追踪算法也不行。在光线追踪版的雷神之锤3中,Daniel动用了20颗Athlon XP 1800+CPU集群,以及一块自己设计的FPGA,时钟为90MHz,支持光线追踪技术,性能相当于P4 12GHz的显卡。才在512x512分辨率,4xFSAA下跑到20fps。
而根据intel当年的说法,要达到可以流畅运行游戏的程度以及当年的游戏画质,需要计算大约10亿束光线,那么这个10亿束是怎么来的呢?假设每个像素点30束光线,那么在1024*768分辨率下一共有786432个像素点,每秒达到60fps,最终结果就是786432*60*30=14.1亿,这个数字已经相当恐怖了,而且用的还是过时的1024*768分辨率。要知道在当年旗舰是i7 3970X,每秒能计算的数量也就1000万条左右,离需要的数值还差十万八千里,所以我们只能寄希望于显卡来完成这个工作。而且光线追踪的恐怖计算量下需要大量的显存,即便是目前的泰坦V估计也会出现显存不足的情况。而下图分别是由光栅化渲染的玉龙和光线追踪的玉龙,可见其差别。
时隔多年,我们终于看到微软把光线追踪技术加到了自家的DirectX引擎中,而随着NV和AMD的跟进,可以猜到大概是光线追踪技术已经成熟,期待未来光线追踪技术能给我们的游戏体验带来质变。
如果你喜欢这篇文章,
欢迎点个赞,
在下面留言,
或者关注电脑吧评测室微信公众号,自媒体平台
也可以关注B站@翼王,为翼王投币,充电!
相关文章
- 中兴受美国制裁事件 被罚了20亿美元过程事件始末 中兴被制裁后公司现状
2023-11-02 22:12:46
- B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因
2023-03-06 19:05:55
- 苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓
2023-02-19 15:09:54
- 华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?
2023-02-17 23:21:27
- google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元
2023-02-17 18:58:09
- 科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯
2023-02-17 18:46:15
- 华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比
2023-02-17 18:42:49
- 小米MAX4手机上市日期首发价格 骁龙720打造大屏标准
2023-02-17 18:37:22
- 武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱
2023-02-16 15:53:18
- 谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠
2023-02-16 13:34:45
- 巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注
2023-02-13 16:49:06
- 人手不足 韵达快递客服回应大量包裹派送异常没有收到
2023-02-07 15:25:20
- 资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东
2023-02-02 09:24:38
- 三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办
2023-01-24 10:10:02
- 华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone14
2023-01-06 20:27:09
- 芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?
2022-12-02 17:25:17
- 华为暂缓招聘停止社招了吗?官方回应来了
2022-11-19 11:53:50
- 热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全
2022-11-16 16:59:09
- 东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?
2022-10-22 15:21:55
- 苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次
2022-10-03 22:13:45