信阳网站建设汉狮报价,赶集网2022年最新招聘,注册个免费网站,做网站包括哪些概述
如果我们有一个上半球的余弦分布函数(Do)(D_{o})(Do)#xff0c;并对这个余弦分布函数进行一个矩阵(M)(M)(M)变换#xff0c;变换为一个新的分布函数(D)(D)(D)。 DMDoD M D_{o}DMDo 这就是基本思想#xff1a;用一个余弦分布函数来拟合出不同的分布函数#xff…
概述
如果我们有一个上半球的余弦分布函数(Do)(D_{o})(Do)并对这个余弦分布函数进行一个矩阵(M)(M)(M)变换变换为一个新的分布函数(D)(D)(D)。
DMDoD M D_{o}DMDo 这就是基本思想用一个余弦分布函数来拟合出不同的分布函数并且误差很小。
LTC基本定义与性质
我们定义DoD_{o}Do为我们的基函数也就是我们的原始分布函数。 我们在DoD_{o}Do上采样一个方向向量ωo\omega_{o}ωo那么我们对这个方向向量做一个线性变换也就是做一个MMM矩阵乘法变换为一个新的方向向量ω\omegaω。
ωMωo∣∣Mωo∣∣\omega \frac{M\omega_{o}}{||M\omega_{o}||}ω∣∣Mωo∣∣Mωo,ωoM−1ω∣∣M−1ω∣∣\omega_{o} \frac{M^{-1}\omega}{||M^{-1}\omega||}ωo∣∣M−1ω∣∣M−1ω,
那么一个目标分布函数D(ω)D(\omega)D(ω)如何变换为Do(ωo)D_{o}(\omega_{o})Do(ωo)呢
即就是一个变量替换
D(ω)Do(ωo)∂ωo∂ωDo(M−1ω∣∣M−1ω∣∣)∣M−1∣∣∣M−1ω∣∣3D(\omega) D_{o}(\omega_{o})\frac{\partial\omega_{o}}{\partial\omega} D_{o}(\frac{M^{-1}\omega}{||M^{-1}\omega||})\frac{|M^{-1}|}{||M^{-1}\omega||^{3}}D(ω)Do(ωo)∂ω∂ωoDo(∣∣M−1ω∣∣M−1ω)∣∣M−1ω∣∣3∣M−1∣
∂ωo∂ω∣M−1∣∣∣M−1ω∣∣3\frac{\partial\omega_{o}}{\partial\omega} \frac{|M^{-1}|}{||M^{-1}\omega||^{3}}∂ω∂ωo∣∣M−1ω∣∣3∣M−1∣是Jacobian项可以从几何关系上进行推导。
那就让我们简单推导一下吧(假如想要了解详细请参考原文哦) 这要从立体角开始推导啦。我们定义一个原始分布上的立体角∂ωo\partial\omega_{o}∂ωo将其进行MMM变换得到一个新的立体角∂ω\partial\omega∂ω。
∂ω∂ωoAcosθr2\partial\omega \partial\omega_{o}A\frac{cos\theta}{r^{2}}∂ω∂ωoAr2cosθ
这就是一个立体角的定义。让我们来探讨一下里面的面积与距离的表达吧 偷懒一下可以从图中看到面积与距离的表达那么让我们来化简一下吧。
Mω1×Mω2∣M∣M−T(ω1×ω2)∣M∣M−TωoM\omega_{1}\times M\omega_{2} |M|M^{-T}(\omega_{1} \times \omega_{2}) |M|M^{-T}\omega_{o}Mω1×Mω2∣M∣M−T(ω1×ω2)∣M∣M−Tωo∂ω∂ωo∣M∣∣∣Mωo∣∣3\frac{\partial\omega}{\partial\omega_{o}} \frac{|M|}{||M\omega_{o}||^{3}}∂ωo∂ω∣∣Mωo∣∣3∣M∣∂ωo∂ωM−1∣∣M−1ω∣∣3\frac{\partial\omega_{o}}{\partial\omega} \frac{M^{-1}}{||M^{-1}\omega||^{3}}∂ω∂ωo∣∣M−1ω∣∣3M−1
如果MMM是缩放矩阵或者旋转矩阵这个Jacobian项等于一。即分布形状是不变的。
让我们假设矩阵是缩放矩阵(MλIM \lambda IMλI)
∣M−1∣M∣∣λI∣λ3|M^{-1} |M| |\lambda I| \lambda^{3}∣M−1∣M∣∣λI∣λ3∣∣M−1ω∣∣∣∣λIω∣∣λ||M^{-1}\omega|| ||\lambda I \omega|| \lambda∣∣M−1ω∣∣∣∣λIω∣∣λ∂ωo∂ω∣M−1∣∣∣M−1ω∣∣31\frac{\partial\omega_{o}}{\partial\omega} \frac{|M^{-1}|}{||M^{-1}\omega||^{3}} 1∂ω∂ωo∣∣M−1ω∣∣3∣M−1∣1
让我们假设矩阵是旋转矩阵MRM RMR。
∣M∣∣M−1∣1|M| |M^{-1}| 1∣M∣∣M−1∣1∣∣M−1ω∣∣1||M^{-1}\omega|| 1∣∣M−1ω∣∣1∂ωo∂ω1\frac{\partial\omega_{o}}{\partial\omega} 1∂ω∂ωo1
那么被变换后的分布DDD有哪些性质呢
首先是范数
∫ΩD(ω)dω∫ΩDo∂ωoωdω∫ΩDo(ωo)dωo\int_{\Omega}D(\omega)\mathrm{d}\omega \int_{\Omega}D_{o}\frac{\partial\omega_{o}}{\omega}\mathrm{d}\omega \int_{\Omega}D_{o}(\omega_{o})\mathrm{d}\omega_{o}∫ΩD(ω)dω∫ΩDoω∂ωodω∫ΩDo(ωo)dωo
其次对于多边形积分相等
∫PD(ω)dω∫PoDo(ωo)dωo\int_{P}D{(\omega)}\mathrm{d}\omega \int_{P_{o}}D_{o}(\omega_{o})\mathrm{d}\omega_{o}∫PD(ω)dω∫PoDo(ωo)dωo PoM−1PP_{o} M^{-1}PPoM−1P 使用LTC近似BRDF
我们在对LTC有了一些基本的认识之后让我们用它来进行拟合BRDF吧 这里作者使用了各项同性的GGX微表面分布模型。
对于一个原分布DoD_{o}Do我们选择一个上半球的余弦分布当然还可以选择cosine2cosine^{2}cosine2均匀半球分布等
Do(ωo(x,y,z))1πmax(0,z)D_{o}(\omega_{o} (x,y,z)) \frac{1}{\pi}max(0,z)Do(ωo(x,y,z))π1max(0,z)
我们来定义一下目标分布吧也就是我们将要拟合的BRDF分布函数带着余弦项的
D≈ρ(ωv,ωl)cosθlD \approx \rho(\omega_{v},\omega_{l})cos\theta_{l}D≈ρ(ωv,ωl)cosθl
对于一个各项同性的材质而言BRDF函数分布只依赖于入射方向ωv(sinθv,0,cosθv)\omega_{v} (sin\theta_{v},0,cos\theta_{v})ωv(sinθv,0,cosθv)和粗糙度α\alphaα。
我们发现可以用一个矩阵MMM来很好的拟合DDD矩阵被写为
M[a0b0c0d01]M \begin{bmatrix} a 0 b \\ 0 c 0\\ d 0 1 \end{bmatrix}M⎣⎡a0d0c0b01⎦⎤
可以看见这个矩阵只有四个参数需要被确定。 可以从图中看出拟合效果很不错
使用LTC进行多边形光源的着色
我们在不同的多边形光源PPP上计算直接光照的着色ωv\omega_{v}ωv代表视口方向(view direction)ρ\rhoρ代表BRDF函数LLL是多边形光源出射的radiance。
I∫PL(ωl)ρ(ωv,ωl)cosθldωlI \int_{P}L(\omega_{l})\rho(\omega_{v}, \omega_{l})cos\theta_{l}\mathrm{d}\omega_{l}I∫PL(ωl)ρ(ωv,ωl)cosθldωl
我们使用LTC对BRDF函数进行拟合可得
I∫PL(ωl)ρ(ωv,ωl)cosθldωl≈∫PL(ωl)D(ωl)dωlI \int_{P}L(\omega_{l})\rho(\omega_{v}, \omega_{l})cos\theta_{l}\mathrm{d}\omega_{l} \approx\int_{P}L(\omega_{l})D({\omega_{l})}\mathrm{d}\omega_{l}I∫PL(ωl)ρ(ωv,ωl)cosθldωl≈∫PL(ωl)D(ωl)dωl
这里我们假设多边形光源出射的radiance是一个常数即L(ωl)LL(\omega_{l}) LL(ωl)L那么我们可以进一步简化
I∫PL(ωl)D(ωl)dωlL∫PD(ωl)dωlI \int_{P}L(\omega_{l})D({\omega_{l})}\mathrm{d}\omega_{l} L\int_{P}D(\omega_{l})\mathrm{d}\omega_{l}I∫PL(ωl)D(ωl)dωlL∫PD(ωl)dωl
我们再进行积分变换
∫PD(ω)dω∫PoDo(ωo)dωoE(Po)\int_{P}D(\omega)\mathrm{d}\omega \int_{P_{o}}D_{o}(\omega_{o})\mathrm{d}\omega_{o} E(P_{o})∫PD(ω)dω∫PoDo(ωo)dωoE(Po)
对于一个余弦分布的半球面函数上的多边形积分是有表达式的即
E(p1,...,pn)12π∑i1nacos(pi,pj)⟨pi×pj∣∣pi×pj∣∣,[001]⟩E(p_{1},...,p_{n}) \frac{1}{2\pi}\sum_{i1}^{n}acos(p_{i},p_{j})\left \langle \frac{p_{i}\times p_{j}}{||p_{i}\times p_{j}||}, \begin{bmatrix}0\\ 0\\1\end{bmatrix} \right \rangleE(p1,...,pn)2π1∑i1nacos(pi,pj)⟨∣∣pi×pj∣∣pi×pj,⎣⎡001⎦⎤⟩
这里的j(i1)mod(n)j (i1)mod(n)j(i1)mod(n)注意将多边形光源进行变换后要将光源进行上半球面的裁剪。
这里的证明就不再赘述了。
对于带着纹理的光源来说作者给出的方法很奇怪就不再讨论。
总结
对于这篇paper将一种数学方法引入了图形学是很不错的。
优点
对于简单多边形光源(矩形三角形等)来说对于场景的着色很快效果很棒误差小。
缺点
复杂多边形光源(心形等)的着色速度慢已经很难达到实时。只能针对二维平面上的多边形光源。只能进行直接光照着色。
实现流程
通过视口方向ωvα\omega_{v}\alphaωvα进行采样LUT得到矩阵MMM。将面积光源进行旋转即面积光源坐标系转变为以像素点为原点的局部坐标系。即构造一个TBN矩阵。 mul(Minv, transpose(mat3(T, , N)));将世界坐标系下的面积光源的顶点变换。裁剪多边形。进行线积分。
这里给出LTC的网站想了解更详细的内容可以看看哦 对那充满不安的日子说再见吧对那充满不安的日子说再见吧对那充满不安的日子说再见吧 向着未知的梦境之地前行向着未知的梦境之地前行向着未知的梦境之地前行 我想总有一日我会变得更加坚强我想总有一日我会变得更加坚强我想总有一日我会变得更加坚强