admin管理员组

文章数量:1567012

开篇先说,这文章好难懂啊,到现在也没完全弄明白,有大佬的话欢迎指点。这篇大体意思是对Perspective Shadow Maps进行部分优化。GEMS这书这点是真挺蛋疼,很多文章都是对某项技术的优化,那先介绍介绍原来技术嘛,我都不知道原来技术为啥有毛病(当然是咱自己菜鸡)上来就给我整优化,完全看不懂。先贴上Perspective Shadow Maps技术的最原始论文链接

 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.449.9505&rep=rep1&type=pdf

一个关于shadow map技术非常好的链接,之后有时间得详细写一篇关于这个文章的积累

http://www.opengl-tutorial/intermediate-tutorials/tutorial-16-shadow-mapping

本文开篇上来又来介绍阴影渲染的两大流派。

  • 阴影体(shadow volumes)/模板阴影(stencil shadows)
  • 阴影贴图(Shadow Maps)

之前文章已经介绍过这俩技术流派了,这里就略过了。透视阴影贴图(Perspective Shadow Maps, PSMs)是由Stamminger和Drettakis 在SIGGRAPH 2002上提出的一种阴影贴图(Shadow Maps)流派的方法,通过使用在投射后空间(post-projective space)中的阴影贴图来去除其中的走样。

The most significant problems of the presented PSM algorithm are these three(PSM算法三个问题):

  • To hold all potential shadow casters inside the virtual camera frustum, "virtual cameras" are used when the light source is behind the camera. This results in poor shadow quality.(虚拟相机技术带来阴影质量降低)
  • The shadow quality depends heavily on the light position in camera space.(阴影质量很依赖于光源对相机的位置)
  • Biasing problems weren't discussed in the original paper. Bias is a problem with PSMs because the texel area is distributed in a nonuniform way, which means that bias cannot be a constant anymore and should depend on the texel position.(bias问题)

虚拟相机

如以下两个图所示,这玩意粗俗来讲,意思就是树木1不在摄像机范围内,但是光照到这个树木1投射出来的阴影投到地面后确在摄像机范围内,这可咋整呢,那就像图2似的,把摄像机虚拟的往后挪点,把树木1囊括在摄像机范围内来解决这个问题。虚拟摄像机这种技术带来的问题就是阴影质量会降低,因为本来贴近摄像机的物体,比如树木2,会因为相机向后挪动后在视野中变小,自然会影响其阴影质量。

解决虚拟摄像机的问题可以采用以下办法:对光源矩阵使用特别的投射变换。如下图所示,它由一个原始的(非后移过的虚拟相机)摄像机,一个“”逆向“”光源和摄像机后面的物体组成。

 我个人非常粗俗的理解是,该方法构造了一个很特别的矩阵,使得光源经过点1向负无穷发射,之后又转回来经过234点直至正无穷大。(这块理解不太好,望大佬指导)

 对虚拟摄像机技术还可以改进的一点是,当后移时,同时使得camera 近平面一同后移。如下图所示。

 

当光源离unit cube非常近的时候,如果我们仅使用一个shadow map texture,阴影质量会非常低。因为为了保证光源视域要囊括整个unit cube,光源视域的角度会非常大,如下图所示。因此离光源很近的区域采样值就会非常少,阴影质量就会降低。有两个办法,每个办法仅解决问题的一部分:单位立方体裁剪法,把光源摄像机对准单位立方体的必要部分;立方体映射法,使用多个纹理来存储深度信息。

最初的文章没有讨论过偏置(bias)问题。偏置是随透视阴影贴图而带来的问题,因为纹素的面积以不均匀方式分布,这意味着偏置不再是常量,而是与纹素的位置有关。

解决方案:使用在世界空间中的偏置(而且不再分析双投射矩阵的结果),然后把这个世界空间偏置转换到投射后空间。(这部分没怎么理解,望大佬指导)

最后,该方案又提到了紧邻百分比过滤(percentage-closer filtering ,PCF)优化,之前文章已经详细记录过,这里就略过了

【关键词提炼】

 

阴影渲染(Shadow Rendering)

阴影贴图(Shadow Maps)

透视阴影映射(Perspective Shadow Maps,PSMs)

紧邻百分比过滤(percentage-closer filtering ,PCF)

单位立方体裁剪法(Unit Cube Clipping)

 

 

本文标签: 透视阴影贴图GPUMaps