RenderSingleCamera 之视锥体剔除算法:一场几何学的“生死判决“
引子:0.001毫秒的判决
想象一位法官。
他每天要审理10万个案件——每一个案件,他必须在0.001毫秒内做出判决:“通过"或"驳回”。
判决错了:
- 通过了不该通过的——浪费司法资源
- 驳回了不该驳回的——冤枉了当事人
每一次判决,都必须又快又准。
这听起来像天方夜谭。
但在Unity的渲染管线里,这样的法官每一帧都在工作——它就是我们今天的主角:视锥体剔除算法(Frustum Culling Algorithm)。
它每一帧要判断10万个物体:“你在我的视野里吗?”
判决的时间预算:不到1毫秒。
今天,我们就来看看,这位"几何法官",是如何用一套精妙的数学工具,完成这场毫秒级生死判决的。
一、问题的本质:几何求交
视锥体剔除的核心问题,一句话就能说清:
“给定一个视锥体(Frustum)和一个物体的包围盒(Bounds),判断它们是否相交。”