游戏开发论坛

 找回密码
 立即注册
搜索
查看: 25|回复: 0

建立下个时代的高清游戏美术资源生产管线(八):以黑神话为例聊聊游戏的光照方案

[复制链接]

5万

主题

5万

帖子

9万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
90471
发表于 4 小时前 | 显示全部楼层 |阅读模式
本文首发知乎,GameRes获授权发布。

如果觉得字太多可以看视频版本(比较推荐直接看视频,因为带动态演示,配图也是我直接从从视频里截的),视频版本地址:

以黑神话为例聊聊游戏的光照方案
https://www.bilibili.com/video/BV1dsCmYVEpY

到目前为止,黑神话我已经玩了200个小时了。游戏无疑是非常优秀的。长板非常长,有出色的音乐,动作,过场演出效果,还有我个人认为近几年设计得最好的BOSS战。

游戏的系统框架也很有意思,值得反复游玩。以268的售价来说是大大超值了。

动作游戏可以说是最难开发的游戏类型之一,对于游科这样一家初次涉足3D动作游戏开发的公司来说,首战就能取得如此出色的成绩不得不让人佩服。但是游戏的短板也很难让人忽视,比如输入判定,镜头系统,关卡设计,光照等都有或多或少的问题。

最近正好打算写篇文章聊下游戏中的光照方案。以此为契机,拿黑神话作为实际案例来分析,可能更加言之有物。

微信图片_2025-09-30_081638_909.JPG

黑神话刚发售就有大量玩家和开发者注意到了游戏中的暗部死黑问题。我加的好几个开发群甚至为此进行过长达数天的讨论和辩论。

  • 一派观点认为是为了美术风格故意为之,并且表示接受这种光影风格。
  • 另一派则认为就是纯粹的打光有问题。

我比较倾向于后者,因为从结果来看,拿美术风格当遮羞布是没有意义的,不管是有意还是无意为之,这个光照结果都是有问题的,开启光线追踪这个问题更加严重。

不然不会有那么多玩家和开发者做补丁和MOD去修改游戏里的光照。

也就是说有不少玩家觉得去掉开发人员为游戏做的设计,直接用虚幻引擎的默认效果去玩观感可能更好。

甚至还有不少玩家特意调低画质来减弱死黑问题。用低画质玩游戏本来就违背了开发者打造出色画面效果的初衷。优秀的画面设计应该尽可能让所有玩家免受画面效果的困扰。

微信图片_2025-09-30_081651_485.JPG

那么回到问题本身,黑神话的光照问题让我挺意外的,因为lumen的GI效果非常强大,结果准确性其实已经接近路径追踪了。

所以默认效果完全不是这样死黑。而且我注意到这个问题通过补丁或者MOD也是很难彻底消除的。

我认为导致目前这个问题原因可能有三点:

  • 第一是灯光或者曝光参数错误导致GI亮度信息不对。这个是最重要的原因。
  • 第二是后期调色对比度数值过于极端,导致暗部死黑,亮部过曝。让游戏过程中玩家经常在极亮或者极暗的环境中穿梭,容易引起不适。
  • 第三是灯光设计不合理或者说缺乏设计。

整体游玩下来,灯光和关卡设计是游戏中最拉后腿的部分,一般情况下,美术资源品质是游戏画面效果的下限,引擎提供的效果是画面效果的上限,但是黑神话这里反过来了,糟糕的灯光和地图设计完全可以说是靠虚幻5给托了低才保住了画面效果的下限。

而优秀的美术设计和模型品质、动画效果则提高了画面效果的上限。

微信图片_2025-09-30_081652_765.JPG

微信图片_2025-09-30_081654_117.JPG

为了摸清问题原因,我找了一个之前项目的场景,这个场景风格与黑神话类似,同样为古建筑,同样使用扫描模型创建,并且对扫描模型进行了规范化的修改和模块化的拆分。

但是没有使用nanite,因为做这个项目时候还没有虚幻5。因为整个项目的美术制作规范都是由我制定,所以改起来也比较方便。我使用UE5.2版本重新打光,尝试着复现黑神话的光照问题。

以大家熟悉的观音禅院为例,整张地图的色调是青灰色调,低饱和度,高对比度。天气状况有点像阴天到多云,雨后阳光偶尔从云层缝隙中投射出来那种效果,场景中弥漫着浓厚的雾气。

