球谐光照总结
Posted redips-l
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了球谐光照总结相关的知识,希望对你有一定的参考价值。
实习需要学习了一下求谐光照,总结如下:
1. 首先是下面的rendering equation
第二部分是一个半球面上的积分。
2. 球谐变换
类比傅里叶变换[采用定义在圆上的三角函数],球谐变换采用定义在球面上的一组球谐基函数。[Spherical Harmonic Lighting: The Gritty Details]有这些函数的介绍。
现在只需要知道
- 一个定义在球面上的函数可以近似分解成一组正交基函数的加权和:F(s) ≈ ∑ fi Yi(s).
- 两个函数f(s),g(s)乘积的积分可以用两个基向量的点积近似表示:∫f(s)g(s)ds ≈∑ fi gi.
- 坐标fi的求解,类别向量的点积,函数的点积为积分:fi=∫F(s)Yi(s)d
3. 蒙特卡罗积分
求解fi需要用到神奇的蒙特卡罗积分
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面可以写代码了,看一下最简单的“dot product lighting”,也就是漫反射模型,对应的渲染方程里面的brdf部分f(p,wo,wi)是一个常数,可以拿出积分号外,现在积分号里面剩下了∫Li(p,wi)*max(n.dot(wi),0)dwi。根据2.2,我们只需要分别投影分解Li(p,wi)和max(n.dot(wi),0)dwi两个函数,利用蒙特卡洛方法求积分的时候还可以加上可见性的判断。注意需要对模型的每一个顶点都需要计算一组基向量fi,如果加上自遮挡的判断会耗费大量时间,例如下面的dragon用了6000s来处理所有的模型顶点。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
贴一下代码
以上是关于球谐光照总结的主要内容,如果未能解决你的问题,请参考以下文章