我在directx11中创建了一个简单的场景,它有一个平面作为地板,有几个球体,立方体和矩形墙。只加载了3个物体:平面,立方体和球体;但是立方体和球体实例化了几次,具有不同的缩放,位置和旋转。其中两个对象是动态的。
我想将整个场景(100x100x20单位)体素化为0.2个单位的体素,同时考虑到具有不同比例和旋转的对象实例。
我已经阅读了几篇关于体素化的文章,并获得了GPU Pro 3的“实用二元曲面和固体体素化与Direct3D 11”的源代码;但所有这些文章都展示了单个物体的体素化 - 将它们的三角形分割成网格。
如何扩展这些方法以考虑具有多个对象实例的整个场景?
我能想到的唯一一件事就是我必须对整个场景进行自上而下的八叉树分割。但对于一个动态的场景,这会太贵了吗?
对于我的场景,我为每个加载的模型使用一个缓冲区,所以如果我要在Compute Shader中进行体素化,我是否需要将所有三个缓冲区复制到一个缓冲区?我如何考虑模型实例?
谢谢。