微信图片_2025-09-30_081655_388.JPG

因为灯光和后期参数无法抓帧获取,所以所有数值都是我用目测方式取得的猜测值,肯定是不准确的,只能作为参考。

一般做游戏的打光流程是先确定曝光值,再定灯光强度,然后加上雾气,颜色分级等后期参数。

我们也可以用这个流程反推游科的打光方式。先关闭游戏中的雾气,关闭方式如下:(C:\Users\你的系统用户名\AppData\Local\b1\Saved\Config\Windows路径下的engine.ini文件,写入[SystemSettings],r.fog=0,也可以使用MOD去除),这样可以看到去掉雾效的纯光照效果。

基于这个效果我们可以还原游戏的灯光和后期设置。

微信图片_2025-09-30_081656_797.JPG

打光方式还是先放常规的灯光四件套 平行光directionalLight,天空光skylight,天空大气skyatmosphere,加后期盒子postprocess volume。首先固定曝光状态,确认ev100值=0。曝光补偿为0。

因为不确定黑神话有没有使用HDR贴图做为照明来源,我目测是没有。所以天光参数使用默认值也就是1,并开启实时捕获。使用直射光强度作为天光强度。

然后开启雾气,关闭体积雾,可以基于这个效果还原雾气浓度,颜色。因为体积雾受光照影响很大,可以根据体积雾开启后的颜色和亮度推测灯光强度。

测试结果主光强度20——30比较接近游戏里的效果,雾气值为0.15。

最后开启泛光,光束,对比度等参数还原后期效果。

我根据游戏中的色调制作了一张lut贴图用于调色,因为雾气和泛光等效果都会影响曝光值,所以曝光参数最后调。

灯光参数并不复杂,因为场景里只有一个平行光和天光,天光之前说了就是默认值,平行光这里我取20——30的中间值25。

微信图片_2025-09-30_081658_213.JPG

影响效果的主要参数在颜色分级里面,调整色调,对比度,画面整体亮度。黑神话画面的主要特点是对比度拉很高,亮度拉很低,所以重点是调整全局/高光/阴影/中调等各个颜色分级参数里面的这两项。

调完之后再根据整体效果调整一遍天空大气和雾气。

因为整个场景的氛围和调子主要是靠雾气决定的。所以雾气颜色需要和后期校色配合起来调整。雾气颜色如下,色温为8700。

微信图片_2025-09-30_081659_621.JPG

最后确定曝光参数。因为游戏的整体色调偏暗,所以曝光范围区间给得比较小。曝光值:ev100min为-4,max为0,根据整体效果给了0.25的曝光补偿。

局部曝光localExposure 高光对比度 缩放值为0.85 其他不变,主要为了缓解因为对比度太大带来的亮部过曝问题。

最后实现的效果感觉和游戏中差不多了,因为模型贴图这些美术资产的关系,颜色肯定无法完全一致。但是看起来色调差不多,光比差不多,曝光值差不多,暗部一样死黑。

微信图片_2025-09-30_081700_980.JPG

微信图片_2025-09-30_081702_317.JPG

微信图片_2025-09-30_081703_644.JPG

接下来我们可以定位问题,去掉雾气,对比度影响以后,可以看到暗部依然死黑。这个问题我们通常可以用以下几个方式解决:

1.使用额外的后处理体积调整曝光,缺点也很明显,过渡不大自然,地编的工作量大,黑神话基本大量使用了这种方式。游戏差不多每隔一小段距离就有一个postprocess volume。这也导致我们在游戏中经常看到一些突兀的光照和色调变化。

微信图片_2025-09-30_081704_964.JPG

2.使用补光,在场景里加入补光,优点是美术效果可控,画面可以更好看。例如在场景里针对玩家动线设计一些合理的补光可以让角色细节更加丰富。黑神话也用了,最明显的补光就是他们给猴子身上挂了个灯。暗处自动开启,跟手电筒一样。这个做法不是很讲究,不建议其他开发者效仿。但是补光的缺点也很明显,第一,场景里突然出现一个没来由的光源其实从美学角度上讲是很突兀的,效果不和谐,需要大量的精力和一定的美术水准去调整补光与整体环境的融合问题。第二,增加更多的光源也会带来更多的性能消耗,需要进行大量优化工作。至少在5.5以前的版本,lumen对多光源的支持并不太好。

