开篇先说,这文章好难懂啊,到现在也没完全弄明白,有大佬的话欢迎指点。这篇大体意思是对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.org/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)

GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)相关推荐

  1. 阴影贴图(Shadow mapping)

    安卓demo 下载 转载请声明出处:http://blog.csdn.NET/xiaoge132/article/details/51458489 阴影贴图(Shadow mapping) 是在三维计 ...

  2. GPU Gems1 - 25 用纹理贴图进行快速过滤宽度的计算

    这章介绍在片元shader中计算导数近似值的技术.这个技术把特别的值载入纹理mipmap的每个级别,以特殊的方式使用纹理映射硬件,计算出导数的结果,给出在屏幕上的像素间某个量的变化率. Cg标准程序库 ...

  3. GPU Gems1 - 11 阴影贴图反走样

    这章介绍了如何通过邻近百分比过滤方法(Percentage-Closer Filtering , PCF)有效减少阴影贴图的反走样,并描述了如何实现一个简化版本,并对PCF方法进行了一定改进.关于阴影 ...

  4. GPU Gems1 - 12 全方位的阴影映射

    在这章中,把阴影贴图的思路扩展到正确处理全方位的(点)光源中,其中包括了实现细节,也涉及到基本硬件能力不足时的低效运行策略. 首先,这篇文章也谈到了在实时计算机图形学中产生可见阴影的两个流行方法是: ...

  5. OpenGL3.0教程 第十六课:阴影贴图

    OpenGL3.0教程 原文链接:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-12-opengl-extensions ...

  6. dx12 龙书第二十章学习笔记 -- 阴影贴图

    对于龙书这本入门级别的书籍来说,我们仅关注于基本的阴影贴图算法.而像级联阴影贴图(cascading shadow map)[Engel06]这种效果更佳却也更为复杂的阴影技术,实则都是由这基本的阴影 ...

  7. Shadow Map阴影贴图技术之探 【转】

    这两天勉勉强强把一个shadowmap的demo做出来了.参考资料多,苦头可不少.Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势.本 ...

  8. opengl 深度详解_一步步学OpenGL(23) -《阴影贴图1》

    教程 23 阴影贴图1 原文: http://ogldev.atspace.co.uk/www/tutorial23/tutorial23.html CSDN完整版专栏: https://blog.c ...

  9. OpenGL教程翻译 第二十三课 阴影贴图(一)

    第二十三课 阴影贴图(一) 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 阴影和光是紧密联系在一起的,因为如果你想要产生一个阴影就必须要光.有许多的 ...

最新文章

  1. 知道邻边和斜边求角度_从数学史角度看数系发展
  2. python中是干嘛的-学 Python 都用来干嘛的?
  3. 苛评VCL: 接口与TObject
  4. 如何提高网页中图片显示的用户体验(附源码下载)
  5. 天池在线编程 2020国庆八天乐 - 4. 生成更大的陆地(BFS)
  6. 国内外物联网平台初探(篇五:机智云平台)
  7. kafka 修改分区_kafka修改分区和副本数
  8. python成长之路【第七篇】:面向对象
  9. 大三寒假--算法复习
  10. 蒙特卡洛估值计算(欧式期权)
  11. 使用python实现嵌套压缩包解压
  12. OpenCV曝光参数和快门时间的对应关系
  13. 二级C语言office公共基础知识点
  14. html实现安卓手机重启,这12行代码分分钟让你电脑崩溃手机重启
  15. Linux之USB无线网卡开发(二)
  16. python中做为词云轮廓的图片,Python如何生成词云图片
  17. android中按钮右对齐,在Android中左右对齐双按钮布局
  18. 英国经济学专业哪些院校比较好?
  19. Android获取NFC标签和NFC十进制16进制ID
  20. 逆袭高富帅 屌丝成长必备APP大搜罗

热门文章

  1. java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文
  2. java什么内部类_Java的内部类学习
  3. 选购计算机五个原则,双十一笔记本电脑推荐
  4. android程序启动动画,Android设置软件启动动画(以及初次安装的几张引导图)
  5. java–jwt_java – Spring引导如何使用jwt管理用户角色
  6. android微信小程序支持横屏,微信小程序关于横屏存在的一些问题
  7. 实验7-3-7 字符转换 (15分)
  8. aix升级openssh_AIX5.3如何安装openssh | 学步园
  9. JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载
  10. CodeForces - 1058D D. Vasya and Triangle