OpenGL ES 学习教程(十六) ShadowMap的理解
Posted _Captain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL ES 学习教程(十六) ShadowMap的理解相关的知识,希望对你有一定的参考价值。
目前游戏上的阴影一般用ShadowMap实现。我一直在学习LearnOpenGL上的文章,ShadowMap这一篇,说实话我两年前就开始看了,一直没明白,或者说没有认真花时间去看。
最近在给lives2d堆功能,终于也到了阴影的实现。
LearnOpenGL上ShadowMap教程地址:
这两天花时间,总结如下:
比如一个立方体 放在一面墙前面,立方体在墙上有投影,流程如下:
1、首先正常绘制立方体
2、以灯的位置为摄像机位置,再绘制一次,不输出颜色值。并且深度信息绑定到DepthTexture。
3、对于墙,以正常摄像机位置计算一次顶点位置得到A,再以灯位置计算一次顶点位置得到B。然后在FS中从DepthTexture中读取位置B对应的DepthTexture上的深度值,然后将墙体颜色乘深度值。
难点在于如何判定墙的顶点在立方体的阴影中。
再以灯位置计算一次顶点位置得到B,这其实就是将墙的顶点,也放到了 以灯的位置摄像机 里,进行一次渲染。然后将顶点深度值和DepthTexture中的深度值进行对比,如果墙的顶点深度比DepthTexture中的值更打,那么就说明在阴影中。
我用一个简单的例子来说明上面的流程。
实例代码下载:
链接: https://pan.baidu.com/s/1ff5RNr6ddkTV590jDJcsmg 密码: hxgj
以上是关于OpenGL ES 学习教程(十六) ShadowMap的理解的主要内容,如果未能解决你的问题,请参考以下文章
IOS – OPenGL ES 调节图像饱和度 GPUImageSaturationFilter
IOS – OpenGL ES 图像漩涡 GPUImageSwirlFilter
IOS OpenGL ES GPUImage GPUImageWeakPixelInclusionFilter