作者jk21234 ()
看板VideoCard
标题Re: [请益] 什麽是24位元 Z缓冲深度
时间Sat Nov 22 19:13:29 2008
※ 引述《Sheng1025 (努力活下去)》之铭言:
: 我的显卡是 ASUS ATI 4670
: 在3D设定里面有个选项是 强制 24位元 Z缓冲深度
: 请问这是用来做什麽的 玩游戏开启这选项
: 对画面会有帮助吗?
=====墙壁
人物B
箱子A
人物C ^^^
|||
----------萤幕虚拟平面
3D游戏中,把你的萤幕画出来的东西.当成在萤幕後面存在一个虚拟的世界.
这时候你看见的物体,相对於你的萤幕平面或者是"视角".都会有一个深
度的距离.
比如说,箱子距离你0.5M,人物距离0.8M,墙壁距离3M.
所以Z-buffer是储存"每个Pixel",对应的现在被画出来的物件
距离你的萤幕的距离......用途是决定接下来绘制其他pixel的时候,
就可以决定哪些pixel该被遮住,哪些该被重划.
上面这个听起来像是木星话吗?
那麽这样说明好了,假设人是躲在箱子後面偷看你,也就是说,人头有部分
被箱子遮住.部分没有.箱子所占用的pixel为A,人所占用的为B
AAAAAAAA
AAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA <--绘画箱子
AAAAAAAAAA
AAAAAAAAAA
BBBBBBB
AAAAAAAABB
AAAAAAAAABB <--绘画人
AAAAAAAAAABB
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
为何会知道画人的时候,部分的pixel是被箱子遮住.必须避开不画.
而剩下的部分要画出来呢?就是以Z-buffer实作来解决这个问题.
假如说先画箱子,那麽这些pixel对应的Z-buffer大小就是0.3M.
接下来要画的物件和这个区域重叠的时候,如果新物件的Z的大小
大於0.3M,表示会被遮住,不用画在萤幕上.如果Z的大小小於0.3M
表示重叠部分必须更新重画.
如果接下来要画的是更前面的人物C.那麽因为C的Z值都比现存的
Z-buffer的值小,所以知道重叠的pixel都一全部重划,并且把
这些pixel的Z-buffer更新成更小的Z值.
那麽..Z-buffer设定成24bit有什麽意义呢?因为相较於原本的16-bit Z-buffer.
把数字变大,可以得到比较高的精确值以及表示范围.
比如说,如果我把场景中的"最远"定义成60公尺左右.那麽16-bit Z-buffer
的最小单位就会是差不多0.1cm...这看起来是很够用了,就算我们把视角
转回桌上的文具等等.也不用担心绘图因为精确度太差而出问题.
不过实际上并没有这麽简单.因为Z-buffer储存的是Z值(听起来像是火星话,
但是我不打算现在解释).所以说,Z-buffer每差一个单位,在越远的地方会差异越大.
换个方式解释好了.你的萤幕上同样的一个pixel,在看很近的东西的时候,
一个pixel所占有的实际长度很短.但是视角切换到看远处的时候,一个pixel
所占有的实际长度/面积会大很多.
如果说我希望场景的深度最深达到1000公尺,在这个等级的时候.
我看最远处(1公里)的东西,16-bit Z-buffer"不能"分辨出
小於30公尺内的物件的正确遮蔽关系.这表示物体的三角面会有
很多被计算错误.就会出现物体的边缘不正常的被吃掉,或者是画出
诡异的形状等等.更严重的情况则是,有些物件只要移动一点点.
就会算出孑然不同的结果.那麽你就会看到这个物体一面变形一面移动.
或者是产生视觉上严重闪烁的问题.
如果Z-buffer提升到24-bit,那麽可分辨的下限
就大概是降为12.5cm左右...这表示可以降低非常多画面远处画错的问题.
Z-buffer提高精确度的好处就是以上那样.
坏处?16-bit变成24-bit,略为提升记忆体占用量.
当然就现在的显示卡而言,解析度*24bit的记忆体用量
少的跟一根脚毛差不多.不过同时读写的频宽也成正比增加.
在绘制3D图案的时候,Z-buffer是不断的读取以及写入的.
另外一个不用提高Z-buffer精确度的方法则是把Z-buffer改为以
W-buffer实作,Z-buffer储存的为Z值而W buffer储存的为W值
(怎麽又是火星话!!),W-buffer的好处就是经过换算,在极远处
跟很近的地方的可辨别精确度相同.因此也不需要特意提高精确度,
可以继续沿用16-bit的精确度就够了.但是缺点就是W-buffer需要
额外换算,因此会占用硬体的计算资源,或者是硬体实作上会比较复杂等等.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.216.117.195
1F:推 neitia:知识推 11/22 19:16
2F:推 novarossi:专业! 11/22 19:20
3F:推 Sheng1025:受教了 推一个 11/22 19:26
4F:推 lOngKitty:厉害厉害 推一下~ 11/22 19:35
5F:推 Sk1c:厉害 11/22 19:35
6F:→ f7258:真专业! 11/22 21:12
7F:推 rock9527:不得不推@@" 11/22 21:32
8F:推 hsj1118:推电脑绘图学 :) 11/23 01:05
9F:推 superbabaya:我真的看不懂 但还是要推 11/23 10:26
10F:推 mjchen:请问原PO谈的这些"电脑绘图学"是什麽系所会开的课,好奇中! 11/23 10:47
11F:推 anime:资工 11/23 11:35
12F:推 mjchen:感谢! 11/23 13:08
13F:推 ggg2000:看不懂......可是还是要给推^^" 11/23 14:51
14F:推 anemowaves:你的箱子跟人物图画反了吧? 11/23 16:42
15F:推 nvidiaxp:看显卡板 长知识 11/23 16:47
16F:推 smkingpk:不懂推.... 11/23 19:53
17F:推 serein1010:推 11/24 01:34
18F:推 norlan17m:所以强制开比较好罗..反正占的记忆体不算什麽y 11/24 08:24