我目前正在做一项作业,其中我必须为球体数据集实现仅 CPU 光栅器。数据集是静态的,因此在运行时不会更改,即使整个数据集可以在相机前旋转也是如此。
现在的想法是实现一些遮挡剔除方法,以便从相机的角度来看被其他球体遮挡的球体不会进入光栅器的下一阶段(针对 z 缓冲区和像素着色进行测试)浪费 CPU 时间。
我一直在寻找实现这一目标的可能方法。首先,我想到了一个分层 Z 缓冲实现,它在八叉树中维护场景模型。但是,由于数据集旋转,我需要重新计算每一帧的八叉树,这可能非常昂贵。我说的对吗?
我不确定在这种情况下,空间散列或一些更便宜的计算球体数据集的分层组织是否更有益。对此有什么想法吗?请注意,这必须在 CPU 上完全实现。
从前到后的盘区检查。
如果球体不相交,则将它们视为圆盘。