[閒聊] 選擇3D顯示卡記憶體的大小
雖然主題是如何選擇合適的顯示卡記憶體大小.
在這邊打算解釋解析度,顯示記憶體大小,頻寬,AA/AF,SLI/CF
之間的互動關係,不過也得先從很基本的觀念開始講起.
螢幕是2D的
彩色螢幕是ㄧ個2D的裝置,通常具有X*Y個彩色的點(比如說,1280x1024,
那麼每一行的點就有1280個,上下共有1024行).
因此顯示卡,最基本的資料就是要存放這些要輸出到螢幕上彩色的點的資料.
用來告訴螢幕"第一行的第一個點是紅色...第三十八個點是黑色.......第二行
的第六十四個點是藍色".等等的資訊..
最簡單的做法,就是把這些點的色彩值建立成陣列資料.又通常都用(R,G,B)
三種值的組合來描述色彩.所以只要存放第一個點的(R,G,B),第二個點的(R,G,B).
.......就能表示最後要輸出到螢幕上的畫面.如果一個點要表達的是"最亮的紅色"
實際上存的可能是(255,0,0).如果該點是最亮的白色,那麼(R,G,B)就存成(255,255,
255).
在顯示卡記憶體中存放這個資料的陣列稱為Frame Buffer.
世界是3D的
在3D顯示卡計算出最後要送給螢幕的Frame Buffer資料以前,沒有經過處理的
原始場景資料等,這些"3D資料"應該是甚麼樣子的 ??所謂3D,當然是指跟我們現實
相同,處在X,Y,Z三個軸的座標系中的物體.
假設我有一個正方形的骰子,剛好其中一個角處在座標系的原點[0.0,0.0,0.0]
若是這個骰子的大小是1單位長度.而且它的八個點剛好在座標系的 :
[0.0,0.0,0.0],[1.0,0.0,0.0],[1.0,1.0,0.0],[1.0,1.0,1.0],
[1.0,0.0,1.0],[0.0,1.0,0.0],[0.0,1.0,1.0],[0.0,0.0,1.0]
用這個方式就可以描述出一個存在3D空間中的正方體骰子.
不過也很容易和其他同樣有八個點卻不是正方體的東西搞混
當然,骰子有6個正方形的平面,所以也可以用6個正方形的平面表示,
更不會搞混的方法,則是把6個正方形平面拆開,使用12個三角面表示.
因為在空間中,3角形是最基本的單位,任意三個座標點一定會指定出
一個唯一對應的三角形.
但是現實生活中的物體的外觀沒有那麼規律.用三角形的方法建立
物體的模型是否可以?答案是,不能完全相同但是只要用的三角形夠多
就可以越逼近真實的情況.
如果只用幾十個三角形描述人的五官或者是四肢,那麼形狀多半很糟糕
看起來會像是方塊人.
提供一個古老的範例,第一代Virtual Fighter圖片
http://www.klaxxx.com/public/sega/virtua-fighter/virtua-fighter-1.jpg

