作者:idovelemon
日期:2018-03-17
来源:CSDN
主题:Prefilter Environment Map
引言
前面的章节里面,我们讲述了如何通过brute force的方式去实现Specular的Image based Lighting。但是这种实现,在实际的游戏运行过程中消耗太大,实用价值不高。所以,本篇文章将给出对于这中brute force方式的优化处理,以加快Specular Image based Lighting的计算。这个处理,就是Unreal4引擎的实现方式。同时,添加对Albedo Map,Roughness Map,Metallic Map和Normal Map的应用,彻底展现下IBL的魅力。
优化方法
首先,我们给出我们需要计算的渲染方程:
Lo=∫ΩLi(l)f(l,v)cosθdwi L o = ∫ Ω L i ( l ) f ( l , v ) c o s θ d w i
在前面一篇文章里面,我们知道了,可以通过Importace Sampling,使用Monte Carlo积分来求解上面的积分方程,如下:
L0≈1N∑k=1NLi(lk)f(lk,v)cosθkp(lk,v) L 0 ≈ 1 N ∑ k = 1 N L i ( l k ) f ( l k , v ) c o s θ k p ( l k , v )
为了加速对该公式的计算,Unreal4将上述公式划分成了两个不同求和部分(为什么我想不出来这种近似的方法,唉!!!),这两个不同的求和部分能够分别通过预先计算来得到结果。
L0≈1N∑k=1NLi(lk)f(lk,v)cosθkp(lk,v)≈(1∑Nk=1cosθk∑k=1NLi(lk)cosθk)(1N∑k=1Nf(lk,v)cosθkp(lk,