笔记:1.向量乘法不满足交换律; a*b*c和a*(b*c)不同。
planer shadow关键点:1.数学方面:射线与平面的交点坐标是多少? 2.运用stencil标记防止阴影在平面的二次绘制。
1.射线与平面交点的矩阵:MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205364%28v=vs.85%29.aspx
推导过程参考,图片。 来源是:http://www.opengpu.org/forum.php?mod=viewthread&tid=15214&highlight=D3DXMatrixShadow
我推导时一直有问题,1.原来是point 阴影点坐标(x,y,z,K)第四位为k也是可以的,不一定要是1,还有就是verctor3和verctor4有时搞混淆
其实下图中的推导和MSDN上的表示有些不同,这里的向量N是(nx,ny,nz,0),而不是(nx,ny,nz,d)...
至于流程:
防止多重绘制阴影方面:首先像素stencil pass设置成与ref相同的话成功,并修改为1,这样的话此像素模板值已经修改,第二次就不会pass此像素,则不会再绘制此像素; 其次注意不需要把影子数据写入zbuffer内, 第三要注意与平面的融合
1.模板缓存和深度缓存共享一个表面存储区,两者是同时创建的;
2.模板可以阻止某些像素的光栅化。