shader之旅-7-平面阴影(planar shadow)

根据《real-time shadow》这本书第二章中的推导,实现了最简单的阴影技术。

planar shadow通过一个投影矩阵将被灯光照射的物体的顶点沿着光线方向投影到接受阴影的平面。


关键的问题是这个投影矩阵怎么得到。

阴影所在平面用下式表示:其中n是法线,d是常量,x是平面上的点。

灯光和被投影的顶点所在的直线用下式来表示:,其中l是光源的位置,v是被投影的顶点,t是系数。

推导过程:


所以最终得到投影到平面上的顶点坐标写成齐次坐标的形式为:


写成矩阵的形式就是


为了在代码中实现,我新加了两个类,分别是Mesh和Program,因为在析构时涉及到删除OpenGL内部的资源的问题,所以如果不处理好拷贝构造和拷贝赋值就会出现问题,所以在没想过好的处理方案之前把他俩都实现成了无法复制的类。

代码已经更新https://github.com/xsj0jsx/explore_shader


你可能感兴趣的:(shader之旅-7-平面阴影(planar shadow))