微信图片_2025-09-30_081706_196.JPG

3.使用localexposure(局部曝光参数)修正。数值过大会影响颜色结果的准确性,也会影响画面光比。

微信图片_2025-09-30_081707_389.JPG

4.使用天光泄露值修正,但是数值过大会让室内发灰,数值过小效果不明显。而且无法修正室内和室外的过渡区域

微信图片_2025-09-30_081708_694.JPG

5.增加diffuse color boost,也就是漫反射颜色GI值,非常不推荐,第一并不能完全改善问题,第二会让颜色错误。影响画面整体色调。

6.让美术去改材质球或者贴图,给同一套模型为不同的光照环境制作不同的贴图和材质。虽然听起来就离谱,但是据我所知国内有不少项目就是这么干的。这么干的问题是会让项目的美术资产陷入无休止的修改中,而且因为没有统一的制作标准,项目的开发周期和最终美术品质都会非常不稳定。如果你们项目是这么干的,那我的建议是早点跑路...出现这种情况说明你们项目的美术负责人或者TA(技术美术)至少有一个是水货,或者两个都是。

以上几个解决方案都属于出了问题后期补救,都有自己的缺陷或者会带来一些新的问题,所以我建议最好的方式还是使用物理方式打光,从根源上解决问题。这也是写实类游戏最佳打光方案

那么问题来了,什么是物理方式打光。

要搞清这个问题,需要理解两个概念,一个是现实中的灯光参数,第二是曝光值,也就是EV100。

我们先简单过一下这两个玩意的基本概念。但不会讲太细,因为这篇文章不是理论讲解,了解理论只是为了更好在实际生产中应用,而不是生搬硬套公式,我希望大家看完后都能了解打光的基本思路和套路,做到打出漂亮的灯光只需要有手就行。所以如果希望详细了解这些理论知识,可以自行查阅更多资料。

先看灯光单位,在虚幻引擎中,灯光默认单位都是按现实中物理规制设置的,灯光的单位有lux(光照度),lumen(光通量) ,candle(烛光)等,在官方网站有灯光单位的详细说明,这里不展开讲了。有需求可以自己去看。这里面最重要的单位是lux,也就是光照度。光照度决定了我们看到的游戏画面中的阳光强度。所有的灯光参数都有公式可以换算成光照度。

微信图片_2025-09-30_081709_836.JPG

使用虚幻引擎中的物理光照单位 | 虚幻引擎 5.4 文档 | Epic Developer Community (epicgames.com)
https://dev.epicgames.com/documentation/zh-cn/unreal-engine/using-physical-lighting-units-in-unreal-engine

接下来说一下Ev100,EV100是一个摄影参数。在摄影中,曝光值(EV) 是表示相机快门速度和 f 值(光圈)的组合数字,EV100=0就是指ISO(感光度)100, 快门0.001秒的时候,曝光度为0.

那么这两个值有什么用呢?灯光强度和曝光值共同决定了我们最终看到的画面亮度。我们知道,现实中把一个红苹果从光线昏暗的室内拿到光线充足的室外,他不会因为光线变强了就变成一个白苹果。因为人眼或者说我们的大脑的自动曝光功能是非常强大的,除非光线特别强,亮得离谱。否则我们看到的就是物体本来的颜色和材质状态。

但是一般的摄影设备没这么牛逼,所以拍照的时候我们需要调整曝光值来适应不同的光照环境。现在几乎所有的相机都带了自动曝光,大佬们可能更喜欢手动。游戏里也是一样的,为了防止在不同光线条件下最终图像效果不统一,我们也需要平衡灯光强度和曝光值之间的关系。

微信图片_2025-09-30_081711_053.JPG

虚幻引擎中的自动曝光 | 虚幻引擎 5.4 文档 | Epic Developer Community (epicgames.com)
https://dev.epicgames.com/documentation/zh-cn/unreal-engine/auto-exposure-in-unreal-engine?application_version=5.0

我们可以简单搭建一个场景快速验证。

