渲染技术,剔除摄像机视锥外的几何体——减少计算负荷。实时VFX和游戏引擎的标准优化。
摄像机只能看到场景中的特定区域——超出其视野的任何东西,无论是更远、更近还是侧面,都与画面无关。视锥剔除正是利用了这一现实:引擎首先计算由相机镜头定义的金字塔形可见区域(即“视锥”),然后丢弃所有不在此区域内的几何体。不被渲染的内容也不会消耗计算时间。
在实际操作中,每个 3D 对象或网格都会有一个不可见的边界框。引擎在渲染过程中会检查该框是否与视锥重叠。如果它完全在视锥之外,该对象将在进入 GPU 之前被从渲染管线中移除。这不仅节省了顶点吞吐量,还减少了着色器调用和纹理带宽。对于包含数百个粒子系统、灯光或变形网格的复杂 VFX 场景,这决定了是稳定在 24fps 还是陷入实时混乱。
在 VFX 工作流程中,我们经常会遇到这种情况——一个破坏镜头,带有飞溅的碎片——你会在整个场景中填充碎片,但只有相机画面中的一半是相关的。与其计算所有粒子碰撞,不如通过视锥剔除只模拟可见的碎片。同样,在人群场景中——你可以将数百个角色模型放入场景中;只有在视野内的角色才会被渲染和动画。对于灯光也是如此:视锥之外的十个灯光不需要进行着色器计算。
相机近平面和远平面之间的界限很重要。拉得太近,你可能会意外剔除可见的几何体;拉得太远,你就会失去效率优势。有些引擎允许对每个对象的剔除距离进行更精细的控制——这对于视差背景或非常远的细节特别有用。剔除本身的开销也是真实的:在非常简单的场景中,视锥剔除可能比简单地渲染所有内容更慢。因此,它主要在更复杂的场景中激活,或者可以手动控制。
与其他优化技术相关,例如遮挡剔除(被其他对象遮挡的部分)和 LOD 系统(远处对象细节更少)。然而,视锥剔除是基础——它是所有现代游戏引擎的标准,并且在 VFX 渲染中会自动应用。