这个文章很cool。
result
顾名思义(btw,tetrahedron意思是四面体),是讲的点光源阴影,直接看和传统omnidirectional shadow map对比的数据吧:
- cubemap:230fps
- dual-paraboloid:276fps
- tetrahedron with stencil:418fps
对rendertarget的要求:
![](https://img-my.csdn.net/uploads/201302/14/1360848436_5310.jpg)
但是这里需要注意两点:
- rendertarget上面tetrahedron需求是最小的
- 但是render scene上面比较多,技术本身的限制,重复render的几率比较大,所以上面帧数的差别也要打一些折扣。
tech
cubemap shadowmap使用6个面来包点光源,顾名思义,tetrahedron是使用4个面来包点光源。
![](https://img-my.csdn.net/uploads/201302/14/1360849173_5121.jpg)
rendertarget的组织方式太棒了:
![](https://img-my.csdn.net/uploads/201302/14/1360849196_2176.jpg)
在render红色这个plane方向上的object的时候,就写到rendertarget红色这个区域,并使用stencil来避掉不该写的部分。
frustum的构建是我觉得可能让其数据掺水的地方,
![](https://img-my.csdn.net/uploads/201302/14/1360849303_1414.jpg)
还是正常的frustum在各个方向上,但是可以看出一个quad的frustum,只取其中的一部分。
其他的构建和sample就比较顺理成章了,非常有灵性的算法。