从一个骗人的技术说起光线追踪——光影技术的里程碑

一般来说,我们总是喜欢把光线追踪和另一个概念:光栅化,作为相对的两个概念。因为二者在游戏画面展现上的差距有着天渊之别。

光栅化技术有非常明显的缺陷,因为它是一个骗人的技术。

那什么是光栅化?

在过去,计算机硬件的运算速度是不够快的,不能实时使用这些技术。CG制作都是需要在离线渲染的渲染农场里把一个个单帧渲染出来,然后在脱机播放。

到目前为止,大多数的所谓的实时图形都是依赖于一种技术:光栅化。

实时计算长期以来都使用的是“光栅化”,这个技术是在二维屏幕上显示三维物体。 它的优点就是速度快,效果也还尽人如意。通过光栅化,可以从虚拟的三角形网格或多边形创建屏幕上的物体,也就是建模。在这个虚拟网格中,每个三角形的顶点与不同大小和形状的其他三角形的顶点相交。很多信息与每个顶点相关联,包括物体在空间中的位置,以及有关颜色,纹理及其“正常”的信息,这些信息用于确定物体表面的方式。

电脑然后将3D模型的三角形转换为2D屏幕上的像素或点。在三角定点的数据中为每个像素分配一个初始颜色值。在接下来就是像素的进一步处理过程或着色,其中包括场景中的光线如何撞击像素改变颜色,以及如何将一个或多个纹理应用在像素上,继而组合生成应用于像素上的最终颜色。说起来可能感觉很简单,但这是一个相当密集型的计算过程。场景中有数百万个多边形用于所有物体模型,并且在4K的显示器上大约有800万个像素。这也意味着屏幕上显示的每一帧图像每秒需要刷新30到90次。

此外,内存缓冲区用于即将在屏幕上显示的预先渲染帧。深度或“Z缓冲区”用于存储像素的深度信息,以保证像素的x-y屏幕位置上最前面的物体显示在屏幕上。并且最前面物体后面的物体要保持隐藏状态。这就是一直以来为什么实时渲染需要依靠强大GPU的原因。

光线追踪是什么?

与光栅化渲染不一样的是,光线追踪把一个场景的渲染任务拆分成了从摄像机出发的若干条光线对场景的影响,这些光线彼此不知道对方,但却知道整个场景的信息。每条光线会和场景并行地求交,根据交点位置获取表面的材质、纹理等信息,并结合光源信息计算光照。

一个典型的光线追踪场景:
在这里插入图片描述
光线追踪并不是新技术。事实上,它几乎和最早的3D计算机图形技术一同出现。

1968年,Arthur Appel在其论文《 Some techniques for shading machine rendering of solids》提出Ray Casting(光线投射)的新概念,这也是后来光线追踪的基石。

1969年就任于IBM的Arthur Appel在《Some Techniques for Shading Machine Renderings of Solids》论文中首次提出Ray Tracing(光线追踪)。

英伟达RTX光线追踪

标准化的光线追踪(raytracing)是以光源为起点定义光线,进而追踪由此产生的光线与物体表面以及光线与光线之间交互关系的过程。但该技术目前实现起来非常困难,因为这一技术需要无限多的光线照射在物体表面,通过反射、折射、漫射等途径进入最终的“摄像机”成像。这一过程需要耗费大量的算力(当前PC的计算能力无法做到)且会有大量光线损失,最近NVIDIA推出的RTX 20系显卡包括现在绝大多数光线追踪技术采用的都是逆向思维,即以“摄像机”镜头为出发点,反向回溯光线并通过这些光线寻找光源。

可以理解为RTX的光线追踪是人为定义了射入摄像机的光线总量,通过回溯这些光线反射后以寻找光源,每一个交汇结果都可以被作为是回溯过程中招惹到的光源所发射的光线与物体作用的结果,找不到就丢弃。

这样做的好处在于光线关系的起点是摄像机,这就造成光线关系与场景可视的几何信息存在高度的关联性和可遍历性,也就是所有进入不了视野的光线都将被认为的剔除。

另外,光线的实际范围被约束在了可视场景内,方便光线在回溯过程中的排序以及遍历,光线的处理过程既可以跟shader过程结合,也可以透过direct compute单独拿出来做独立数学步骤,就像deferred shading一样。

这样做会极大的加速整个追踪和交汇检查过程的效率,我们可以看做是手解高阶方程与使用计算机处理的差别。在这里插入图片描述

当然,他的缺点也是不容忽视的,比如这类实时光线追踪并不是从光源出发,而是从视角的角度出发,无法做到对真实的光线进行真实的遍历,人为规定了光线的数量以回溯光线的过程,也就意味着整个过程脱离不开人为定义,错误的干扰依旧是不精确甚至错误的主要原因。但总的来说,实时光线追踪技术可以让玩家体验到更加真实的游戏场景,光线决定了物体表现的最终纹理,在体验游戏真实性上是一次巨大的技术革新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值