Directional Light Map(Directional Irradiance)

Light Map是一个比较经典的技术,目前来说应该是一般游戏引擎中的标配,它很好的在一种拟全局光效果的质量和效率上做了中和。不过目前用的更多、质量更好的应该是Directional Light Map,它是原始LM的增强版,通过在预处理与实时还原中考量场景中表面的法向量进而增强效果。DLM的基本操作方法如下:

  • 在采样点处把其半球空间中的辐射照度用某种方法进行采集并保存(比如离线的光线跟踪);
  • 以某种方法存储额外的、与该辐射照度相关的法线信息到光照贴图中;
  • 实时渲染中通过光照贴图对像素上的场景辐照度进行还原(结合光照信息与方向信息)。

目前常用的DLM实现方法主要有三种:

Radiosity Normal Maps

该方法最早是在Valve的Source引擎中用的一种模式,它的原理应该是一种拟信号压缩与重建的方法:

  • 在采样点处选取三个正交的采样方向作为基方向,采样得到这些方向上的光照信息并保存(压缩);
  • 实时渲染中通过三个方向及其上的光照值做为基函数,对实际表面法向上的光照值进行还原(重建)。

其中的三个基方向(表面法向所在的局部切空间,如下图示)分别为:

,  , 

对应的还原计算为:

Valve的这种方法应该说还是很不错的,虽然数学理论依据不太充分,但至少看起来效果很不错,而且实现简单,效率较高。不过其也会出现一些问题,那就是当法线的方向与采样光照的主方向夹角较大(即与采样切平面的夹角较小时)容易出现一些不太正确的光照还原。

Dominant Directional Irradiance

该方法的原理可以是看作将采样点半球空间中的辐照信息处理为一个方向光(Directional Irradiance),这样在实时渲染中就可以使用反射模型进行快速还原;其中的Dominant axis就可以看作是指该平行光的方向。其操作如下:

  • 外理采样点外部辐照信息为:方向光(方向:L,颜色:CL);
  • 渲染中直接反射模型模型来还原 。

比如使用Lambert模型时对应的还原计算为:

另外,一般情况下也会使用方向贴图的空闲的Alpha通道来存储一个缩放因子,用其来控制该点上外部辐照度的方向性(即被dominant方向影响的力度)。当然,这里也可以使用其它更复杂的一些shading model来操作,不过Lambert已经足够了。该方法的计算量相对也比较小;存储空间也比较节省,只需要在传统LM的基础上再存储一张方向贴图就可以了(目前来说该方法较为流行,比如UE或Enlighten中就使用此方法)。

Spherical Harmonics

该方法与Radiosity Normal Map的方法类似(同样与Light Probe的原理类似),只不过这里使用了理论与数学依据更为充分的球谐函数来实现外部辐射照度信息的压缩与重建:

  • 把光照函数使用球谐函数进行变换存储(压缩);
  • 实时渲染中使用时直接利用SH重建进行还原即可(还原)。

这种方法比上述两种方法都更为高级,一般来说对于任意Normal上的照度信息都能正确还原,而且适应性较强,较为灵活;但同时有很大的缺点那就是存储空间较大(其LM中每个Pixel中存储的数据量相当于一个Light Probe对应的存储的内容),因而其应用范围就有所限制。

下述是LM与DLM的简单效果对比,差异还是相当明显的:

http://blog.csdn.net/bugrunner/article/details/7881819

作者:码瘾少年·麒麟子 
出处:http://www.cnblogs.com/geniusalex/ 
蛮牛专栏:麒麟子 
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/geniusalex/archive/2013/04/01/2992608.html

时间: 2024-10-13 16:11:40

Directional Light Map(Directional Irradiance)的相关文章

目前尚无满分手机!鲁大师评测安卓版核心算法(GPU篇)

手机行业内的3D图形测试已经非常普遍了,鲁大师评测的GPU测试模块知名度还算不上最高的,但是其光影效果调试.图像渲染纹理设计具备很强的专业性和稳定性.当然宣传语谁都会说,是不是真的有参考价值,还需您来判断.本期我们将继续探讨鲁大师评测的核心算法--GPU篇公平与公正是一款Benchmark的核心价值,如果做不到独立与公正,Benchmark本身的存在就毫无意义.在未来一段时间,在鲁大师陆续公布算法期间,欢迎感兴趣的用户通过各种方式参与我们进行讨论,你可以通过微博.邮件等方式与鲁大师评测团队沟通,

