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

最近为了自己制作的项目可是吃了不少苦头,这其中关键的一点就是想要实现阴影映射(Shadow Map)。为了实现目标,我参考了网络上很多相关的资料,也看了一些案例,最终花了我一个月的时间将这个效果实现了。

阴影映射这样的效果,其实在即将发布的Qt 3D中已经有相关的介绍,KDAB中有一篇文章《Shadow Mappingin Qt3D 2.0》就在Qt 3D的框架上实现了阴影映射。不过当时这个效果是假定目标机器支持OpenGL 3.0规范的,目前大部分设备,至少是现在,还只能支持OpenGL ES2.0,因此文章无法很好的参考,于是我转到了其它相关的教程,看看的能不能在OpenGL ES 2.0下实现阴影映射的效果。好在网络上是有这样宝贵的资料的,在code project网站上,有一篇很好的文章,虽然是基于Android的,使用Java语言编写,但是能够很好地显示阴影映射的效果,最重要的是,由于Android基本上是支持OpenGL ES 2.0的,因此它这个是基于OpenGL ES 2.0来写的,给我们带来了很好的参考。原文是:《Shadow Mappingwith Android OpenGL ES 2》。此外,文章引用了其它的链接,其中《Tutorial 16 :Shadow mapping》这篇文章从问题开始入手,研究阴影映射的本质,参考的价值高。

要实现基于OpenGL ES 2.0的阴影映射,要攻克这三个技术难点:

1、 熟练操作FBO。帧缓存FBO是需要熟练操控的,因为FBO可以很快地将深度图写入一块显存中,然后作为纹理渲染到真实的场景中。

2、 掌握着色器的使用。由于OpenGL ES 2.0只允许使用着色器来对其进行渲染,因此对着色器的书写熟练程度要求较高。

3、 掌握将float深度数据分拆成vec4再将vec4合并成float的操作。这个已经成为业内熟练掌握的技能之一了,网络上搜索“how to pack float into RGBA”,能够得到很多有用的回答。

我在熟读《Shadow Mappingwith Android OpenGL ES 2》文章以及源码数遍之后,使用Qt将测试的场景移植了过来。下面是效果图:

源码下载地址:这里

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

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

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

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

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

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

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

  4. 【Shading】Shadow Mapping 阴影映射

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

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

    阴影映射(Shadow Map)的研究(一) 这段时间在搭好自己的框架后,就开始马不停蹄地研究阴影映射的内容了,说起阴影映射,倒不如说shadow map更容易被专业人士所接受.shadow map是 ...

  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. 介绍 9 款 MySQL 常见的图形化工具,第三款我用了 10 年
  2. 网站页面相关性从五个方面进行判断
  3. 过滤3个字节以上的utf-8字符
  4. 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~
  5. Java 泛型背后的原理是什么?
  6. 如何构建银行数据仓库
  7. JavaWeb中的乱码解决方法总结
  8. 类从未使用_如果您从未依赖在线销售,如何优化您的网站
  9. Golang groupcache LRU 缓存简介与用法
  10. CA ARCserve Backup系列(1)—安装
  11. 深度学习|三维重建:R-MVSNet
  12. Linux学习笔记1 - Linux系统简介
  13. 三维医学图像数据标注 3D Slicer
  14. java打印两个小人_Swing多线程实现奔跑的小人动画代码实现 | 彬菌
  15. 华为热设计工程师待遇_【华为热设计工程师面试】华为的面试是我面试过程中相对简单的一个。-看准网...
  16. python 生成有效的四要素
  17. GHOST系统(迅雷下载集合)
  18. 安服/渗透测试面试问题总结
  19. 老师傅传授,数控车床对刀步骤
  20. 火车头抓取阿里巴巴内容页

热门文章

  1. Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
  2. python定义变量规范_Python 变量定义规范,具体内容
  3. 漫画|干翻一切的王者语言到底是谁?
  4. 我们正进入另一个黑暗和无知的时代----《三联生活周刊》 (转载)
  5. 【C++】printf格式化输出
  6. Android Button 属性详解
  7. 学习笔记(09):Python零基础轻松从入门到实战-字符和字符串-2
  8. 怎么样才能写好自媒体原创文章?掌握好这3要点就够了
  9. 【绿茶书情】:《SOHO小报》和《凤… - 绿茶的日志 - 网易博客
  10. @Size、@Length、@Max、@Min注解的含义和区别