简单拉几个box,材质球指定颜色值为0.18,也就是线性空间下的标准灰。高光金属度=0,粗糙度=1。关掉色调映射(非必要),拉出一个主光,灯光角度Y轴为-90,灯光强度为3.14lux,ev100=0,使用引擎自带的像素检查工具查看场景中box的颜色值。可以看到颜色值差不多在0.18上下。

我们可以认为,lux=3.14,ev100=0的情况下,光照环境能够准确还原物体固有色,没有过曝或者过暗的情况出现。

微信图片_2025-09-30_081712_293.JPG

那么我们游戏里的灯光值和曝光值就固定在这个数值吗?这显然是不可能的,现实和游戏中的光照环境都十分复杂,我们需要掌握的是一套在任意光照环境下都能准确还原物体表面固有色和材质的方案。

接下来我们把灯光强度和曝光度改到120000lux,ev100改为15.2,再次用像素检查工具检查box的颜色,可以看到还是0.18,和之前的结果一样。

微信图片_2025-09-30_081713_534.JPG

通过这个简单的快速测试,我们可以得到这样一个基本事实,如果游戏里的灯光强度和曝光值按某种对应关系同时变化,那我们在不同光照环境下都能准确还原物体的固有色和材质。

通俗的说,同样一个苹果,无论你白天拍,晚上拍,室内拍,室外拍,它的颜色都是一样的,不会发生太大的变化。这也是现代摄影技术的基础理论。

那么我们应该如何在游戏中还原准确的灯光强度和曝光值呢?有以下两个思路:

先确定灯光强度,再根据灯光强度修改曝光值,例如通过照度计测算无云晴天室外阳光的强度是120000lux,那我们就可以根据120000lux这个参数去设置合适的曝光值。

先确定曝光值,然后根据曝光值打光。比如我们可以通过查看照片参数来得知曝光设置,通过调节引擎中的iso,光圈,快门等参数来设置游戏里的曝光值,然后更根据曝光值的效果调节灯光强度。

不过游戏环境非常复杂,我总不能暗部一个曝光值,亮部一个曝光值,室内一个曝光值,室外一个曝光值,白天一个曝光值晚上一个曝光值吧,这么搞岂不是要累死人?

哎,你别说,游戏科学好像真是这么搞的。

但是非常不推荐这么搞啊,第一个是累死人,第二一点也不科学。

通常情况下,我们只需要根据项目的实际需求,得出一个曝光区间,就可以适应大部分环境了。那这个曝光区间怎么确认呢?

其实很简单,直接抄就完事了。摄影界有个阳光16法则,总结了不同的光照环境下的曝光设置。根据维基百科描述,阳光16的基本法则如下:在室外阳光下,如果光圈是f/16,则快门速度应是所用胶片的国际感光度指数的倒数。例如,在室外阳光下,如用光圈是f/16,而所用胶片的感光度为ISO100,则快门应为1/100秒。

微信图片_2025-09-30_081714_910.JPG

接下来我们去查(抄)表。

首先去找不同光照环境下的照度,这里可以看unity官方给出的参考数据。

微信图片_2025-09-30_081716_261.JPG

微信图片_2025-09-30_081717_557.JPG

然后查光照环境下的曝光值,这里直接用维基百科的数据。

微信图片_2025-09-30_081718_926.JPG

最后继续查曝光值和摄影参数的对应关系,这里同样引用维基百科的数据。

微信图片_2025-09-30_081720_374.JPG

有了这几张表,我们就可以确定光照度和曝光值,曝光值与摄影参数之间的换算关系了。那我们就可以通过照片参数反推光照信息,或者根据照度信息去推测曝光值和摄影参数。如果希望得到精确数据,我们也可以通过公式来换算(一般情况不需要)。

虚幻引擎中光照强度与曝光值的换算公式如下:

lux=2^EV+曝光补偿*-1*3.14

虚幻引擎中摄影参数与曝光值的换算公式如下:

EV100 = log2(光圈^2/快门速度 * 100/ISO)

基本上记住这两个公式就行了。

好了,理论讲解到此结束,接下来我们验证上面两个打光思路。

首先验证第一条思路,先确定灯光强度,再根据灯光强度修改曝光值。