OpenGL ES From the Ground Up, Part 4: Let There Be Light!

FRIDAY, MAY 1, 2009 OpenGL ES From the Ground Up, Part 4: Let There Be Light! Continuing on with OpenGL ES for the iPhone, let's talk about light. So far, we haven't done anything with light. Fortunately, OpenGL still lets us see what's going on if w

[Unity3D]Unity官方认证考试模拟题

1.  以下哪一个选项不属于Unity引擎所支持的视频格式文件? [D] 后缀名为mov的文件 后缀名为mpg的文件 后缀名为avi的文件 后缀名为swf的文件 2.   HDR高动态光照渲染属于下列哪个选项的属性? [D] Lightmapping视图 Light Probe组件 Occlusion Culling视图 Camera组件 3.  Unity引擎的中,以下对Mesh Renderer组件描述正确的是哪一项?[C] Mesh Renderer组件决定了场景中游戏对象的位置,旋转和缩

《WebGL入门指南》——第2章,第2.4节一个真实的3D示例

2.4 一个真实的3D示例 WebGL入门指南 到目前为止,你也许在想"真是个还不错的正方形",然后开始怀疑我们什么时候开始画一些真正的3D图形.好吧,那就现在吧!在示例2-2中我们将会用更有趣的物体来代替正方形,我们将会完成一个看起来还不错.并且展示了大部分WebGL主要特性.同时还保持代码简洁的页面. 图2-2就是页面的最终效果.其中我们设置了标题文字,添加了一个表面贴有图片的立方体,然后在页面底部也添加了文字.另外值得一提的是,这个页面是可以交互的:点击画布元素,立方体就会开始或

1.7. 绘制几何体 Drawing Geometry

1.7. 绘制几何体 Drawing Geometry As you can see from Figure 1.1, data for drawing geometry (points, lines, and polygons) starts off in application-controlled memory (1). This memory may be on the host CPU, or, with the help of some recent additions to Ope

《Unity着色器和屏幕特效》——1.3 加载飞船维修场景并在场景中漫游

1.3 加载飞船维修场景并在场景中漫游 第一个游戏场景位于星球"Ridley VI"附近.宇航员停下飞船进行一些基础维修,为登陆星球做好准备. 在这里我们先简单地基于Unity的标准着色器来创建不同的材质,从而使得不同的物体表面拥有相近的显示质量. 1.在项目(Project)面板上找到PACKT_Scenes文件夹,并单击文件夹的图标,以便使它的内容显示在资源(Assets)面板上. 2.在资源(Assets)面板上找到名为Chapter1_Start的资源. 3.双击该资源,以便将

3D编程:Spotlights

Spotlights 一个spotlight是一个directional light和point light的组合.在world space中有一个坐标位置,但是光线只能照射到某个特定方向.另外,spotlight与point light一样,也是根据距离而衰减,但spotlight还会围绕光线的原始方向而衰减.可以把spotlight看作一个虚拟的手电筒,形成一个focus beam(聚焦光束)随着光线距离光源中心越远而衰减. 模拟一个spotlight,需要一个坐标位置,方向,辐射半径,颜色

3D编程:第7章 Additional Lighting Models

第7章 Additional Lighting Models 本章在上一章光照模型的基础上再介绍point lights,spotlights以及在场景中添加多种光源.在讲解过程中,将会进一步学习HLSL和effect框架. Point Light 场景中的一个point light就好比在你周围的某个位置有一个灯泡,灯泡的光线会辐射到四面八方.这与directional light完全相反,directional light处于无穷远,并且光线来自于同一个方向.Directional ligh

3D编程:Diffuse Lighting(漫反射光)

Diffuse Lighting(漫反射光) 不同的材质表面反射光的方式也不同.在镜面上光的反射角度与入身角度相等.当在一只猫的眼睛里看到一束怪异的光芒,这就是光的反射性:这是由于猫的眼睛反射光的方向与光源的照射方向平行,但是方向相反.漫反射表面对光的反射在各个方向上都一样. 近似计算一个漫反射光,最简单并且最常用的模型是Lambert's cosine law(朗伯余弦定律).根据Lambert's cosine law,照射到材质表面的光照亮度,与光源方向向量和面法线的夹角的余弦成正比.光源