位置: 编程技术 - 正文

阴影映射(Shadow Map)的研究(三)(阴影映射可视域分析)

编辑:rootadmin
阴影映射(Shadow Map)的研究(三)

推荐整理分享阴影映射(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 :Shadow mapping》这篇文章从问题开始入手,研究阴影映射的本质,参考的价&#;高。

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

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

阴影映射(Shadow Map)的研究(三)(阴影映射可视域分析)

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

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

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

源码下载地址:这里

OSG 中 常用的 Uniforms osg中的Uniforms主要存在两个地方,一个是SceneView中,voidSceneView::updateUniforms()voidSceneView::updateUniforms(){if(!_localStateSet){_localStateSet=newosg::StateSet;}if(!_localStateS

OPENGL矩阵变换

Bullet有关六自由度弹性约束研究 Bullet有关六自由度弹性约束研究这段时间打算将物理引擎整合进来,于是对Bullet这款开源的物理引擎进行了一些研究。Bullet的研究也有了一段时间了,Bu

本文链接地址:https://www.jiuchutong.com/biancheng/369485.html 转载请保留说明!

上一篇:glClearBufferSubData

下一篇:OSG 中 常用的 Uniforms(osg uniform)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络