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

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

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


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

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

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

推导过程:


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


写成矩阵的形式就是


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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值