如果採用幾十幾百倍的三角形數量,那麼就會看起來比較接近於實際的形狀.
骨肉有了,皮毛不存 ?
前面用三角形只是把物體的形狀建立好而已.但如果我要做的是人,外觀上
我會希望有皮膚,做的是可口可樂罐子,會希望它是紅色並且有Logo等等.
可是要怎麼描述?描述皮膚表面的毛孔跟每個細胞以構建出足夠的物理性質
嗎?那是不可能的.最簡單的方法就只要是"畫出來像"就好了.就像是製作燈籠,
把骨架紮好,然後畫個外觀圖案的表皮,把表皮紮上去.
所以在顯示卡上就會做建立一個平面的貼圖資料,然後決定要經過何種
的處理後,顯示在螢幕上
100x100大小的貼圖
------ ---------------------------
| |----------> | |
| | X軸轉43度,Y軸轉 | |
------ 37度,縮放0.85倍 | | 螢幕上某塊
後貼在螢幕上 | ++ |區域為貼圖的結果
| ++++ |
| +++ |
---------------------------
知道以上這些最基本存在的東西之後,就可以想像出"顯示卡記憶體內
通常存放了甚麼",基本上會有的就是對應2D每個點的各種buffer,不只
之前提到的frame buffer,也包含了Z-buffer等.以及建立3D場景的三角面
資料,物體表面的貼圖資料等等...
buffers 貼圖/場景資料
|***|+++++++++|
|-----------|
顯示卡記憶體 系統記憶體
從AGP顯示卡開始(事實上應該是從PCI的nVidia Riva128開始...)
顯示卡就可以取用分享主記憶體,實際上因為效率的差別,通常是將
較不常用的貼圖資料暫時搬移過去.而各種buffer因為要隨時讀寫.
因此都會處在較快的顯示卡記憶體上.
終於進入第一個主題
前面打了這麼多其實是為了導入到第一個主題,我們已經建立好一個簡單
描述顯示卡記憶體使用的Model,那麼,就實際應用而言,在同一個遊戲中,
通常可以讓使用者調整的有 :
1.解析度
2.遊戲的品質/精細度
3.AA/AF Level .....也有的遊戲中這個調整和2合併.
在各種buffer中,基本記錄的單位和點有關,所以buffer的大小也就和
解析度成正比,但是並不會跟遊戲場景貼圖資料的品質成正比.
相對的,遊戲的場景資料,貼圖的量跟解析度則是沒有直接關係,通常
取決於遊戲的品質設定,比如說,低品質的時候可能每個角色只有1000
個三角面,每張貼圖最大只到256*256,高品質的時候提供每個角色5000
個三角面建立的模型,每張貼圖最大到1024*1024等等.
所以剛剛建立的記憶體使用量Model可以擴充表示為 :
低解析度,低品質
buffers 貼圖/場景資料
|***|+++++++++|
|-----------|
顯示卡記憶體 系統記憶體
高解析度,低品質
buffers 貼圖/場景資料
|******|+++++++++|
|-----------|
顯示卡記憶體 系統記憶體
低解析度,高品質
buffers 貼圖/場景資料
|***|+++++++++++++++|
|-----------|
顯示卡記憶體 系統記憶體
高解析度,高品質
buffers 貼圖/場景資料
|******|+++++++++++++++|
|-----------|
顯示卡記憶體 系統記憶體
由於頻寬足夠的顯示卡記憶體容量有限,因此不論因為解析度提高,
因為遊戲的貼圖場景資料增加,任何一個原因讓顯示卡記憶體的用量
開始吃緊後,遊戲效能就會大量低落.同時,一般解析度增加後FPS降低.
不純然因為"總點數增加,計算量成正比增加".也有把顯示卡記憶體塞爆
造成的效率暴跌--通常會在某個門檻上跌到差異5~10倍
補充說明的是,解析度和系統內的貼圖總數量無關,但是和常用貼圖
的容量會有關係.為何?這要從貼圖系統的基本開始解釋起.
一般貼圖在螢幕上,可能的大小會差異幾百倍,比如說FPS眼睛緊貼在牆壁上,
那麼牆壁的貼圖就會佔滿螢幕的大部分,但是如果離牆壁很遠,它所佔用的
面積就只需要很小....那麼為了品質以及效能考慮,通常不會讓同一張貼圖
去應付這種大小差異可以到幾百倍的場合,而是一開始就做好一系列貼圖.
由小到大,計算時候依照需要在螢幕上顯示的點數,而去讀取相應size的貼圖.
比如說我們準備一系列的貼圖,最小自8x8,最大達到1024x1024.
8x8 (最小)
16x16
..............
1024x1024 (最大)
那最後需要貼圖的面積約為5x7的時候,就是取得8x8的那塊來縮放.
若最後需要貼圖的部分達到800x800大小,就會去取得1024x1024的那塊
貼圖來貼.......這種做法稱為Mip-Map,如果不這樣處理,讓1024x1024的
貼圖縮放到約5x7.或者是讓8x8的貼圖縮放到800x800大小,不是過度浪費
記憶體頻寬就是品質會很差.
因此同一系列的貼圖MIP-MAP,總容量雖然是相同的,但是解析度很低的時候
就會偏好選到較小的貼圖,解析度高的時候就會偏好選到較大的貼圖.
8x8 16x16 32x32 64x64 128x128 256x256 512x512 1024x1024
|------低解析度-----------------------------|
|-------------------高解低度-----------------|
但是同樣讀取一次,大塊的貼圖的容量是比小塊貼圖大很多倍的.所以
雖然貼圖總容量不變,可是"常讀取"的容量或者是比例卻因為解析度不同
而有不同,這是高解析度除了buffer變大以外,另外一個影響顯示記憶體
是否足夠使用的因素
...........待續
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.250
推
10/20 19:20, , 1F
10/20 19:20, 1F
推
10/20 19:31, , 2F
10/20 19:31, 2F
→
10/20 19:31, , 3F
10/20 19:31, 3F
推
10/20 20:42, , 4F
10/20 20:42, 4F
→
10/20 20:51, , 5F
10/20 20:51, 5F
→
10/20 22:33, , 6F
10/20 22:33, 6F
推
10/21 01:18, , 7F
10/21 01:18, 7F
推
10/21 02:00, , 8F
10/21 02:00, 8F
推
10/21 12:56, , 9F
10/21 12:56, 9F
推
10/21 13:47, , 10F
10/21 13:47, 10F
推
10/21 14:42, , 11F
10/21 14:42, 11F
推
10/21 20:45, , 12F
10/21 20:45, 12F
推
10/21 21:18, , 13F
10/21 21:18, 13F
推
10/21 22:18, , 14F
10/21 22:18, 14F
推
10/21 23:28, , 15F
10/21 23:28, 15F
推
10/22 16:29, , 16F
10/22 16:29, 16F
推
02/27 12:11, , 17F
02/27 12:11, 17F
VideoCard 近期熱門文章
PTT數位生活區 即時熱門文章