阴影映射(Shadow Map)的研究(一)

这段时间在搭好自己的框架后,就开始马不停蹄地研究阴影映射的内容了,说起阴影映射,倒不如说shadow map更容易被专业人士所接受。shadow map是我进阶图形学的第一课,以后的图形学内容,会变得非常复杂,每写一个例子,都要牵涉到非常多的算法以及代码。但是我不得不这么做,因为只有这样才能成为计算机图形学的高手。

蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/44628427。欢迎同行前来探讨。

shadow map简单地说,就是让通过计算机图形的模拟,在3D场景中产生阴影的效果。这个算法可以说很久之前就已经存在了,而随着硬件性能的提升,我们可以从帧缓存中提取阴影,然后在让其作用在我们想要产生阴影的表面上,非常简单。本例呢,就是将FBO与shadowmap结合起来,渲染一个带有阴影的场景。

要生成含有shadow map的场景,我们要进行至少两遍的渲染。要知道,阴影的形成是要有光源的。但是除了ADS(Ambient、Diffuse、Specular)渲染之外,我们只用到光源的位置以及视向(lookAt)。但是这是一个很重要的信息:我们正在创建阴影!

下面是我将FBO与shadow map结合的一些实践。

1、 FBO绑定,开始渲染到FBO;

2、 视点转移到光源位置,利用position以及lookAt生成viewMatrix;

3、 将着色器中渲染light space shadow map的深度图(有关深度图生成的shader,参照这里);

4、 FBO解除绑定,开始渲染到default render target;

5、 视点转移到摄像机,准备普通的渲染;

6、 在着色器中普通地渲染场景,同时,在需要添加阴影映射的地方使用我们的深度图作为纹理贴上去即可。

需要说明的是,这只是一个不完全的演示效果,因为只是生硬地将深度FBO纹理贴在了下面的平面上,所以深度的颜色效果还是看得出来的,并且这个程序没有做ADS光照效果,更没有做遮挡的深度比较,所以接下来需要将这个例子深入,以后添加上多纹理混合,这样效果会更好一些。最后是这个程序在Android以及Windows Phone上面的运行情况。

阴影映射(Shadow Map)的研究(一)相关推荐

  1. 计算机图形学【GAMES-101】6、阴影映射(Shadow Mapping)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  2. openGL实现阴影映射(Shadow Mapping)

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 阴影映射 阴影映射原理 二.使用步骤 显示效果 源码下载 参考 前言 阴影是光线被阻挡的结果:当一个光源的光线由于其他物体的阻挡不能 ...

  3. 阴影映射(Shadow Map)的研究(三)

    阴影映射(Shadow Map)的研究(三) 最近为了自己制作的项目可是吃了不少苦头,这其中关键的一点就是想要实现阴影映射(Shadow Map).为了实现目标,我参考了网络上很多相关的资料,也看了一 ...

  4. 【Unity Shader】Unity中阴影映射标准制作流程

    前半部分的基于图片的实时阴影技术是百人计划的前半部分总结,后面的Unity中的实现过程是<入门精要>中的实现. 1 基于图片的实时阴影技术 这里的"基于图片"指阴影生成 ...

  5. 【Shading】Shadow Mapping 阴影映射

    课程来源:GAMES101-现代计算机图形学入门-闫令琪 Lecture12 GAMES101 现代计算机图形学入门 主讲老师:闫令琪,UCSB 课程主页:https://sites.cs.ucsb. ...

  6. [转载] [OpenGL] shadow mapping(实时阴影映射)

    参考链接: Java中静态函数的阴影(方法隐藏) 转载原创:ZJU_fish1996   http://blog.csdn.net/zju_fish1996/article/details/51932 ...

  7. 联级阴影贴图CSM(Cascaded shadow map)原理与实现

    联级阴影贴图CSM(Cascaded shadow map)原理与实现 CSM是利用分层的ShadowMap技术,实现大场景的阴影算法.示意图如下图: 我们通过给眼视锥分片,为每个分片生成一个相同分辨 ...

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

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

  9. [OpenGL] shadow mapping(实时阴影映射)

    source:原文地址 code:点击可以直接下载源代码 1978年,Lance Williams在其发表的论文<Casting curved shadows on curved surface ...

最新文章

  1. 康威生命游戏是如何搭建计算机的?
  2. LOL手游上线!同步专属限量游戏红包封面,还不快来拿?
  3. 终于感觉掌握了一门重要的技术
  4. SAP Spartacus core fromOccBaseSites逻辑
  5. [linx] ubuntu网络重启命令
  6. docker 部署nginx 使用keepalived 部署高可用
  7. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
  8. python3-开发进阶补充Django中的文件的上传
  9. Matrix: android 中的Matrix (android.graphics.Matrix) (转)
  10. python tornade 模板扩展
  11. 人工智能算法自动化测试_自动化:算法如何塑造我和你的生活
  12. Python 函数参数引用(传值传址)
  13. 经纬度转化为xy坐标系_高德地图经纬度导入Gis有偏移,纠正方法(附Python代码)丨GCJ-02转WGS84...
  14. 三自由度机械臂的三维设计
  15. linux里的.mht是什么文件,Linux下阅读MHT文件
  16. bootstrap中使用日历控件
  17. 七牛云发送短信验证码
  18. 已经围上为何不算目_有答案的小学语文教师教材过关考试模拟试卷1
  19. Mac电脑如何启用root用户
  20. 如何成为数字化人才?

热门文章

  1. Linux 内存泄漏检测工具 Valgrind
  2. yahoo pop3设置方法
  3. AI伪原创神器,AI文案生成器!
  4. 2021秋招-场景题-垃圾评论、垃圾短信、垃圾邮件的检测技术方法
  5. 一文快速理解C++容器
  6. MySQL Class3
  7. LabVIEW新手学习——使用DAQ相关函数前仿真配置!
  8. 做在线投票防止作弊的一些体会
  9. Linux基础命令学习【mount挂载及注意事项,cp 拷贝,mv移动,alias别名定义,】
  10. 浅谈三文鱼的营养价值、营养成分及养生功效