PVS 是 潜在可见集(Potentially Visible Set)
1️⃣ PVS(Potentially Visible Set)概念
PVS 是一种 预计算或运行时确定哪些对象可能被摄像机看到 的技术,用于提高渲染性能。
-
目标:减少渲染不必要的物体(不可见的对象不渲染)
-
基本思想:
-
场景划分成 区域/扇区(Sector/Cell)
-
对每个区域预先计算出可能看到的其他区域集合(PVS)
-
摄像机在某个区域时,只渲染 PVS 中的区域里的对象
-
-
优势:
-
大幅减少 Draw Call
-
特别适合大场景(城市、室内楼房、地下迷宫等)
-
2️⃣ 你贴的函数解释
| 函数 | 作用 |
|---|---|
RpPVSPluginAttach() |
挂载 PVS 插件,给 World 对象扩展 PVS 数据结构 |
RpPVSQuery(RpWorld * wpWorld) |
执行 PVS 查询,确定哪些 Sector/Atomic 可能可见 |
RpPVSWorldSectorVisible(RpWorldSector * spSect) |
查询某个 Sector 是否在当前 PVS 可见集合中 |
RpPVSAtomicVisible(RpAtomic * atom) |
查询某个 Atomic 是否在当前可见集合中 |
RpPVSDestroy(RpWorld * wpWorld) |
销毁 PVS 数据,释放内存 |
RpPVSStatisticsGet(RpWorld * wpWorld, RwInt32 * ptotal, RwInt32 * paccept) |
获取 PVS 统计信息,比如总 Sector 数、被接受的 Sector 数 |
3️⃣ PVS 在 RenderWare 渲染流程中的作用
-
摄像机进入某个区域
-
执行
RpPVSQuery,得到当前可见区域集合 -
渲染
RpPVSAtomicVisible返回 TRUE 的物体 -
未被查询到的物体被剔除(不渲染)
-
渲染性能显著提升
4️⃣ 总结
-
PVS = Potentially Visible Set(潜在可见集)
-
主要用途是 可见性剔除(Visibility Culling)
-
提高渲染性能,减少 GPU 渲染负载
-
在大型场景中尤为重要
浙公网安备 33010602011771号