我从 Scenegraph 2009 课程笔记的Advanced IlluminationTechniques for GPU-Based Volume Raycasting中学习了一些体积渲染技术。我对对象顺序空白空间跳过感兴趣,它将边界框光栅化为许多小块,如下图所示:
我想知道如何实现这个?通过八叉树?或任何其他技术?我已经实现了一个简单的光线投射体积渲染程序,没有对象顺序空白空间跳过。代码片段或伪代码会有很大帮助。
我从 Scenegraph 2009 课程笔记的Advanced IlluminationTechniques for GPU-Based Volume Raycasting中学习了一些体积渲染技术。我对对象顺序空白空间跳过感兴趣,它将边界框光栅化为许多小块,如下图所示:
我想知道如何实现这个?通过八叉树?或任何其他技术?我已经实现了一个简单的光线投射体积渲染程序,没有对象顺序空白空间跳过。代码片段或伪代码会有很大帮助。
基本思想是将边界几何体生成为三角形网格,然后将该网格渲染到屏幕外缓冲区,以便计算用于第二遍中光线行进的开始和结束位置。
我已经使用 OpenGL 4 在 C++ 中实现了这一点,并在博客中介绍了它,包括源代码。这是一般大纲:
gridTex
,其中每个体素都包含最大的 iso 值。gridTex
,如果一个处于活动状态而另一个处于非活动状态,则生成一个四边形。每次 iso 值更改时都执行此操作。