博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Early Z Culling
阅读量:6570 次
发布时间:2019-06-24

本文共 1349 字,大约阅读时间需要 4 分钟。

传统Z-Test其实是发生在PS之后的,因此仅仅依靠Z-Test并不能加快多少渲染速度。而EZC则发生在光栅化之后,调用PS之前。EZC会提前对深度进行比较,如果测试通过(Z-Func),则执行PS,否则跳过此片段/像素(fragment/pixel)。不过要注意的是,在PS中不能修改深度值,否则EZC会被禁用。

这样,在整个流水线阶段,深度比较发生了2次,一次是EZC,一次是传统Z-Test(注: 区别可能在于EZC无法写入深度)。

除了利用EZC帮助传统Z-Test加速之外(硬件自动调用,我称其为隐式用法),目前还有2个显示引申用法:一个类似于Deferred Shading(延迟着色)。比如说渲染头发的时候,有很多不透明的部分会挡住透明的部分,为了避免计算被挡住的透明部分(alpha混合很费)就可以使用EZC;另外一个典型应用是GPGPU中迭代法求解线性方程组,当某些矩阵单元的值已经满足要求时(比如收敛),则可以跳过计算。

显示引申使用EZC的典型框架如下:

Pass1: 准备z-buffer。(注:比普通渲染多一次pre Z pass,当然如果采用Defered Shading,那就不存在了)

通常有两种作法:一种是直接“简单”渲染模型(不写frame buffer,只写z buffer);一种是人为指定depth/z值(即作为阈值,例如迭代法求解线性方程组)。

    Pass2: 正常渲染。(禁用Z-Write)

 

相关资料:

Applications of Explicit Early-Z Culling

Explicit Early-Z Culling and Dynamic Flow Control on Graphics Hardware

以及GPU Gems2的第30章

 

      实际上在传统管线中,z test 不可能用来剔除 pixel shader 片断的执行。但是,在当前的一些显卡中(注:Geforce 6系列已支持),很多都把 z test 提前到了pixel shader 之前执行一次,被称为 Early -Z Culling 优化。

      但是从管线次序中可以清楚地看到,alpha test 成为了 z test 的限制,因为一旦打开了 alpha test, 对于在 alpha test 中失败的像素 Early-Z 将不能正确地被判断。因此对于部分显卡硬件,一旦关闭了 alpha test,Early-Z Culling就会被自动打开。
       为了充分体现出 Early-Z Culling 的威力,一般来应该在 prezwriting 的 pass 阶段就应该先执行一次 alpha test,并且关闭对 color target 的填充,在 pixel shader 中只把 alpha值返回出去供 alpha test 使用。 但是问题随之出现: 对于一块未知的3D适配器,无法通过caps得知其是否支持 early-z culling优化,因此一旦在硬件不支持这个特性的显卡上使用此技术,反而会导致效率下降。

转载于:https://www.cnblogs.com/ActionFG/archive/2012/09/09/2677477.html

你可能感兴趣的文章
常用设计模式——创建型
查看>>
Windows 环境下分布式跨域Session共享(转)
查看>>
GIT入门笔记(2)- 典型的工作模式
查看>>
使用HTML5 WebStorage API构建与.NET对应的会话机制
查看>>
MySQL查看修改存储引擎总结
查看>>
[React Router v4] Use the React Router v4 Link Component for Navigation Between Routes
查看>>
c++输入输出
查看>>
eclipse启动优化文章集合
查看>>
linux创建新用户及权限
查看>>
r里面如何实现两列数据合并为一列
查看>>
Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
查看>>
前人栽树,后人擦屁股
查看>>
Connection reset问题,INFO: I/O exception (java.net.SocketException) caught when processing reques
查看>>
Pycharm使用技巧
查看>>
黄聪:HBuilder左侧项目管理器如何不与标签页一起自动切换
查看>>
[RK3288][Android6.0] 系统按键驱动流程分析【转】
查看>>
linux 定时器
查看>>
[virtualbox] win10与centos共享目录下,nginx访问问题
查看>>
几个新奇网站
查看>>
2018顺丰视觉岗笔试几个知识点
查看>>