頂點著色器:頂點著色器從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]中,所以需要轉換