VPL(Virtual Point Light 虚拟点光源)
算法有很多,但是中心思想是以虚拟的点光源为间接光提供光照。
RSM(Reflective Shadow Map 反射阴影贴图):
1.shadow map的升级版,在shadow map的时候,我们会获取light空间的深度图,以此为基础判断阴影遮蔽。但是RSM除了记录depth以外,还需要记录PN(Position & Normal)和辐射通量(radiant flux),这个辐射通量计算起来比较麻烦。
辐射通量即是intensity* solid angle,对于平行光源来说,可以认为每个像素都占有了相同的solid angle,因此辐射通量是一个常数。而对于聚光灯来说,越偏离主方向的像素占有的solid angle 越小,因此需要乘上一个 cosine 因子(如果考虑intensity的衰减,那么还要乘上相应的衰减因子)。最后需要存储的反射辐射通量,因此还要乘上一个反射系数。
这个是计算光强度的,辐射通量和法线方向已知。
2.在渲染的时候怎么利用Reflective Shadow Map得到场景中任意一点x的E_1呢,首先将x投影到light space,得到在RSM中的参数坐标(s, t),在这里近似的采样RSM中位于点 (s, t) 附近的像素点作为pixel light set,若x点的法线为n,那么每个 pixel light (设为p)对点 x 贡献的辐射度为:
SII (Splatting Indirect Illumination 泼洒间接光照):
RSM的最大缺点就是每个像素都需要采样好几个light point,然后计算光照强度,这样会引入大量的计算。为此,SII的思路是:
1.首先在 RSM 中采样一定数量的 pixel lights,采样不一定是均匀分布的,比如在整体辐射通量比较高的地方可以采样更多的点(importance sampling)。
2.然后每一个 pixel lights被当作一个 virtual point light(VPL),并投影到screen space。每一个VPL跟据它的flux和normal可以得到一个影响区域(比如可表现为screen space 中的一个矩形区域),并假设仅所有位于这个区域内的点受到此VPL的照明(也就是相当于将VPL的flux溅射(splat)在其整个影响区域中)。
3.最后就是用 deferred shading的那一套进行光照计算即可。
这种方式,其实就是统一进行采样,然后把采样的light point当做点光源,进行延迟光照。
MSII(Multiresolution splatting for indirect illumination):
MSII在性能上应该没有太大的体现,只是在效果上更接近全局光照,它的理论基础是间接的这种低频光照,对相邻像素引擎的变化不会太大。如果使用SII的话,由于虚拟点光源是局部的,很容易造成,那种不同点光源区域的像素之间差异比较大。
1.首先将screen划分成为一个较低分辨率(比如16*16)的网格,每个格子称为一个subsplat
2.然后分别考查每一个subsplat,对于几何变化较小的subsplat来说,可以直接在这个低分辨率粒度下进行splatting,当计算完成后整个subsplat将得到相同的辐照度,这个结果已经足够。
3.但是对于几何不连续的subsplat,则还需要进行进一步的划分(这就是为什么称为multiresolution splatting)。对于是否还进行进一步划分可以通过min-max mipmap来判断,这里需要建立四张mipmap,一张存depth,另外三张分别存normal的三个分量。每次划分将一个subsplat分成四个sub-subsplats, 然后再分成16个…就这样通过层次性地细化来完成整个的splatting过程。
从算法的复杂度来讲,这种方式的算法是比较复杂的,但是它相对于光线追踪优秀的是,光线追踪的效率不会收敛反而会因为三角形面片的增加而俱增,而MSII的效率比较稳定。
龚大实现的流程图:
CE3全局光照:
1.它也是基于RSM实现的,所不同的是在采集完虚拟的点光源后,用一个3D纹理(32×32×32)把所有的虚拟光源存储起来。
2.对每个虚拟光源进行SH球谐光照计算,把计算的结果保存到3D纹理中,每一个都这样计算一遍。这两步其实就是把光在空间里面进行传递,传递后的结果就是3D纹理中每一个格子的光照值。
3.最后,直接使用世界空间的坐标对3D纹理进行访问,获取间接光照值,进行混合。
从效果上来说,CE3这个应该是最好的,复杂度也高一些,这也算是融合了VPL和SH吧。这种全局光照的算法,始终都是打补丁的方式,你要增加更好的效果,就必须增加算法的复杂度。我并不推崇这种算法,相比而言我更喜欢光线追踪这种类型的。
相关推荐
unity 全局光照.pdf
详细介绍 Unity全局光照技术入门 知识。包括理论上的探讨,参数的详细说明,还有Shader中的应用等。
基于蒙特卡洛法的全局光照算法C++实现源码.zip基于蒙特卡洛法的全局光照算法C++实现源码.zip基于蒙特卡洛法的全局光照算法C++实现源码.zip基于蒙特卡洛法的全局光照算法C++实现源码.zip基于蒙特卡洛法的全局光照算法...
动态场景的全局光照实时绘制,一篇浙大的硕士论文,里面对于光照技术有很详细的讲解。
第17章 前端之全局存储:Vuex=Store Store用于对数据进行存储,并共享以为所有需要的Vue页面中的调用提供数据及其方法支撑;Vuex是Store的内置引用包,即如果想要前端Vue程序支撑Store必须在新建Vue程序;如果Vue...
基于直接光照的全局光照模拟,看看有点收获,但不是很大。
Unity 5 中的全局光照技术详解.doc Unity 5 中的全局光照技术详解.doc Unity 5 中的全局光照技术详解.doc Unity 5 中的全局光照技术详解.doc Unity 5 中的全局光照技术详解.doc
对能量大的能代表多个光源的主光源,采用立即辐射度的方法,跟踪其光线产生虚拟点光源(VPLS:virtual Point Lights),这些VPLS再照亮场景实现实时的一次反射的间接光照。对场景中其他非主光源采用预计算光照图的方式...
信息技术行业中美医疗IT全局复盘:百虑一致,殊途同归-1119-长江证券-21页.pdf
1. 光与表面的交互 2. 采样与重建 3. 光线追踪 4. 基于预计算的光照技术 5. DXR与实时光线追踪
以CryEngine DX11 全局光照+HDR展示Demo-Sponza Atrium为原型打造的3D技术Demo展示。 第一部分(共两部分) -Sponza model was downloaded from crytek's website:http://www.crytek.com/downloads/technology/ -...
以CryEngine DX11 全局光照+HDR展示Demo-Sponza Atrium为原型打造的3D技术Demo展示。 第二部分(共两部分) 第一部分网址:http://download.csdn.net/detail/jerrycoldis/4496155 -Sponza model was downloaded ...
这个是光照的一个练习demo
游戏插件动态实时全局光照系统.zip模型资源unity模型资源下载游戏插件动态实时全局光照系统.zip模型资源unity模型资源下载游戏插件动态实时全局光照系统.zip模型资源unity模型资源下载 1.合个人学习技术做项目参考 2...
一个关于osg光源的例子,包括全局光与混合光,此处设置光源的位置时可以移动的
基于BRDF和GPU并行计算的全局光照实时渲染.pdf
C4D的GI(全局光照)[汇编].pdf
比利时的 鲁汶大学 计算机系教授 Philip Dutré 的全局光照教程,和他与合作者在 2002年 SIGGRAPH ppt
例如,你可以使用这个文件来创建全局的 Vue 实例,定义全局组件,添加全局指令,以及访问全局的 mixin、过滤器、插件等。 具体来说,`vue.global.js` 文件定义了以下内容: 1. `Vue` 对象:全局范围的 Vue 构造...