early z optimization【转】

 这个是nvidia‘s GPU Programming Guide,3.6节 中的内容。

就是在geforce fx,以及6以上的系列里面,加了early z optimization或者也叫zcull的特性。

正常的depth test是在pixel shader之后的pixel rendering阶段,即便一个fragment被砍掉,仍旧耗费了pixel shader的计算时间。

这个zcull是放在光栅化之后和pixel shader之前的位置,如果这个fragment没有通过zcull 的test,那么就被砍掉,不进入pixel shader进行计算。

zcull的硬件实现一般也是有一个memory与传统的depth/stencil memory绑定,当一个fragment从pixel shader中出来并且通过了depth/stencil test,这个fragment就会进一步做一个zcull的test,如果通过了就更新zcull memory。这个更新memory的test和pixel shader之前的那个test不是一个含义的。

而这个zcull memory也就是用来在pixel shader之前砍fragment的依据。

如果是我们通过SetRenderTarget换了depth/stencil memory,就是用了没有被zcull 绑定的depth buffer,zcull就不起作用而且也不会更新。

---------------------------------------------------------------------------------------------------------------------------------------------------

使用zcull时候最好先构建一个depth buffer。

这里就用到double-speed-depth/stencil-render

在禁掉color buffer写入,alpha test, user clip,multi-sampling,texkill, color key的情况下,render会变得非常快。

由于实际操作的时候,做double speed z only render都省去lighting, texture sampling等等,这个速度非常快。

然后用这个结果来做zcull,可以省去大量的计算。

另外说一点,这个double-speed-z-only-render用来清depth buffer非常好,某些情况下比硬件提供的clear_depth_buffer函数还快。

---------------------------------------------------------------------------------------------------------------------------------------------------

这种剔除优化已经比较生猛了,可以大幅度弥补cpu端对可见性判断优化不足的特点,节省大量计算。

cool feature

 

原文地址:http://blog.csdn.net/ccanan/archive/2007/06/17/1655470.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值