标签:lob 球面 cal 计算 www 变换 sub render tail
实习需要学习了一下求谐光照,总结如下:
1. 首先是下面的rendering equation
第二部分是一个半球面上的积分。
2. 球谐变换
类比傅里叶变换[采用定义在圆上的三角函数],球谐变换采用定义在球面上的一组球谐基函数。[Spherical Harmonic Lighting: The Gritty Details]有这些函数的介绍。
现在只需要知道
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来处理所有的模型顶点。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
贴一下代码
标签:lob 球面 cal 计算 www 变换 sub render tail
原文地址:https://www.cnblogs.com/redips-l/p/9221982.html