跳轉至內容

N64 程式設計/影片協處理器

來自華夏公益教科書,開放的書籍,開放的世界

RCP(VDP、PPU、影片控制器)主要對多邊形壓縮和後期濾鏡效果感興趣。

由兩個元件組成 - RSP(現實訊號處理器)和 RDP(現實繪製處理器)。

紋理快取和幀緩衝區與 CPU 共享在 RDRAM 中。

實際的紋理記憶體只有 4KB——一次只允許處理這麼多記憶體。

RSP(現實訊號處理器)

[編輯 | 編輯原始碼]

RSP 是您的變換和光照單元 (TnL)。它操作世界資料和紋理。

在數學上,很多矩陣用來從本地資料-> 世界空間-> 檢視空間(帶有 z 透視校正的投影)。

變換意味著對多邊形、光照法線和紋理 UV 進行縮放、平移和旋轉。

為 RDP 建立三角形和線條的圖元列表以渲染。

RDP(現實繪製處理器)

[編輯 | 編輯原始碼]

RDP 是顯示單元。

光柵化、霧化、環境、顏色混合。抗鋸齒效果。

更低階的畫素處理程式。

RCP 有自己的語言,稱為“uCodes”(256 個微碼)。

想想來自 OpenGL 的現代頂點和片段著色器,或者來自 Direct3D 的頂點和畫素著色器 - 兩個階段組合在一起。

R4000 協處理器(COP2)。每個 uCode 都是由 RSP 執行的一串 ASM 指令。它還設定 RDP 批次渲染器。

顯示列表是由遊戲定義的一系列 uCode。它被饋送到 RSP。


注意:模擬器作者選擇將 uCode 翻譯成更高級別的語言。

程式設計師可以定義自己的頂點/紋理格式。光照方法。過渡檢測和其他靈活的魔法。

微碼在執行時上傳到 RCP。因此,每個遊戲都有自己的繪製函式庫(有些類似於 DSP1 -> DSP1A -> DSP1B,而另一些則類似於 DSP2、DSP3)。

紋理變化

[編輯 | 編輯原始碼]

遊戲使用自定義格式。此外,線性點陣圖可以是任何尺寸(320x8、48x13)。4/8/16/32-bpp 是標準。

微碼庫傾向於定義幾個“可接受的”格式。

這是來自影片外掛作者的示例列表。

  • 16 位 RGBA = 5551。紅色、綠色、藍色、alpha(透明度)。
  • 32 位 RGBA = 8888。
  • 4 位 IA = 31。灰度強度(亮度、亮度)+ alpha。
  • 8 位 IA = 44。
  • 16 位 IA = 88。
  • 4 位 I = 40。僅灰度。
  • 8 位 I = 80。灰度。
  • 16 位 I = (16)(0)。
  • 4 位 CI = 40。調色盤查詢 -> 16 位 RGBA 或 16 位 IA。
  • 8 位 CI = 80。調色盤查詢 -> 16 位 RGBA 或 16 位 IA。

YUV = 其他一些顏色格式。輸出為 RGB(888)+ 全透明度。

華夏公益教科書