游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2639|回复: 6

概念性???:深度test是在pixel shader之後?行的?

[复制链接]

26

主题

178

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2007-10-13 11:26:00 | 显示全部楼层 |阅读模式
DX SDK上?graphics pipline上?嗣?ixel shader之後才?行深度test,?倒出乎我的?想。我原以????是??shader之後就深度test了,等pixel shader?理?r得到的?入流已?是??深度test後的????ender target上的各pixel的??了,亦即ps所?理的所有data?凳堑韧?蹲罱Krender target上的pixel?档模?咛宓闹v,被遮?踉卺岱降捻??就不在ps中被?理了。

然而若是ps後再?行深度test的?,那?就不是上面所?的情?r,而是所有??(除了被clipping掉的)????ixel都在ps中被?理一次,那?拥脑?,若?鼍坝?}?,pixel?理的次?稻陀?啵???H?H?render target的尺寸相??,直到ps後才??V掉被遮在後方的pixel。

是如以上所?的????

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-10-13 19:53:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

老显卡是这样的....
新的就不一定了,大多支持early-z cull

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-10-13 20:15:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

看这个图
http://www.xmission.com/~legalize/book/preview/poster/pipeline-9.0.png
//
是先运行pixel shader,然后才会走到z test,
当然这个只是软规则,一般硬件厂家都会进行自己的优化,比如ati,有段文章这么写:Prior to execution of the pixel shader, R300-based chips from ATI perform a check of the interpolated z value against the z value in the z buffer. This occurs for any pixels which passed the hierarchical z test and which are actually going to use the primitive’s interpolated z (rather than compute z in the pixel shader itself).
也就是,底层驱动实际上做了楼上兄弟说的early z culling。

8

主题

390

帖子

390

积分

中级会员

Rank: 3Rank: 3

积分
390
发表于 2007-10-13 20:27:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

这也恰好证明,我们将渲染物体进行排序,从近到远,才能提高效率,哈哈。

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2007-10-14 00:20:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

精确到每个像素的depth test是在PS之后,这确保深度关系无误。
在PS之前会有类似16x16像素快的测试,只要其中有一个像素需要画,整个块都要画,不同显卡像素快的大小不同。

26

主题

178

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2007-10-15 09:08:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

nv的gpu programming guid上提到了?似的?? 不?具体???方法上 偶未看明白:


Early-Z优化
Early-z优化(有时也叫做“z轴精简”)技术通过避免渲染被遮蔽的表面来提高性能。如果被遮蔽的表面使用了大量的着色器程序,那么z轴精简技术将节省很多计算时间。要想利用z轴精简技术,请遵循以下的指南:
􀂉 不要创建有洞的三角形(即避免阿尔法测试或texkill指令)
􀂉 不要修改深度(即允许图新芯片使用以内插值替换的深度值)
违反以上规则将会导致图形芯片在进行Early-z优化时使用的数据无效,还会导致z轴精简被禁用,直到深度缓冲器被再次清空。


3.6.3.
3.6.4.
3.7.
先规定深度
要想利用上述两项功能来提升性能表现,最好的办法就是“先规定深度”。我们的意思是您应该在第一个处理流程中使用倍速深度渲染来绘制场景(不着色),这样建立的表面距离浏览者最近。然后您可以再次渲染场景,但要使用完全着色。Z轴精简将会自动剔除看不到的碎片,因此节省了着色计算。
“先规定深度”这一操作要求具有自己的渲染层,但如果很多被遮蔽的表面进行过大量渲染,那这个方法可以提高性能表现。当三角形很小时,倍速渲染的效果会差一些,同时小三角形还会降低z轴精简的效果。
另一个相关的技术是延迟着色(Deferred Shading),您可以在NVSDK7.1及以后的版本中应用到该技术。

26

主题

178

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2007-10-15 11:57:00 | 显示全部楼层

Re:概念性???:深度test是在pixel shader之後?行的?

http://wiki.ccw.com.cn/GeForce_8

???geforce8才???了early-z 感??鹘y的pipline??的真令人不可思? 居然是ps之後再深度test 大概hardware??上的便利吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 14:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表