頂點着色引擎
頂點着色引擎 |
中文名: 頂點着色引擎 外文名: Vertex Shader 也稱為: 頂點遮蔽器 作 用: 增加各式特效在3D場影 浮點數: 128 |
頂點着色引擎(Vertex Shader),也稱為頂點遮蔽器,根據官方規格,頂點着色引擎是一種增加各式特效在3D場影中的處理單元,頂點着色引擎的可程式化特性允許開發者靠加載新的軟件指令來調整各式的特效,每一個頂點將被各種的數據變素清楚地定義,至少包括每一頂點的x、y、z坐標,每一點頂點可能包函的數據有顏色、最初的徑路、材質、光線特徵等。
目錄
細節
在頂點着色引擎內部,數據都是以「項」為單位來作運算的。 我們剛剛知道,每一項都是4個128位的浮點數。當你正應用一條指令和影響一套4個變量時,這讓頂點着色引擎單元實際上就是一個「單指令多數據」(single instruction multiple data, SIMD) 處理器。 這種安排很有道理,因為大部分的轉換與光影操作都是4x4或3x3的矩陣運算。 每一個數據都當作浮點數,所以全部的運算都是浮點運算。 基本上,頂點着色引擎是個很強大的SIMD浮點處理器, Pentium 4 裡面的SSE2單元勉強趕得上。 另一個重要的部分是12個SIMD寄存器,每一個也都可以存放4個128位浮點數。這12個寄存器就是頂點着色引擎變戲法的地方。除了這12個可以自由存取的寄存器,頂點着色引擎提供了96個4x128位的SIMD常數,可以作為程序員在程序開始執行之前設定的參數載入。這些常數可以用在程序里,甚至可以間接尋址,但每條指令只能調用一個常數,這有點不方便。如果某個指令需要一個以上的常數,必須先用載入指令把常數讀入一個寄存器。典型的這種大量常數應用就是多邊形轉換的矩陣數據(一般4x4矩陣)、光影特性、特殊動畫特效的程序數據、向量內插數據(例如變臉特效或者關鍵幀插入),時間(關鍵幀插入或粒子系統)等等。有一種特殊的稱為「頂點狀態程序」的程序可以向參數塊寫入數據。而普通的頂點程序只能讀取。
背景
這些運算指令本身都很簡單,因此也很容易理解。 頂點着色引擎不允許循環,跳躍或條件分支,就是每條指令按照次序線性執行程序。每個頂點着色引擎的最大程序長度是128條指令。 頂點按照設計師的意願改變之後,就完成轉換和照明。 若是還需要更多指令處理,頂點可以再次進入頂點着色引擎。
頂點經過運算後仍然是頂點,轉換到為均一的裁剪空間(homogenous clip space),並且完成照明運算。 有一點很重要的是,頂點着色引擎不能生成或者消除頂點。一個進,一個出。[1]