龙书9 chapter8 stencil的平面阴影的实现(planer shadow)

笔记: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

龙书9 chapter8 stencil的平面阴影的实现(planer shadow)_第1张图片

推导过程参考,图片。   来源是:http://www.opengpu.org/forum.php?mod=viewthread&tid=15214&highlight=D3DXMatrixShadow

我推导时一直有问题,1.原来是point 阴影点坐标(x,y,z,K)第四位为k也是可以的,不一定要是1,还有就是verctor3和verctor4有时搞混淆

龙书9 chapter8 stencil的平面阴影的实现(planer shadow)_第2张图片

其实下图中的推导和MSDN上的表示有些不同,这里的向量N是(nx,ny,nz,0),而不是(nx,ny,nz,d)...

龙书9 chapter8 stencil的平面阴影的实现(planer shadow)_第3张图片

 

至于流程:

防止多重绘制阴影方面:首先像素stencil pass设置成与ref相同的话成功,并修改为1,这样的话此像素模板值已经修改,第二次就不会pass此像素,则不会再绘制此像素;    其次注意不需要把影子数据写入zbuffer内,    第三要注意与平面的融合

 

1.模板缓存和深度缓存共享一个表面存储区,两者是同时创建的;

2.模板可以阻止某些像素的光栅化。

转载于:https://www.cnblogs.com/dust-fly/p/4161823.html

你可能感兴趣的:(龙书9 chapter8 stencil的平面阴影的实现(planer shadow))