初代Playstation繪製模型的原理是怎樣的?
先聲明清楚,初代Playstation沒有Z緩衝,不能拿一般3D顯卡的繪圖原理來套啊。
《最終幻想7》顯存窺視圖
雙倍緩存。解析度為 320x240 像素。16bit 模式。
《鐵拳3》顯存窺視圖
單倍緩存。解析度為 368x480 像素。16bit 模式。
單倍緩存!好牛B啊。NAMCO程序員真給力啊!
《DUNE 2000》(沙丘2000)視頻截圖
解析度為 320x240 像素。24bit 模式。幀率為 15Hz。
總結:
PS1的顯存是按照 2048位元組x512行 的方式構成的。總容量為 1MB。
PS1在渲染遊戲畫面的時候常用的是16bit模式。
PS1在播放遊戲視頻的時候常用的是24bit模式。畫質很棒!
PS1的貼圖數據是《索引模式》。8bit 或 4bit。
PS1的顯存左上方是《幀緩衝》
PS1的顯存左下方是《調色板》
3D不是只有多邊形,多邊形消隱也不是只有Z緩衝。
畫家演算法的基本原理是,將多邊形按照距離排序,先繪製離攝像機遠的,然後繪製近的,後繪製的內容直接覆寫像素單元,實現遠近遮擋。畫家演算法的缺陷是需要先排序再繪製,而且兩個多邊形交叉的情況下會出現混亂,需要分割多邊形,PS沒有能力處理這些細節,所以當時遊戲的一大特點就是經常有多邊形缺失(特別嚴重的情況下就叫爆山)
Z緩衝是在繪製多邊形時,將屏幕上與它有關的像素都畫出來,並記錄Z軸數值(深度值),如果其他的多邊形也覆蓋到同一個像素,就比較兩者的深度值,用近的那個數據就替代遠的。
Z緩衝需要消耗大量的內存(如果用32位深度值,需要PS內存擴大3倍!),而90年代內存價格很貴,SONY放棄Z緩衝,設計了較大的工作內存上(光碟機緩存),而任天堂是把內存用於Z緩衝(顯存),放棄了光碟機緩存(N64的卡帶不是直接定址的,有一個壓縮轉換過程,但是讀取速度遠比CD快,不需要太大的緩存)。
PS的畫面還有其他一些缺陷:
既然沒有Z緩衝,就更不可能有ALPHA通道的概念,只有簡單的半透明疊加,它的半透明永遠是50%混合。進行幾何運算的DSP沒有浮點運算只能做定點運算,所以它的3D運算精度很低,多邊形定位不準確,表現在畫面上就是物體嚴重的抖動。沒有線性過濾,在PS這種低水平的貼圖上表現出來的就是超大的馬賽克,而N64雖然貼圖精度更低,但是藉助線性過濾幫助消除了馬賽克。
因為處理能力不足刪除了透視校正,由於PS的3D多邊形是以三角形為基礎的,方形用2個三角形組合,如果方形上有線條,就會導致線條看起來像是折線。(對於現代玩家來說可能有點難以理解,見圖,注意地面和牆壁的線條)有興趣可以看PS《晶瑩之露》的演示,模擬器提高解析度去掉了鋸齒,加入了線性過濾去掉了馬賽克,其他的都是原汁原味。
PS1遊戲《晶瑩之露》遊戲試玩一(本人錄製)其實吧,我覺得現代人去玩古代遊戲,最難忍受的並不是畫面,而是讀盤時間,玩1小時遊戲讀盤40分鐘不是神話。NEOGEOCD主機LOADING動畫推薦閱讀:
TAG:遊戲 | 計算機 | PlayStation | 計算機技術 | 計算機圖形學 |