我们继续使用之前的验证场景,根据维基百科提供的曝光度(ev100值)与拍摄参数的换算表中可以看到晴天下的曝光值应该是15,同样根据查表得知晴天的阳光强度是120000,所以我们把灯光改为lux=120000,然后把曝光值改成ev100min=-10,max=20的默认设置,然后我们打开引擎内自带的直方图工具看下曝光值。巧了,刚好ev100=15,跟表里的一样。

微信图片_2025-09-30_081722_173.JPG

不过这么做感觉说服力不大够, 有点像先射箭后画靶,用金蝉子的话说就是倒果为因。(黄眉竟是我自己?)因为引擎中ev100=15,lux=120000的结果我们之前已经验证过了,现在的做法看起来似乎只是换了个方式把之前的套路重来了一遍,只能说明这些数据的对应关系在引擎中是这样计算的,也许和维基百科的数据凑巧对上,不能证明和现实中的摄影参数有强关联。

接来下我们换个思路,用真实的照片参数来进行验证。

这里我使用了摄影界大神 @Thomas看看世界 的风光原片。
https://zhuanlan.zhihu.com/p/104216868

选用的照片为第9组,浙江 枸杞岛无人村,从照片看,天气情况为阴天。摄影参数如下

微信图片_2025-09-30_081723_660.jpg

微信图片_2025-09-30_081725_100.JPG

这次我另存了一个关卡,把照片也导入到了场景中。将照片颜色作为物体表面固有色的参考颜色

postprocess的曝光设置改为手动,确保勾选了应用物理相机曝光,然后填入照片中的摄影参数。

微信图片_2025-09-30_081726_612.JPG

微信图片_2025-09-30_081728_028.JPG

可以看到在原来的灯光参数下,120000lux对应当前相机参数设置是过曝的,亮成一片。

微信图片_2025-09-30_081729_565.JPG

根据前面贴出的公式开始计算曝光值和灯光强度。

首先是EV100 = log2(光圈^2/快门速度 * 100/ISO),根据照片参数 ,光圈值是7.1,快门速度是1/200秒,ISO是400,套入曝光计算公式就是 log2(7.1^2/0.005*0.25),得到ev100=11.29。然后再根据曝光参数计算灯光强度,接着套灯光计算公式Lux=2^EV+曝光补偿*-1*3.14,得到Lux=2^12.62*3.14=15836.76。

把场景中灯光强度设为15836.76看看效果。使用像素检视器查看box的颜色值为0.36,明显曝了。但是不要慌,再把曝光补偿加上看看。

微信图片_2025-09-30_081731_085.JPG

因为照片参数中带了-1档曝光补偿,加入曝光补偿之后数据变回了0.18,和标准值吻合。

微信图片_2025-09-30_081732_598.JPG

再对应之前的曝光和灯光强度表。

15836.76的灯光强度与阴天照度参数的参考范围值(20000左右)基本对应。

11.29曝光值也与阴天环境标准曝光参考值(12左右)基本对应。

以上信息可以说明,在照片信息相对标准的情况下,通过摄影参数计算出来的曝光值和光照强度,可以准确还原成游戏里的标准光照。

为了方便验证,我写了一个简单的灯光蓝图自动计算这些换算关系,这样可以快速做大量测试。蓝图我放QQ群文件里了,有需要的可以自己加群下载。不想加群的可以自己对着截图抄一下

微信图片_2025-09-30_081734_141.JPG

微信图片_2025-09-30_081735_508.JPG

微信图片_2025-09-30_081736_877.JPG

这里强调一下,根据照片摄影参数算出来的照度信息是指整个环境的照度,是包含了天光,大气,雾气,阳光角度,场景遮挡,暗部,阴影,其他光源等因素的综合结果,不是单一光源的照度。

因为这个验证环境只有单一光源,所以单一光源的照度等于整体环境照度。在完整的灯光流程里面,要综合考虑以上因素去打光,让最终呈现出来的照度参数接近照片的拍摄参数,这才是正确的打光思路。这个在本文后面的环节会提供演示。

经过反复验证,我们可以得出这样一个结论,使用现实中的灯光物理参数和相机参数指导我们打光是可行的。

只要掌握了光照度和曝光值的对应关系,我们就可以打出物理结果正确的灯光,然后再以这个结果为参照进行修改。

