Counter-Strike 2:基于物理的环境光渲染分析
Counter-Strike 2(CS2)基于 Valve 最新的 Source 2 分支打造,起源 2 引擎为 CS2 带来了巨大的图形提升,相比于起源 1 的 CS:GO 或 CS:Source 的 Blinn-Phong 方法,起源 2 的 CS2 是基于物理的,从材质制作 workflow 到 gameplay,CS2 始终依托于基于物理的渲染。本文讨论的是基于物理的环境光渲染。
首先,渲染方程:
抠除自发光:
刚刚说的那一大串似乎没啥卵用,因为无论怎么说渲染方程的那个积分号还在,怎么搞?不过没办法,都实时渲染了,理想是积分,现实是近似(渲染方程本身也不太可能求得解析解)。
那好吧。只能把它拆了,写成个重要性采样的格式:
Epic Games 的 Brian Karis 曾在 UE4 基于物理着色的技术分享上给出过具体的数学上的分析,那就是继续展 :
第一个求和就是我们之前提到的求
后面那一大坨有点难搞,我们知道 PBR 渲染里 Specular 的
看起来复杂,但实际上影响到求和结果的只有
我们可以直接离线计算这两个 input 所对应的 output,把它们放入一张表里,引擎里直接查表不就行了。这里使用一张 LUT 来存储积分结果,R, G 通道分别存储某一粗糙度和
由于
在 CS2 的资产管理器里,你可以搜寻到这张表。你也可以通过这张 LUT 的特征辨认出起源 2 使用的是 GGX 法线分布。
实际效果就不用放图了,CS2 已经可供所有 Steam 用户免费下载游玩,进去感受下吧。