如何在预算内创建氛围环境

今天的客座文章来自Alfonso Caparrini,Lapsus Games的联合创始人和开发者。在8月28日,Lapsus推出了他们的首款游戏,NODE:Antarii的最后恩惠,一款独特的2.5D解谜冒险游戏,拥有绝对惊艳的游戏内光照效果。了解Alfonso,白天是一名专业CG艺术家,他如何在HDRP中处理光照,以创造NODE's在Unity<7>中密集的氛围环境。
作为动画行业的光照艺术家,我习惯于在场景中添加几乎没有限制的元素,以获得我想要的效果。如果有什么不奏效呢?我在合成中修复它。但要从那个管道中获得一个单一的帧,可能需要数十甚至数百小时的渲染时间。
当我开始开发NODE:Antarii的最后恩惠在Unity中时,我不得不改变我的方法,以获得我习惯的电影般的氛围效果,但它必须以每秒60帧的速度运行,而不是每帧60小时。
不用说,引入体积光照从来都不是便宜的,但这里有一些我开发的工具和技术,以一种丰富而电影化的方式照亮NODE<2>,同时保持足够简单以在实时中高效运行。
通常的起点:仅仅是一个关键光
这是每个人开始的地方:你放入一个单一的关键光,希望全局光照(GI)能神奇地填补其余部分。

你烘焙场景后意识到全局光照有帮助,但远远不足以达到你设想的氛围、深度或情绪,也无法让你对调色板有必要的控制,以创造你心中所想的。


这是你可以开始疯狂尝试到处添加光源的时刻——巨大的光源、没有阴影的光源等——以填补光照或全局光照覆盖的所有空间。但堆积所有这些想法,往往会导致场景感觉更平坦,因为失去了体积和维度——或者运行得更慢。
我对NODE的目标是创造一种浓厚的氛围环境的感觉,光线在空气中反弹和散射,而不会完全影响性能。为此,我开发了这个变通方法。
使用几何体伪造空气中的光散射
为了实现我对NODE的照明目标,我构建了一个非常简单的无光照着色器,创建了一个平滑的HDR颜色渐变。我添加了中点、衰减和发射倍增器的控制。我在基本几何体上使用这个着色器,比如球体、胶囊、盒子或自定义网格,放置在我想模拟光线充满空气的区域。这些体积在物理上并不准确,但它们感觉是对的。

在这个特定的情况下,即使不现实,我选择了一种酷的互补色来与主光源的温暖形成对比,创造出我认为更丰富的调色板。你可以根据需要叠加尽可能多的层,甚至用不同的强度堆叠它们,以更好地控制它的衰减。

结果是场景开始感觉像是在空气中弹跳,填充那些空间,我对色调和强度有完全的控制。

在结果及其对应的光照贴图中,你可以看到这在场景中创建了一个渐变,起源于关键光束添加了大量深度和体积的区域。


雾、渐变天空和色调映射
接下来,我用传统的雾补充了场景——刚好足以根据其尺寸为场景增加深度。我使用渐变天空调整亮度和颜色,这让我能够统一色彩调色板并为环境设定整体色调。
为了将这一切粘合在一起,我使用了ACES色调映射。不深入细节,这使得最终画面更具“电影感”。

不同氛围之间的平滑过渡
这种雾和体积光的组合,配以渐变天空的色彩,以及模拟大气光散射的几何体积的使用,也实现了平滑的过渡和独特的氛围。我可以通过调整我创建的无光照着色器的渐变坡道来控制长度和过渡点,结合Unity的体积混合来在不同的天空和雾设置之间进行过渡。
这也帮助我避免使用大量灯光,并保持光烘焙时间非常低。我很自豪地说,在NODE中150个不同场景的总烘焙时间不到1小时!

用单个网格解决复杂照明
在这一部分,我将分享一些示例,说明这种简单的技术如何帮助您轻松解决复杂的照明问题。
在这个电梯井中,我需要从地下的绿色调过渡到屋顶的蓝色调。仅用一个盒子,我创建了色彩基础,帮助我实现这种过渡——而且没有额外的性能损耗。

在更紧凑的空间中,比如这个控制室,我能够在显示器和场景中心之间创造两种不同的氛围,这给了我所需的所有光线包裹。


