N64 程式設計/影片協處理器
RCP(VDP、PPU、影片控制器)主要對多邊形壓縮和後期濾鏡效果感興趣。
由兩個元件組成 - RSP(現實訊號處理器)和 RDP(現實繪製處理器)。
紋理快取和幀緩衝區與 CPU 共享在 RDRAM 中。
實際的紋理記憶體只有 4KB——一次只允許處理這麼多記憶體。
RSP 是您的變換和光照單元 (TnL)。它操作世界資料和紋理。
在數學上,很多矩陣用來從本地資料-> 世界空間-> 檢視空間(帶有 z 透視校正的投影)。
變換意味著對多邊形、光照法線和紋理 UV 進行縮放、平移和旋轉。
為 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)+ 全透明度。