比如希望晚上再暗一点,可以直接修改曝光值让画面欠曝,希望亮一点,我们也可以这样反向操作(不推荐直接修改灯光照度,因为照度变了不光影响物体表面亮度,也会影响物体材质高光反射等信息)。

这样光比始终会维持在一个正确范围内。这就是物理灯光的奥义。

回到我们的案例,这次我们用第一个思路进行打光。即先确定灯光强度,再根据灯光强度修改曝光值。

现实中太阳的光照度是不变的,我们感受到的阳光明暗变化,只是太阳被云层遮挡和阳光角度改变带来的阴影和暗部面积的变化。晚上的太阳并不是熄灭了,而是运转到了我们看不到的位置。

所以从物理角度讲,很多美术习惯性的根据时间段和阳光角度改变太阳光强的做法是错误的,虚幻引擎的光照系统支持星球级别的光照效果。

微信图片_2025-09-30_081738_421.JPG

微信图片_2025-09-30_081739_948.JPG

所以我把阳光强度依然设为120000lux,通过修改云层和大气雾组件来得到阴天状态下的光强,因为这样在物理上更加正确。阴天天气的米氏散射比较大,我将天空大气的米氏散射值设为0.4。

这样就得到了从晴天到阴天的效果。去掉使用阳光颜色,改为使用色温控制。同样查表得知,阴天和晴天之间的色温参数为6000,多云天气下阳光比较朦胧,所以光源角度设为10。

曝光设置上,室外曝光直接使用阴到多云的曝光值13.5,。也就是ev100max=13.5,min=6。我做了一个曝光补偿曲线用于控制一下明暗室内曝光表内的数据是5——7,这里取一个中间值6过度,降低了对比,让过渡更加平滑,以符合人眼观察效果。tonemmapping对明暗影响很大,尤其会导致室内过黑,所以我在局部曝光参数中修改了高光对比度和阴影对比度。当然直接改tonemapping也可以,但是我觉得改完会让颜色变灰,所以选择改局部曝光。

对于一些后期效果比如泛光,太阳光束什么的自己看着调,觉得顺眼就行,色彩控制和之前版本一样,没有改动。完成这一些系列参数设置后,我们看下效果。

微信图片_2025-09-30_081741_580.JPG

微信图片_2025-09-30_081743_092.JPG

微信图片_2025-09-30_081744_477.JPG

微信图片_2025-09-30_081746_156.JPG
修改前

微信图片_2025-09-30_081747_549.JPG
修改后

可以看到基本上符合我们印象中的多云到阴天效果了,整体效果和之前版本区别不大,但是改善了室内和暗部死黑问题,室内室外明暗过渡也很自然。使用可视化直方图工具检查环境的照度信息,也符合阳光16法则对照表里面的数据。

整个场景只有基本的灯光四件套加一个后处理,没有任何补光和其他后处理体积参数,证明我们只要掌握了正确的打光套路,很简单的灯光设置也能得到正确的效果。而且通用性强,各种环境都能适用。

对于室内打光这个套路也同样有效,基本上市面上出售的所有灯具的光照参数都有标明,可以直接使用。某位我不记得名字的建筑大师曾经说过:Less is more。少就是多。

很多时候我们不需要各种花里胡哨的灯光方案,加一堆补光,后处理等等,一方面画面容易乱,另一方面场景内有过多的光源也会带来很多性能上的压力。我们先保证灯光的基本逻辑正确,再加适当的艺术修饰即可。

有了以上理论依据,美术给游戏场景打光就不再是看心情或者凭感觉,而是基于物理规律。在没有物理灯光流程之前,评价美术工作结果是否合格的唯一标准就是好不好看。

但好看是一个非常主观的经验感受,是无法准确定义的,因此没法成为评价工作结果是否正确的客观标准。尤其在现在各种政治正确思潮的影响下,好看的标准已经变得非常扭曲了。

并且画面是否好看受开发者水平的影响也非常大,商业游戏开发是团队合作的成果,不同开发人员的水平上下限差异巨大,导致产品品质很难把控。基于以上种种因素,业界逐渐意识到需要一套标准化的流程来统一游戏开发过程和最终渲染结果。

基于物理参数,让美术的操作有据可依。并且很多灯光设置都可以存为模板,方便我们快速调用。

