光照 光线 图形学 游戏 反弹 物体 像素 反射 方程 距离 光源 材质 全局光照 表面缓存 光线追踪 实时全局 图形显卡 传统辐射
计算机图形学
好在 UE 5 已经开源,一个叫从月的腾讯游戏工程师写了一系列源码解析。不过就算是解析也是这样的解析,不禁让人担忧起这个专业学生学习时的精神状态。好在也不是完全没收获。文中一个词反复出现,全局光照虚幻。官方的介绍里也出现了网上的介绍,五花八门,但大致可以知道这是一种能让游戏画面更逼真的技术。其实在我的印象里,游戏和真实似乎就没挂上过。边记里唯一一次画质的飞跃,是 2007 年轰动一时的显卡危机。不是显卡真的出了什么危机,而是一款叫孤岛危机的游戏发布,因其对显卡配置的变态要求火出了圈。而相应的是他震惊整个行业的画面表现,真实细腻的体积光和动态循环的日夜与树叶实时交互的阴影。简单一查,果然,实现这些效果的关键正是全局光照。到底什么是全局光照?光源射出的光线打到物体后还可以反弹照亮整个场景。一开始我纳闷许久,正常不就应该这样吗?有什么牛逼的。后来才知道,想真正理解他的意义,需要先理解过去那个时代。
1962 年,一篇名为 sketch pad,一个人机交互通信的图形系统的博士论文开创了计算机图形学。很快,人们就能用多边形模拟三维物体,还能创建阴影让其显示立体感。短短 10 年,一条完整的虚拟短片就出现在一幕了。
Hi, guess where i came from a computer me and my hat and everything else Youre Gonna see. In this Phil.
这是怎么实现的?现实中,光源发出光线打到物体,再反弹给眼睛,我们才看见了世界。 CG 世界也是一样,需要有个光源发出光线照亮场景,场景是一个个由三角面组成的模型,面越多,模型越精致。这时还需要个摄像机,摄像机前方是一个屏幕,将模型投射到像素,就得到了一张图像,这就是渲染。投射过程从左到右,从上到下一行,如窗户、栅栏。因此这种渲染方式被叫做光栅化渲染。那是图形学的拓荒时代,人们脑洞大开,创造了许多至今仍在沿用的技术,比如 grow 的差值,能让棱角突出的模型看起来光滑流畅,又或者纹理映射,也就是大家俗称的贴图,让模型具备了现实的纹理。他们体现了早期研究者天马行空的想象力,却无法解答困扰了人们整个 70 年代的难题,画面怎么才能更逼真?渲染是光的艺术,画面讲一定是光出了问题,可光能有什么问题?问题还真的很大,但是它光线没有单位,只能用一个模糊的强度量,最开始强度是1,被物体反弹后会衰减多少由材质决定。材质模型是 70 年代的瞩目成就,比如经典的 Lambart 材质公式长这样, i 是入射光, Theta 是反射面,和入射光的角度不同点处角度不一样,反射光强度也不一样,所以模拟就有了立体感。除了这种粗糙表面的漫反射,还有模拟金属的缝材质,以及后续的升级版不令缝。但无论怎么优化,他们都是人为。假设的经验公式,最后的计算结果肯定不会百分百准确。康奈尔大学的 Goro 等人认为,想要生成逼真图像,必须模拟光在场景中传播时的物理行为,而光的强度和分布又由能量传说和守恒原理决定。于是在 1984 年的一篇论文中,人们摒弃人为假设,瞄上一个 50 年代做工程热计算的学科,辐射度量学、图音学的光照,这才有了一个真实而准确的度量。
渲染方程
2012 年的 c graph 大会上,一个叫吉姆卡吉亚的科学家被授予了图形学里知名的 Stephen 安森库兹奖,表彰的是 26 年前的一篇论文。吉姆卡吉亚老爷子曾问过这样一个问题,你的论文够刺激吗?他有可能为图形学的研究开辟一个崭新的方向吗?他们会系统阅读你的论文并说,是的,我一直想实现这样的东西,现在我知道该怎么做了吗?这个要求对现在的研究生可能过高,他却是卡基亚 1986 年那篇横空出世的论文。最好的注脚渲染方程是这样一个可怕的方程,但狰狞外表下是纯狰的内核。卡吉亚早已受够了想当然的假设模型所有。两年前 Goro 将辐射度引入图形学后,他欣喜若狂,仍然从辐射度量学出发。一番推导后,会得到这样一个公式,反射光的辐射能量由入射光这样求得。这个 f 叫 b r d f 双向反射分布函数,其实就代表光线反弹后衰减了多少。乍一看,这公式和过去的材质模型似乎没区别,但它基于真实的物理情况推导得出,所以其计算结果也就是这条反射光是否准确,只取决于两点,一是物体的BRD, F2 是入射光。 BRD f 可看作各种材质的量化统一,过去的 Lambda 和 phone 都可以纳入其中,但如今更流行的是 PBR 材质,基于物理的模型,这种材质的b,r, d f 要么实验测算,要么经验统计或是套用真实存在的物理公式,目前已经可以做到极为写实。比如菲尼尔反射,基于 1823 年的菲尼尔公式,提出可以模拟湖水在不同角度的折射和反射效果,或是次表面散射,俗称 SS 材质,可以表现皮肤蜡烛等物体在背光时的半透效果。今年大热的三体动画就因人物普遍未采用 SS 材质而饱受诟病。现在反射光是否真实的关键就只剩入射光。但入射光怎么确定?仔细回忆现实,如果场景足够复杂,它会从四面 8 方向物体反弹光线,也就是半球空间的所有方向都应该有入射光,打过来用对方向角的积分表示。公式写成这样被叫做反射方程。那场景反弹过来的这些光怎么确定?任取一条入射光,会发现它也由上一个反射点处整个半球空间所有方向的入射光决定。反射方程是这样,一直往上追溯入射光,整个场景环环相扣,成像所需的反射光是无数个反射方程之和,用积分表示就是这样。最后考虑到会发光的物体,就能得到这样一个描述场景内各点照明情况的方程。这就是大名鼎鼎的渲染方程。渲染方程满足能量守恒,是图形真实感的数学描述。他在 1986 年的提出宣告着图形学的蛮荒时代的终结,也为后人的研究指明了方向。想获得真实的光照就求解炫,而方程问题就是怎么求两边都有未知数,似乎没法求。这样对它做一番数学变换,写成这种离散的代数形式有无穷项。左边第一项仍然是自发光项,第2项表示从光源出发后直接打到物体的所有光线,人们叫它直接光。后面的像表示从光源出发后被其他物体反弹过来的光,叫间接光。这项表示所有只反弹一次的光,这项表示了反弹两次,三次。理论上有的光应该反弹了无数次,直到能量损耗为0。当直接光和间接光共同照亮场景,就是所谓的全局光照。现实世界都是全局光照,比如盒子印出墙壁的渐变色泽,复杂场景里的细腻反光,或是太阳照不到的地方,不至于漆黑一片?一个早期研究者的解释很形象,你可以对反射进行反射,这就是全局光照。所以你会发现,全局光照的本质其实就是用离散的方式逼近渲染方程。传统的光栅化渲染只有直接光源,照不到的地方漆黑一片,只能手动补光模拟,但补光的引入打破了能量守恒,呈现效果依赖灯光师的水平。全局光照的意义在于它用物理法则部分消除了真实感血染的主观性,它是在实打实的模拟现实,这就是他让画面更逼真的原因。凭借出色的画质表现,全球光照诞生后不久就被应用于电影领域,并很快引发了 CG 特效的革命。一个个绚丽世界出现在荧幕,如梦如幻,前所未见。
图形学的圣杯
搞懂全局光照后,我们终于可以回到主线,看看Lumen都干了什么。几乎所有资料都明确指向一个词,实时全局光照。字面意义,实时的实现全局光照效果。你玩游戏时的每一帧画面都是全局光照。几十年来,实时全局光照一直被奉为图形学领域的圣杯。实时怎么这么难?答案就在渲染方程里,它是无限向的组合,想要逼真,必须实现非常多的间接光反弹,无限次数的反弹。这类技术最典型的代表当属光线追踪,图形学领域最出名的全球光道技术。它诞生于 1980 年,在 1986 年被卡吉亚优化后,算法变成了这样,光线从光源射出,碰到物体,随机反弹,多次反弹后进入摄像机形成一条光路,像素值由此时的光线决定。不过光源发出的光线大多不会进入摄像机,对成像没帮助,只会浪费算力。所以实际操作会从像素发生光线多次反弹后找到光源。由于光路可逆,就可以等价成光源发出光线,摄像机接收。而为了呈现效果更好,通常会让每个像素发射多根光线。像素值是各光线数据的汇总,像素发射的光线越多,光线反弹的越多,蓄尔方城就更可能逼近。如果能实现无限次反弹,不像就能百分百准确。
可以做到一种真实感。什么真实感?照片级真实感.然而反弹次数能决定画质,却也会制约性能。计算机判定每条光线被哪个三角形反弹,只能靠计算,它会先求出光线和三角形的焦点,再判断焦点是否在三角形内,如果不在,说明光线不是被它反弹的。接着再让光线和第二个三角形做计算,如果还不在,就和第三个三角形计算,然后是第四个,第五个,只是找到焦点在内部的那个三角形。这样一个场景要进行的计算次数就是像素数量,乘上每像素发射的光线,乘上三角形的数量,乘上光线反弹的次数,天文数字。所以有个老笑话是这样说的,光线追踪是未来的技术,并且永远都是。正因如此,才有了好莱坞特效的渲染慢,各种夸张势力, i am not fast。比如创造陆战队,迪士尼动用了高达 55000 盒的算力,但一帧画面也要耗费几十个小时,而维塔工作室制作阿卡利时机房散发的热量甚至改变了新西兰的当地气温。电影如此游戏怎么办?一款每秒刷新 60 帧画面的游戏,每帧只有不到 17 毫秒的生成时间,如果渲染不及时就会这样。
这就是实时全局光照被封为圣杯的原因,在极其有限的时间里完成天文数字般的计算。去年 c graph 图形学年会上,一个叫丹尼尔 right 的开发者具象了实时光线追踪的困难。高质量光照所要求的光线是每像素发射几百根,那我们目前的游戏算力能承受多少?每像素一根光线都做不到。有意思的是,这个 Daniel right 正是 Lumen 的三明主张之一。
而回看虚幻官网介绍,李泽清清楚楚写着:Lumen是一个全动态的全局光照系统,它实现了光线的无限次反弹,这就是Lumen的牛逼之处,它是怎么做到的?
距离场
前面我们讲到光线追踪,主要就慢在判断光线和三角形是否相交。在 Luman 里,人们引入了一个概念解决这个问题。距离场取场景中的一个位置点,计算点到离这个点最近的物体的距离,再把这个距离数据存起来。比如这个点离它最近的是这个三角形,距离是1,离这个点最近的是它,距离是3。最后我们就得到了一个距离数值的集合,这就是距离场。为了判断一条光线和谁相交,这样做光线打出去之后只让他走一段很短的路,这个过程叫步近,步近的距离等于光源所在点离他最近物体的距离在这里,距离是3,光线就向前步进3。这个操作的逻辑是,以这个点为球心,距离为 3 的球体空间内一定没有物体存在风险,可以放心往前走。到第二个点后,重复上一步的操作,找到这个点离最近物体的距离,这里是一光线再向前步进一,然后是第三个点,第四个点一直走下去。
怎么算光线和物体相交?我们可以提前设定一个阈值,比如 0. 01,在这个点,光线离三角面的距离小于 0. 01,就认为这个点是光线和物体的焦点。如果光线和物体的距离一直不小于这个阈值,甚至到后面越来越大,就认为这条光线不和任何物体相交。相比传统的光线求交判断距离场每个点出的距离是提前算好的,运行游戏时只需要查询每个部镜点出的距离数据,并不做数学运算,这样很快就能确定和光线相交的物体了。同样的,如果场景里物体味置变了,那就需要重新计算它附近的距离场,相比传统求胶方法还是更快。
距离场的思路是不是非常妙?刚搞懂他时,我信心爆棚,心想卢梦也不够如此。可当我真正再次打开他的资料,傻眼了。巨雷厂的源码只占很小一部分,鹿门究竟是个什么?继续深入。原来巨雷厂也不是什么创新,它在 u e 4 版本时就被用于生成阴影,却并没有用来加速光线追踪。为什么?聚类厂有个致命问题,它不包含材质信息,也就是计算机就只能靠它判断光线和谁相交,却由于获取不了材质,无法完成光线反弹的计算。
为了解决这个问题,卢曼创新性的引入了表面缓存的概念。那什么是表面缓存?就是计算机为了存储光照专门分配的一个空间。但它意味着什么呢?彼时恰逢新冠感染,我遭受着生理和精神双重摧残,最后不得不向一个叫 games 的图形学公益平台求助,小秘书非常热情地为我们引荐图形学大佬。尽管年底将至,大佬们忙着筹备 2022 年的图形学会议论文,但我们还是很幸运的和南京大学的过节教授建立了联系。最初我一直纠结无限次反弹怎么可能在一针内实现,但郭洁教授的一席话醍醐灌顶,就是:
你刚才讲的这些调染方程。那些东西其实是偏学院派的.工程上面最后实现的,其实是有的时候是南辕北辙的。
图形学是个工程学科,很少有理论能一朝鲜吃遍天,就算有,也会在 2 年后就被新技术取代。这个说法我深有体会,我从没见过哪个学科的论文里的引用来源,充斥着各种这两年行业会议的演讲PPT,有些技术在落地应用时,和前几年他原始论文发表时的思路已相差甚远。于是过去 4 个月里,我们不得不从头逐个查证陌生概念,一遍遍溯源技术文档,最后甚至联系到了虚幻官方的王米老师,才像完成拼图一样还原了Lumen的全貌。
无限次反弹
让我们开始吧,我们返璞归真,先回到实时全局光照的核心问题,如何实现无限次反弹的间接光?无限次反弹毕竟是理想状态,不妨先看看实际操作中的实时全局光照技术。比如这个 r s m reflective shadow map 反射阴影贴图,原理是让光线打到物体后,将被照亮的位置当成光源,在照亮整个场景。仔细琢磨,这个算法的本质不就是比光栅化多了一次反弹的间接光吗?没错,目前主流的实时全局光照基本都是只提供了一次反弹的间接光,并未真正逼近渲染方程。
然而,令人振奋的是,一次反弹的全局光照也足够优秀了。这似乎建设了一个重要的事实,全局光照最终效果的贡献是随着光线反弹的次数依次递减的,这就为工程师实现无限次反弹提供了可能。还记得开篇提到的卢门源码解析吗?其中有这么一段话,卢门最多只能产生一次反弹的间接光。为了弥补这一点,路墨使用 radiosti 来生成间接光。一开始我完全看不懂,后来读到秦春林的全局光照技术,做了这么一个总结,光照可以看成是多种效果的叠加。对,如果分开求解,直接光和间接光会怎样?这就是 Lumen 的思路。光线从光源出发,通过距离场快速找到物体,这就是直接光。理论上,它会反弹形成间接光,但距离场不提供材质信息,光线该怎么反弹没法判断。于是卢梦先将直接光存进表面缓存里,再想办法解决间接光。什么办法?工程师将目光转向另一种和光线追踪齐名的全局光照技术。
辐射度算法你可能没听过,但其实已经见过了。它正是 girl 将辐射度引入图形学时提出的算法。原理非常简单,将场景离散成一个个面圆,那么一个面圆向外辐射的能量一定等于其他面圆辐射给它的能量之和。怎么理解?如果面圆 1 只接收到来自面圆 2 的辐射,就用公式这样表示, B2 是面圆 2 总共向外辐射的能量, f 叫形状因子,可以理解成两个面圆的空间关系。它决定了面缘 2 向外的辐射有多大比例会被面缘 1 接收。这个 o 是反射系数,表示面缘 1 接收到的 2 的辐射有多少辐射出去了,但面缘 1 接收的辐射肯定来自场景内所有的面缘,于是面缘 1 向外辐射的能量就可以这样表示。
同理,我们也能写出 B2 向外的辐射B3,B4,这样所有面圆就可以连立成一个方程组,用求和符号可以简单表达。考虑到有的面圆会发光,可以在前面加个自发光项,对不发光的物体,这项就为0,这样可能看不出啥。在稍加深入就会发现,这个方程组正是炫尔方程在场景离散成面圆后推导得来的,因此稍微转化就得到了我们熟悉的离散形式。你可以理解成边缘细分的越多,间接光的反弹次数就越多,成像效果也越好。因此只要求解出方程组,就能实现所谓的无限次反弹的间接光。
BJ 是每个面缘向外辐射的能量,我们用传统的光山化将面圆和摄像机相连,就可以用 b j 连线所对应的像素。值得到了一张图像,但你肯定发现了,这个算法的核心是求解方程组。面缘越多,方程就越多,求解计算量呈指数级增长,怎么可能在 1 帧内完成?本视频里,为方便讨论,我们假设所有物体都没有自发光像,直接省略。有没有方法可以不解方程组直接求解面缘的辐射似乎不可能,比如面圆 1 向外的辐射。 B1 公式是这样,其他面圆辐射的能量也就是这些,B2,B3,B4,他们也是未知的。所以 b e 似乎没法求,但你完全可以相信工程师的脑洞是时间开窍的问题。所以这里面其实用了一个非常经典的思想,叫复用。
Reuse,英文叫Reuse。游戏里的 1 秒大约有 60 帧,而相邻的两帧场景中变化的物体并不多。于是我们可以粗略认为,大多数面源,他们每一帧接收的光照都差不多。前面不是说了,反弹次数越多的间接光对最终光照结果贡献越小。在这里面,源的数量越多,间接光的反弹次数就越多。因此少部分变化的面源对整体结果的影响并不大。这就是复用Lumen实施全局光照的基础。
Lumen做了一件事,将面源上一帧接受的光照当成这一帧辐射的能量,用于计算B1。最开始所有面源只接收到来自光源的直接光,没有间接光。这一帧我们姑且命名为第0帧。还记得前面提到表面缓存吗?我们将这帧的光照存进表面缓存,接着到第1帧,直接光仍然从光源采得,间接光则是其他面圆向面圆 1 的辐射问题,关键是这些辐射的值是多少。假设这些面圆和第0帧接收的光照差别不大,我们就可以对其复用。从表面缓存里取得上一帧存进去的光照,然后再将它们带入公式,就能算出这一帧的B1,也就是面圆 1 在第一帧的间接光。所以表面缓存其实就是两帧画面的光照中转站。接着直接光加间接光,就是面缘 1 在第1帧的最终光照最后,人将它存进表面缓存和第0帧的最终光照累加,更新这个数值到第二帧。重复这个操作,将第一帧的最终光照当成第二帧的间接光,再和第二帧的直接光相加,再更新表面缓存,然后是第三帧、第四帧的光照。随着帧数增加,面源 1 接收的光照也会累积,更新结果将越来越准确。同理,面缘2,面缘3、面缘 4 每个面缘在每一帧的光照都可以这样采集。
Luemn
Lumen巧妙地利用了第零针面缘的直接光是已知的特性,对面圆进行单独求解,规避了传统辐射度算法连立方程组求解未知数的难度。而后续每一帧里的迭代计算则保证了计算的准确性。这就是官方文档中提到的无限次反弹的真正含义,也是卢曼的核心思路。现在我们就理解了Lumen的大体逻辑,但翻阅代码就知道卢梦的复杂更多是在对细节进行优化。生成光照后还需要将它采集给摄像机进行成像。为了提高效率,Lumen根据到摄像机的距离,将场景分成 4 个区域,每个区域的光照采集有对应的加速方案。前面提到距离场用于 1. 8 米内区域的加速, 1. 8 米到 200 米之间使用的是全局距离场和体速等技术。更近的区域需要像素级精致的画面。
卢梦用了一种叫屏幕空间追踪的全局光照方案,这样场景里每个位置的光照信息就都可以确定了。最后将光照和该处的 BRD f 材质做计算,反射光也就算出来了,进而确定每个像素质。卢梦的厉害之处在于它通过融合两种经典的全局光照思路,以及一系列巧妙的工程手段,解开了原本无法直接求解的血尔方程。这也是工程师的魅力所在,他们需要在性能和效果间做取舍,要在可能和不可能之间搭建桥梁。正如那句话而言
数学家描述世界,工程师却需要创造世界。
WOW, its time to see whats next。
游戏引擎驱动世界
游戏引擎,驱动游戏世界运转的引擎。本文仅提及渲染,但游戏引擎远不止于此,物理、音效和人工智能等庞大的底层组件才让它走进历史。 1996 年,第一款 3D 引擎退克诞生,凭借出色的效果,它备受游戏厂商追捧,就此开创了游戏的 3D 时代。硬件厂商敏锐秀的商机,于是 3D 独立显卡横空出世,他不仅拓宽了人们对游戏的想象,更解放了众多计算机相关的生产力。一篇中科院的游戏产业报告这样写道,电子游戏的升级牵引着图形显卡和游戏引擎技术的迭代,并推动 GPU 问世。如今, GPU 已经成为芯片产业的核心组成,游戏对芯片产业的科技共产率高达 14. 9%。而近日大火的 ChatGPT 海量数据的训练也借助游戏才得以完成,这是人们始料未及的。
被批社会毒瘤的电子游戏还有写对吗?不对,却阴差阳错地撼动了世界。最近的全球游戏技术风向标 GDC 大会足以给我们更多启示。通过深度学习还原广阔沙漠景观,基于游戏引擎改变传统体育赛事直播的形态,这时我才发现,游戏引擎的身影早已出现在了影视、动画、元宇宙,甚至建筑和汽车领域。
从这个层面讲,游戏引擎驱动的已经不仅仅是游戏,更是我们所处的现实世界。所以不外乎这两年的互联网为其冠以了新型工业软件的称号,它是为了数字经济的重要驱动,更是图形工业实力的集群体现。令人惊讶的是,此次 GDC 大会也看见了国产自研引擎的身影,比如腾讯游戏 cross 团队就以自研的引擎生动展示了数字长城,这也是首个自研引擎在文宝领域的应用,改变了人们对国产游戏工业的认知。一个有趣的细节是,今年的演讲名单里,中国企业超过 30 场,光腾讯游戏就有 18 场—2019 年,这个数字是2。
这几年,中国专利的申请数量呈爆发式增长,目前已占全球三成,远超日本和韩国等传统强国。这不由得让我想起一个古老却遥远的憧憬,国产游戏崛起。
你们一定都听过关于他的故事。
2022 年,一段黑神话·悟空的实际演示发布,引爆全网,不仅演示视频入选 B 站必刷,就连身边不玩游戏的朋友也对此津津乐道,这款游戏到底有什么魅力?精彩的打斗,细腻的画面,但大家讨论的更热烈的是他的文化背景。我们见识过中世纪的巫师,感受了前苏链的宏大,却很少在游戏里讲述我们自己的故事。一人做事一人当。
这些年来,一众国产游戏突出重围,似乎国产游戏已经崛起,但中国游戏工业和传统游戏工业发达国家相比,仍有不小差距,大多数国产游戏仍是小作坊式的用爱发电。 2019 年的口碑佳作戴森球计划,游戏上市之前, 5 名开发者的团队仍面临生死存亡。我们总说要增强文化软实力,但一款投入巨大、市场不明朗的游戏会呈现怎样的软实力?什么也呈现不了,他将随时夭折。软实力彰显的基础是强大的硬实力。所以为什么这款游戏让人如此激动?我想,可能不只是他讲述了我们熟悉的猴子的故事,更是因为我们从未做出过商业大作,我们从未抵达本可以到达的地方,我们从未领略那本该领略的风景,而这就是游戏引擎被寄予的另一种寓意了。选题之初,我曾询问身边人对卢曼视频的感受,收获的反馈都是厉害和震撼等褒奖。但一个朋友的评价让我印象深刻,他从未接触过电子游戏,也完全不懂其背后原理。只是一想到这些画面凝结了人们的心血,想到有人仍在解决不可能解决的问题,一种莫名的感动就油然而生。
1998 年,康奈尔大学的一场研讨会上,有这样一段演讲,过去 35 年,图形学的建模和渲染有极大进步,我们却仍无法模拟在河中游泳的老虎的所有细节。后来,那只老虎被影作经典图形学教材计算机图形学基础的封面。 15 年后的今天,实现一只游泳的老虎已不是难事。这张封面的存在更像是图形学梦想的传承,它更像是在提醒所有图形学后生,我们仍面临诸多挑战,我们仍未摘夺那座圣杯。然而,就像面对当时的技术窘境,那场演讲也说过的这样一句话,坏消息是我们还有很长的路要走。好消息是,我们仍还有很长的路要走。
本视频讲述仅为图形学的冰山一角,其背后的复杂超乎我们这种小白的想象,所以本项目也一度中途夭折。为此,要特别感谢 games 公益平台南京大学的郭洁教授、腾讯游戏虚幻引擎官方及王米老师对本视频的大力协助。和所有图形学从业者一样,你们让我们看到了一些更为广阔和崭新的世界,这就是本期视频的全部内容,如果你喜欢此类视频,欢迎一键三连,我们下期再见。
the many things we learn, building of the shrine, only just to。
这篇文章介绍了计算机图形学的历史和发展,以及虚幻5游戏引擎中的全局光照技术。全局光照是一种能让游戏画面更逼真的技术,它可以让光源射出的光线打到物体后还可以反弹照亮整个场景。全局光照技术的实现是计算机图形学领域的一个里程碑式的关键性的一部。