著色器與渲染管線
渲染管線一般是有顯示芯片(GPU)內(nèi)部處理圖形信號的并行處理單元組成。這些并行處理單元兩兩之間是相互獨立的,在不同型號的硬件上獨立處理單元的數(shù)量也有很大的差異。
圖中陰影部分是可編程的部分
1.基本處理
該階段設(shè)定3D空間中物體的頂點坐標,頂點對應的顏色,頂點的紋理坐標等屬性,并且指定繪制方式。
2.頂點著色器
頂點著色器是一個可編程的處理單元,功能為執(zhí)行頂點的變換,光照,材質(zhì)的應用于計算等頂點的相關(guān)操作。工作過程為首先將原始的頂點幾何信息及其他屬性傳送到頂點著色器中,經(jīng)過自己開發(fā)的頂點著色器處理后產(chǎn)生紋理坐標,顏色,點位置等后繼流程需要的各項頂點屬性信息,然后將其傳遞給圖元裝配階段。
頂點著色器的輸入主要為待處理頂點相應的attribute變量,uniform變量,采樣器以及臨時變量;輸出主要為經(jīng)過頂點著色器生成的varying變量及一些內(nèi)建輸出變量。
頂點著色器的輸入數(shù)據(jù)由下面組成:
Attributes:使用頂點數(shù)組封裝每個頂點的數(shù)據(jù),一般用于每個頂點都各不相同的變量,如頂點位置、顏色等。
Uniforms:頂點著色器使用的常量數(shù)據(jù),不能被著色器修改,一般用于對同一組頂點組成的單個3D物體中所有頂點都相同的變量,如當前光源的位置。
Samplers:這個是可選的,一種特殊的uniforms,表示頂點著色器使用的紋理。
Shader program:頂點著色器的源碼或可執(zhí)行文件,描述了將對頂點執(zhí)行的操作。
輸出變量-易變比那里在頂點著色器賦值后并不是將賦的值送入后后繼的片元著色器中,而是在光柵化階段由管線根據(jù)片元所屬頂點對應的頂點著色器對此易變變量的賦值情況及片元與各項頂點的位置插值產(chǎn)生。