Practical, Dynamic Visibility for Games(可实现动态显示技术)
Practical, Dynamic Visibility for Games(可实现动态显示技术)
1引言
游戏场景越来越复杂,包含的内容越来越多,动态显示技术很需要。
本文介绍2种互补的方法,大场景、低开销、高速。
2实例介绍
PSV(Potentially Visible Sets)潜在渲染集合
- 1 static PSV
- 实现方法: BSP(二叉空间分割), grid(网格)
- 缺点:无法解决空间物体发生改变的情况
- 2 dynamic PSV
- 实现方法:hardware OQS(硬件遮挡检测) 绘制带深度的子集
- 优点:动态(包括外形可变的物体)
3检测阶段存在的问题(缺点)
3.1 定量问题
3.2 潜在性
缩放空间,通过BVH(层次包含)或八叉树,对祖先进行搜索
每帧会有很多CPU-GPU的同步,延时高。
3.3 突发问题
利用OQS制造一个缓存,牺牲一些准确性提高效能。
潜在问题:
1.如b移动的同时 camera后移,A原来不在视野中会进入视野。
2.相机视野的改变
3.4 GPU开销
GPU资源很宝贵,不能保证尽可能多的GPU都能做渲染。所以不能太依赖GPU
3.5 可变成本
OQS的时候,如果发生改变,最坏情况,需要全部检测,可以通过一致性
,既多帧更新的变化,控制可变成本
4.希望完成的工作
OQS改进
- 不用预处理
- 适用性高
- 封堵器的融合(?)
- 低功耗
- 降低CPU-GPU依赖
- 高质量
- 简单
解决方法
参考细胞分裂游戏中,使用的 HZB(分层Zbuffer)
5.1 实现过程
- 1.渲染场景一个子集深度,和OQS一样。
- 2.创建深度层次。在一个4通道深度集中,找出最大深度的对象
- 3.HZB几何、像素渲染
- 4.数据返回CPU