shader之旅-7-平面阴影(planar shadow)
2015-05-26 14:35
417 查看
根据《real-time shadow》这本书第二章中的推导,实现了最简单的阴影技术。
planar shadow通过一个投影矩阵将被灯光照射的物体的顶点沿着光线方向投影到接受阴影的平面。
关键的问题是这个投影矩阵怎么得到。
阴影所在平面用下式表示:其中n是法线,d是常量,x是平面上的点。
灯光和被投影的顶点所在的直线用下式来表示:,其中l是光源的位置,v是被投影的顶点,t是系数。
推导过程:
所以最终得到投影到平面上的顶点坐标写成齐次坐标的形式为:
写成矩阵的形式就是
为了在代码中实现,我新加了两个类,分别是Mesh和Program,因为在析构时涉及到删除OpenGL内部的资源的问题,所以如果不处理好拷贝构造和拷贝赋值就会出现问题,所以在没想过好的处理方案之前把他俩都实现成了无法复制的类。
代码已经更新https://github.com/xsj0jsx/explore_shader
planar shadow通过一个投影矩阵将被灯光照射的物体的顶点沿着光线方向投影到接受阴影的平面。
关键的问题是这个投影矩阵怎么得到。
阴影所在平面用下式表示:其中n是法线,d是常量,x是平面上的点。
灯光和被投影的顶点所在的直线用下式来表示:,其中l是光源的位置,v是被投影的顶点,t是系数。
推导过程:
所以最终得到投影到平面上的顶点坐标写成齐次坐标的形式为:
写成矩阵的形式就是
为了在代码中实现,我新加了两个类,分别是Mesh和Program,因为在析构时涉及到删除OpenGL内部的资源的问题,所以如果不处理好拷贝构造和拷贝赋值就会出现问题,所以在没想过好的处理方案之前把他俩都实现成了无法复制的类。
代码已经更新https://github.com/xsj0jsx/explore_shader
相关文章推荐
- shader之旅-7-平面阴影(planar shadow)
- CSS3阴影box-shadow的使用和技巧总结
- CSS的定位属性实现text-shadow属性的文本下产生阴影效果
- 8.平面阴影
- unity在定制的shader里面如何添加阴影
- IE下模拟css3中的box-shadow(阴影…
- Fragment shader---片段颜色混合(接收阴影)
- CSS3的文字阴影—text-shadow
- 给边框加个阴影的css样式效果只需要一个box-shadow 属性就够了
- box-shadow 为元素添加阴影
- UnityShader中级篇——使物体接受阴影
- untiy 3d ShaderLab_第9章_1_平面阴影(三) 点光源对平面的投影
- Android编程之阴影(Shadow)制作方法
- CSS3阴影 box-shadow的使用和技巧总结
- CSS3文字与字体:text-overflow 与 word-wrap、@font-face、文本阴影text-shadow
- cocos2d-x用shader来实现阴影
- 转: IE下模拟css3中的box-shadow(阴影)效果代码
- IE下模拟css3中的box-shadow(阴影)
- 计算用于阴影剔除的包围体(shadow culling volume)