固定渲染管線與可程式設計渲染管線

2021-06-25 09:16:59 字數 2315 閱讀 8281

1.固定渲染管線與可程式設計渲染管線的區別:

1)、固定渲染管線 ——這是標準的幾何&光照(t&l)管線,功能是固定的,它控制著世界、視、投影變換及固定光照控制和紋理混合。t&l管線可以被渲染狀態控制,矩陣,光照和採製引數。

2)、頂點著色器——圖形開發人員可以對渲染管線中的頂點運算和畫素運算分別進行程式設計處理了,而無須象以前那樣套用一些固定函式,取代設定引數來控制管線,最早出現與dx8,包括ps和vs兩部分。

2.為了解決d3d或者opengl對不同硬體廠商的支援,解決移植性的問題,可以通過將加速卡功能抽象出來,統一定義介面的形式來實現。於是,人們採用了典型的分層模式(參閱:設計模式),將一套應用程式分為3個層次:

應用程式層 -> 硬體抽象層 -> 硬體層其中

應用層就是遊戲和應用軟體開發人員的開發主體,他們呼叫統一的加速卡api來進行上層開發,而不用考慮移植性問題;

硬體抽象層則抽象出硬體的加速功能,進行有利於應用層開發的封裝,並向應用層開放api;

硬體層將硬體驅動提供給抽象層,以實現抽象層加速功能的有效性。

這個結構有效的將遊戲和應用程式 與硬體加速卡隔離開,這就很好的提公升了程式的移植能力。並且,還有乙個好處就是,開發

人員的知識復用率得到提高,從而降低了這類軟體的開發門檻。

3.3d加速卡的主要功能就是協助cpu,負責將記憶體中的向量影象資料(頂點集合)進行變換、光照計算、裁剪等操作,最後經過光柵化將影象呈現給人眼。這個過程就叫做渲染

d3d把整個渲染分為9個步驟,9個步驟的組合,就叫做流水線,或者叫 管線 (參閱 設計模式 之流水線模式)。

d3d的渲染管線(rendering pipeline):區域性座標變換 -> 世界座標變換 ->觀察座標變換->背面消除->光照->裁剪->投影->視口計算->光柵化。

無論是固定渲染管線還是可程式設計管線,都需要經過這九個步驟:

可程式設計管線,顧名思義,就是說管線中的某些環節是可以被控制的。人們可以通過對gpu中的著色器進行程式設計的方式,來控制、管理加速卡的渲染效果。

著色器分為頂點著色器和畫素著色器。

頂點著色器是在進行座標變換和光照計算時工作

畫素著色器是在光柵化環節工作。

人們對著色器進行自定義程式設計時,這個流水線就叫做可程式設計管線。同時,d3d還提供預設的著色器程式,當遊戲或應用程式完全使用預設著色器程式時,這個流水線就叫做固定管線。

4.變換步驟:

在固定管線中,變換分成2個步驟:

區域性座標系到世界座標系 和世界座標系到觀察座標系。

區域性座標系:就是建模座標系,它是在建模時由3dmax之類的工具定義的

世界座標系:用來統一場景中各個object的位置、尺寸等規格

觀察座標系:也就是攝像機的座標系。

區域性座標系到世界座標系變換:

這個變換是為了把在不同建模工具或者有用不同規格的建模尺寸下設計的模型,都統一到乙個通用的座標系下面。這個動作的作用,就像秦始皇統一度量衡一樣。從區域性座標系到世界座標系這個變換的動作,通常是在遊戲設計時,由遊戲工具(如:場景編輯器)來預先計算,並且為每個模型都計算出乙個變換矩陣(即記錄模型在遊戲場景中的大小、朝向、位置),叫做世界座標變換矩陣。在渲染時,實時的應用這些矩陣來參與運算

寫法:

d3dxmatrix worldmatrix; //這個矩陣就從檔案中讀進來

device->settransform(d3dts_world, &worldmatrix); 注意,使用巨集 d3dts_world 

從世界座標系到觀察座標系變換:

這個變換動作,實際上是為了簡化運算而做的。這樣變換之後,所有的頂點也就可以直接轉換為向量,非常的便於某些計算。這個動作通常是,將攝像機平移到世界座標系原點,再旋轉攝像師,使它的光軸與世界座標系z軸方向一致。與此同時,空間中的所有幾何體都要隨攝像機一同變換,以確保攝像機的視場不變。

這個變換叫取景變換,變換後得到觀察座標系。寫法如下:

d3dxmatrix viewmatrix; d3dxvector3 position, targetpoint, worldup;

d3dxmatrixlookatlh(&viewmatrix, //[out], 計算出的變換矩陣 &position, //攝像機位置 &targetpoint, //攝像機的觀察朝向 &worldup);//攝像機的y朝向,也就是頭的朝向

device->settransform(d3dts_view, &viewmatrix); 注意巨集,d3dts_view

其實,d3dxmatrixlookatlh()函式只是類似功能函式中的乙個,注意字尾 lh 這表示左手座標系,對應的還有乙個右手座標系,它們的區別在於:左手系 其z軸向裡為正;右手係向外為正。

固定渲染管線Shader

固定渲染管線是標準的幾何 光照 t l 管線,功能是固定的,它控制著世界 視 投影變換及固定光照控制和紋理混合 t l管線可以被渲染狀態控制,矩陣,光照及採製引數 固定渲染管線一般用於shader在老顯示卡無法顯示時的fallback 在shader的subshader都無法使用的時候呼叫 命令小括...

固定渲染管線流程

渲染管線是指為了在顯示器上顯示影象而經過的一系列必要操作,具體流程如下 1 自身座標系 在自身座標系中建模不像在世界座標系中要考慮本物體相對於其他物體的位置 大小 方向關係。2 世界座標系 一旦我們構造了各種模型,它們都在自己的自身座標系中,但是我們需要把它們都放到同乙個世界座標系中。物體從自身座標...

傳統渲染管線與可程式設計Shader著色器

上世紀的絕大多數顯示加速晶元都不能稱之為完整意義上的gpu,因為它們僅僅只有畫素填充和紋理貼圖的基本功能。而 nvidia 公司在1999年所發布的geforce 256圖形處理晶元則首次提出了gpu的概念。gpu所採用的核心技術有硬體t l 立方環境材質貼圖和頂點混合 紋理壓縮和凹凸對映貼圖 雙重...