逻辑模型和物理模型_基于物理的光照模型实现

随着计算机和3D技术发展,原广泛使用的blinn - phong光照模型无法满足新一代游戏要求。本文介绍采用基于物理的光照模型,使用微表面BRDF,通过预处理将环境高光采样储存在cubemap多层mipmap中模拟,消耗小,还提出cubemap多张分布及切换的改进计划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要介绍

随着计算机性能的提升和3D技术的发展,现代3D游戏不断追求对现实世界的真实模拟。在这种背景下,原来被广泛使用的blinn-phong光照模型由于其模拟度不够,已经无法满足新一代游戏要求。需要采用新的基于物理的光照模型,来模拟高光反射,提升画面质量

技术方案

光照模型使用了微表面BRDF,环境高光的大量采样使用预处理并储存在一张cubemap多层mipmap中来模拟

我们知道,计算高光光照的基本公式如下:

f3d42c99d3a08ec9e41cf14b0449a041.png

其中,关键部分是双向反射分布函数(BRDF)。根据微表面BRDF的理论,其BRDF表示为:

a74bbddb9ac366ff92fd20f744d794f0.png

其中F为费涅耳系数,G是几何遮蔽函数,D是法线分布函数。

在本次的实现中,对费涅耳系数的模拟我们采用Schlick公式;几何遮蔽函数使用Schlick修改过的Smith模型;法线分布函数使用GGX。

d7fd5432ff8a18c37a7944ca32f7f84d.png

8b4e9ae5f872099dee031824a485c807.png

6f6ea548caa03218c3a454877ddf7d98.png

78d95750506e8c386cf08e4e225efac7.png

以上是单条入射光的计算方式,为了计算所有方向的入射光,需要对入射半球做蒙特卡洛积分。

3b28f0f92df4c2780a3ef97d4972d024.png

由于需要的采样数过多,不可能采用实时采样的方式,所以需要做数据的预处理。为了做到这一步,第一步是

af5732988e44d86e28149bb6462cd7cc.png

这里把光照剥离出来,把环境光照根据GGX的分布函数采样之后,再按照roughness从0~1储存到一张cubemap的mipmap中。

对于第二个部分,通过分析,可以把BRDF分割成两个部分:

b6672e3f5c3f354add9de9e55cb54e0d.png

因此我们可以考虑将这两个部分预先计算,放到一张贴图里,使用cos(v,h),roughness作为横纵坐标。预计算结果如下:

f98cd9fe825e8992fe303cf94566b757.png

最后使用的时候,只要把cubemap和这张贴图结合使用,即可得到环境高光的结果。

效果

使用cubemap来储存多次采样预处理结果,在实际使用中一次采样即可得到很好的结果,消耗非常小。
具体效果如下:

使用原始的phong光照模型

0251fde8ba2978a20558b1bf4efa0223.png

使用新的光照模型,无环境高光

6b9e3e8fa4aa65a932c1782d802965cc.png

新光照模型,且应用环境高光:

a91dd358884df0e6001556e04915df3a.png

改进计划

cubemap可以有多张,分布在场景的多个角落,且可以切换

转载自公司内部创新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值