CG

頂點著色器:頂點著色器從GPU前段模塊(寄存器)中提取圖元信息(頂點位置,法向量,紋理坐標),并完成頂點坐標控件轉換,法向量控件轉換,光照計算等操作,最后將計算好的數(shù)據(jù)傳送到指定寄存器中,然后片段著色器從中獲取所要的數(shù)據(jù),通常為“”紋理坐標,光照信息等“,并根據(jù)這些信息以及從應用程序傳遞的紋理信息,進行每個片段的顏色計算,最后將處理后的數(shù)據(jù)送光柵操作模塊。

片段著色器:對每個片段進行獨立的顏色計算,最后輸出顏色值的就是該片段最終顯示的顏色。

cg中禁止使用遞歸函數(shù)

1,CG中的變量類型

(1)float float2? float3 float4 32位浮點數(shù)

(2)half 16位浮點數(shù)

(3)int 32 位整形數(shù)

(4)bool

(5)fixed 12定點數(shù) 被所有的fragment profiles支持

(6)sampler* ?紋理句柄 sampler sampler1D sampler2D sampler3D samplerCUBE samplerRECT

(7)string?

1》cg中的關鍵字 in, out, inout 表示函數(shù)的輸入?yún)?shù)的傳遞方式,使用in, out代表圖形硬件上不同的寄存器

(1)in, 函數(shù)中的輸入,(值傳遞)

(2)out 輸出、(值傳遞)

(3)inout 輸入或輸出(應用傳遞)

(4)uniform 修飾的變量 的值是從外部傳入與constant相獨立,

2> 語義詞和語義綁定

(1)表示輸入的圖元數(shù)據(jù)含義(位置信息,法向量信息等),表明這些圖元數(shù)據(jù)存放在硬件資源(寄存器或紋理緩沖區(qū))

(2)在頂點或片段著色器中必須有一個和一個語義詞的綁定

2》矩陣數(shù)據(jù)最大不超過 4* 4

一個簡單的CG?

struct C2E1v_OutPut{

float4 postion:POSITION; ?//語義

float3 color : COLOR;

};

C2E1v_OutPut_green(){

C2E1v_OutPut out;

out.position = float(position, 0, 1);

out.color = float(0,1,0);

return out;

}

(void surf 參數(shù)解釋) 詳細信息看原文 ?http://www.cnblogs.com/sifenkesi/p/4678254.html

UnpackNormal ?將材質貼圖對應的法線 繪制在一張貼圖上。將貼圖對應點的單位法線向量信息float3(x,y,z) 儲存在圖對應的顏色里color(r,g,b)里,其中x,y,z分別對應r,g,b。單位法線向量 float3(x,y,z),x,y,z的取值范圍是 [-1,1]。在法線貼圖中被壓縮在

Lambert 光照模型公式為(IM光照模型)

I = Id * K

Id 為環(huán)境光強度, K 是材質對光的反射系數(shù), 得到的是漫反射體與環(huán)境光交互反射的強度



顏色的范圍[0,1]中,所以需要轉換

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容