游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7507|回复: 19

d3d 中的z-buffer 和 w-buffer 有什么区别呢?

[复制链接]

10

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
发表于 2004-4-12 16:36:00 | 显示全部楼层 |阅读模式
d3d 中的z-buffer 和  w-buffer 有什么区别呢?

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-12 17:37:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

view里的点(x1,y1,z1,1)转到screen之后,成了(x2, y2, z2, q), 这里q就是1/z1。这个值被用于texture和fog的perspective correction. z buffer里存的是z2, z2对应到view空间是不均匀的(这里不详细讲,你把perspective变换展开就知道了)。在很远的地方,用z buffer就精度很低了,也就是说两个在z方向(screen坐标系的z)离得比较近的面会无法正确决定其前后关系。所以,通常情况下,你要使用24 bit的z buffer来保证远处较高的精度。

w buffer里存的是1/q,也就是z1,所以w buffer是均匀的。16位的w buffer在远处精度高于24 bit的z buffer.

不过,只有部分显卡支持w buffer。他需要一个额外的倒数器去求1/q。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-4-12 18:04:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

现在几乎没有什么显卡直接支持w-buffer了。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-12 20:37:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

但我想,支持w-buffer是趋势,比如ps3就号称是w-buffer的,我想xbox2也应该是。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-4-12 21:01:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

不见得。我印象中古老的S3 Savage2000支持w-buffer,而NV的一些古卡也是支持的,不过后来在驱动中关闭了对w-buffer的支持。可见w-buffer并不是完美的解决方案。它的线性精度导致了总体精度偏低。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-12 21:24:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

的确,在近处,24位的z-buffer精度相当高,而16bit的w-buffer却不行,毕竟场景近处的物体对人更加明显。但是随着显存的增加,32位的w-buffer是很容易实现的。如果我们的z依旧是32位的float,那么32位w-buffer的分辨率和z是一样的。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-12 21:25:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

sorry, 这里有个前提,求1/q的精度,硬件必须(也必然会)提高

0

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2004-4-13 08:28:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

w-buffer是线性的,也就是说无论远近精度是一致的,z-buffer是非线性的,近的地方分辨率高,远的分辨率低。

还有robin_yao是不是上海的?怎么和我一个同事MSN上的名字一样?

10

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
 楼主| 发表于 2004-4-13 08:41:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

不是很明白啊,

0

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2004-4-13 12:09:00 | 显示全部楼层

Re:d3d 中的z-buffer 和 w-buffer 有什么区别呢?

不要老是问。自己看着DX的文档推倒一把公式就全清楚了!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-30 02:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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