improved frustum culling--game programming gems 5-1.6

本文探讨了Frustum Culling在可见性检测中的应用及优化方法。通过介绍基本原理、构造六个裁剪平面以及利用极坐标系统减少计算次数等手段,实现对场景中不可见物体的有效剔除,提高渲染效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

frustum culling是可见性检测中一种重要方法,当然也是优化 的重头戏之一;

目前经常使用的是camera所形成的frustum平面culling的方法:

首先根据camera的几项重要value我们有:

  1. near/far plane
  2. fov:field of view--远平面的height/far;
  3. aspect:远平面的width/heith或者width/height

根据这些我们可以构造6个平面,

对于空间一点p:(x,y,z),可以用平面公式 dot[(x,y,z,1),(px,py,pz,w)]判断其在平面正面或者背面;

进而可以得到complete out, intersect, complete in这样的结果;

计算过程需要6次dot;

这是对多平面的通用做法,没有用到frustum的特性,所以不是最好;

在game programming gems 1.6章节中,提倡利用frustum的特性,以极坐标的方式看待frustem,那么对于3D空间中frustum我们可以把它看成(半径,fov_w,fov_h),进而进行判断,这样进行判断就只用3个dot就可以;

判断过程快了1倍;

另外现在场景组织中经常用BVTree(bounding volume tree)这种,层次化结构,它的优势显而易见,而在我们的frustum可见性判断过程中可以进一步优化:

如果一个bounding volume不是complete in/comple out,但是它在near/far这一项上是complete in的,就可以在children判定的部分免去判定near/far这一项;

pretty good an article;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值