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