这是“揭开 PVS 神秘面纱”系列的第一部分。
- Portals 和 Quake:Quake 开发中出现过 overdraw 问题,通过减少绘制对象来解决。Portal culling 可减少 overdraw,将世界分为虚拟相机可移动的空间和它们之间的开口(portal),游戏从相机所在的细胞开始渲染,通过递归检查 portal 来确定要绘制的内容。Quake 引擎在地图准备时使用 portals,但运行时不可见,每个细胞有预先计算的可见细胞列表(PVS)。
- Quake 地图的 portals 消失:Quake 的 bsp 地图编译工具会自动放置 portals,导致数量很多。细胞很小但运行时不测试 portals,而是通过预计算每个细胞的 PVS 来确定可见细胞。Quake 中的细胞对应二进制空间分区(BSP)树的叶子,较大的叶子集群会导致更多 overdraw,但仍可假设集群内的 portals 可见。
- vis 的高级概述:Quake 地图工具 vis 接收 bsp 生成的 portals,预计算叶到叶的可见性矩阵并写回编译后的地图文件。vis 做两次递归深度优先遍历和一个快速解析过程,分为基础可见性、全可见性和解析三个步骤。portals 有方向,在细胞和 portal 图中,每个 portal 是 3D 多边形,由两个叶子组成,可将输入 portal 分为正向和反向 portal,图变为有向图。vis.py 的主要数据结构是 Portal 和 Leaf 类,通过索引和对象引用访问图,下一部分将使用该图进行快速检查。作者还考虑写一本书,可在此注册。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。