事实上引擎也提供了这样的内置模板。通过一套标准化的生产模式,不管是新手还是菜鸟都能稳定产出正确的效果,减少犯错空间,让不同开发人员的水平对产品品质的负面影响降到最低,可以大大拔高产品生产速度和品质的下限。

这也是工业化的游戏开发思路。同时也不限制上限的发挥,大佬们依然可以通过补光和调整后期参数实现自己想要的艺术效果。

这个过程很像摄影,先拍出正确的照片,再对照片修图进行艺术加工,最终得到我们想要的画面。

微信图片_2025-09-30_081748_981.JPG

微信图片_2025-09-30_081750_301.JPG

微信图片_2025-09-30_081751_692.JPG

微信图片_2025-09-30_081753_108.JPG

微信图片_2025-09-30_081754_788.JPG

微信图片_2025-09-30_081756_372.JPG

物理灯光方案理论上可以适用绝大部分写实场景。实际上虚幻引擎也是比较推荐这种打光方式的,我们可以从不少官方案例看出他们也是用这套方案打光。优点是显而易见的,无论是灯光,还是材质表现,结果都会更加真实。尤其适合写实类游戏。

当然,物理灯光方案的缺点也不是没有,比如参数取值范围太大可能导致浮点精度不够,在移动端表现可能会有问题(这个可以根据光比进行数值缩放解决)。

对风格化的游戏,比如二次元项目支持不友好,或者说要求更高。至少需要你的卡通渲染管线支持物理灯光。这里推荐大佬 @YivanLee 的卡通渲染管线。完全支持物理灯光结果。

微信图片_2025-09-30_081757_949.JPG

微信图片_2025-09-30_081759_669.JPG

微信图片_2025-09-30_081801_413.JPG

回到黑神话这个话题,我们基本上可以推断出黑神话的问题是灯光强度与曝光值的平衡没有做好,导致暗部过暗,从而影响了GI效果。出现这样问题我也觉得很奇怪,我相信以游科的水平不至于不了解这些灯光概念。

他们选择现在的光照方案可能有什么其他的原因,不过从产品表现来看目前游戏中使用的灯光方案确实存在很多缺陷。以至于很多开发者为黑神话有没有开GI都争了好几天。

这里提一嘴GI是什么。GI就是全局光照,指光线在环境中的反射,如果没有GI,我们看到的画面是这个样子。这里我下个结论,黑神话是开了GI的。只是他们使用的打光方案有问题导致GI效果错了。lumen的GI主要受表面亮度信息影响。

要修正黑神话的问题也很简单,通过案例制作已经证明只要调整光照度和曝光值的对应关系,就可以在不改变画面色调/光比/亮度和对比度的前提下修正死黑问题。网上推荐的一些增加diffues color boost和天光泄露值的方案我不是很推荐,因为会让颜色失真。

光照是决定游戏画面效果的重要环节,好的灯光氛围能给游戏画面品质带来立竿见影的提升。

灯光也是游戏开发中对性能影响比较大的一个模块。开发者需要不断在画面效果和运行性能中做取舍和平衡。

因为技术积累的欠缺,灯光环节属于国产游戏开发中比较薄弱的一环,我们几乎无法列举出拥有出色的光影效果从而给人留下深刻印象的国产游戏。与之相比,光影出色的国外大作却比比皆是,我们耳熟能详的就有对马岛之魂,荒野大镖客,刺客信条,神秘海域,最后生还者等,甚至独立游戏和中小体量作品中都有lost,inside,镜之边缘,死亡搁浅这种教科书般的案例。

总而言之,我们在游戏灯光方面缺课太多。虚幻5再牛逼,也要学会如何正确的使用才能发挥它的威力。我个人建议,在了解光照原理的前提下,游戏灯光方案可以多参考一些优秀的电影作品和摄影作品。也希望游科在接下来的开发中,尽快弥补一些不足的方面,给全世界玩家带来更完美的游戏体验。

微信图片_2025-09-30_081803_117.JPG

微信图片_2025-09-30_081805_284.JPG

Q群号:908353590,需要蓝图的可以去群文件里下。

文/潘翔
原文:https://zhuanlan.zhihu.com/p/717882873

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-9-30 12:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表