nicky

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
今天看了《game programming gems4》的5.2节,文中提到了一种解决方案:
1。预处理过程:
对每个三角面生成三个独立顶点,拥有此面的法向。
对每个面产生三个边,然后对边作两两匹配(拥有相同端点的便匹配)。若有配对则生成degenerate-quad,否则说明此边为open-edge,需要push_back两个顶点,然后生成degenerate-quad。
注意这些退化四边形由indexbuffer存储。
2。渲染
渲染面向光源的面,背光面的剔除可以将输出坐标设为0
渲染延伸的(extruded)面,同上剔除背光面
渲染边(shadow volume),这一步相当于链接了front/back cap
原文并没有用z-pass/z-fail方法。

可以看到文章基本意思就是利用面向光源的面来作vs shadow volume。包括生成front/back cap。不过显而易见这种方法太过于耗费(需要提交原几何体三次,还是考虑了two-sided stencil),个人感觉不太实用。
posted on 2005-10-17 16:30  nicky  阅读(863)  评论(1编辑  收藏  举报