Shader學習筆記(三) GPU流水線

2021-08-04 13:36:18 字數 1575 閱讀 6459

當gpu從cpu那裡的到渲染命令後,經過一系列流水線操作,最終把圖元渲染到螢幕上。

幾何階段和光柵化階段,開發者沒有絕對的控制權,是由gpu實現的通過流水線化,大大加快了渲染的速度。gpu向開發者提供了很多控制權。   上圖中的每個階段gpu都提供了不同的可配置性和可程式設計性。

幾何階段

頂點著色器  是完全可程式設計的,它用於實現頂點座標的空間變換,頂點著色的功能。它的輸入來只cpu,處理單位是頂點。gpu可以利用本身的特性並行化處理每乙個頂點這意味著這一階段的處理輸的會很快。

曲面細分著色器 是乙個可選的著色器 它用於細分圖元

幾何著色器 是乙個可選的著色器它用於執行逐圖元操作 或產生更多的圖元。

裁剪  這一階段是可配置的,目的是將把不在攝像機檢視內的頂點裁剪掉,並剔除某些三角圖元麵片。

螢幕對映 這一階段是不可配置和程式設計的  負責把每個圖元的座標轉換到螢幕座標系中

三角形遍歷

片元著色器  是乙個非常重要的可程式設計的著色器階段

片元著色器的輸入是上乙個階段對頂點資訊插值得到的結果,而它的輸出是乙個或多個顏色值

逐片元操作   在directx中叫輸出合併階段   是高度可配置性的 ,可以設定每一步的細節

主要任務  

(1)決定每個片元的可見性。涉及了很多的測試工作 如深度測試  模板測試。

(2)如果乙個片元通過了所有的測試,就需要把這個片元的值和顏色緩衝區的顏色合併  或者說是混合。

兩個最基本的測試------深度測試和模板測試

如果乙個片元通過了上面的所有的測試  就來到了合併面前 或者說混合

eealyz-技術    在unity給出的渲染流水線中,我們發現它給出的深度測試是在片元著色器之前。這種將深度測試提前執行的技術叫early—z技術

Shader學習筆記

direct和opengl兩種程式設計標準,前者是微軟提供的,一般用於windows平台,而後者是linux android ios等都共同支援的標準。由這兩種標準就衍生出來了集中gpu程式語言,諸如hlsl cg glsl等,在unity裡面,並不直接使用者三種語言去編寫,而是用自己自定義的sha...

Shader 學習筆記 20151031

閱讀了unity shaders and effects cookboot的 custom light model一節。page 17 閱讀了unity online manual關於 custom light model兩段文章 閱讀了博文 unity shaders 初探su ce shader...

Shader 學習筆記 20151102

計算光源法線點乘,也就是它們之間的夾角余弦 float diflight dot s.normal,lightdir 計算視點法線點乘,也就是它們之間的夾角余弦 float rimlight dot s.normal,viewdir 給光源法線點乘搞了乙個hlambert效果 就是讓非光照面也有明暗...