CG語法及函式庫

2022-07-26 22:18:14 字數 2996 閱讀 3222

cg 標準函式庫主要分為五個部分: 1. 數學函式(mathematical functions); 2. 幾何函式(geometric functions); 3. 紋理對映函式(texture map functions); 4. 偏導數函式(derivative functions); 5. 除錯函式(debugging function);

1.數學函式:

2.幾何函式:cg 語言標準函式庫中有 3 個幾何函式會經常被使用到,分別是:normalize 函式,對向量進行歸一化;reflect 函式,計算反射光方向向量;refract 函式,計算折射光方向向量。強烈注意: 1. 著色程式中的向量最好進行歸一化之後再使用,否則會出現難以預料的 錯誤; 2. reflect 函式和 refract 函式都存在以「入射光方向向量」作為輸入引數, 注意這兩個函式中使用的入射光方向向量,是從外指向幾何頂點的;平時我 們在著色程式中或者在課本上都是將入射光方向向量作為從頂點出發。

3.紋理對映函式:s 象徵一元、二元、三元紋理座標;z 代表使用「深度比較(depth comparison)」 的值;q 表示乙個透視值(perspective value,其實就是透視投影後所得到的齊次坐 標的最後一位),這個值被用來除以紋理座標(s),得到新的紋理座標(已歸一 化到 0 和 1 之間)然後用於紋理查詢。 紋理函式非常多,總的來說,按照紋理維數進行分類,即:1d 紋理函式, 2d 紋理函式,3d 紋理函式,已經立方體紋理。需要注意,texrec 函式查詢的 紋理實際上也是二維紋理。

tex1d(sampler1d tex, float s) 一維紋理查詢

tex1d(sampler1d tex, float s, float dsdx, float dsdy) 使用導數值(derivatives)查詢一維紋理

tex1d(sampler1d tex, float2 sz) 一維紋理查詢,並進行深度值比較

tex1d(sampler1d tex, float2 sz, float dsdx,float dsdy) 使用導數值(derivatives)查詢一維紋理, 並進行深度值比較

tex1dproj(sampler1d tex, float2 sq) 一維投影紋理查詢

tex1dproj(sampler1d tex, float3 szq) 一維投影紋理查詢,並比較深度值

tex2d(sampler2d tex, float2 s) 二維紋理查詢

tex2d(sampler2d tex, float2 s, float2 dsdx, float2 dsdy) 使用導數值(derivatives)查詢二維紋理

tex2d(sampler2d tex, float3 sz) 二維紋理查詢,並進行深度值比較

tex2d(sampler2d tex, float3 sz, float2 dsdx,float2 dsdy) 使用導數值(derivatives)查詢二維紋理,並進行深度值比較

tex2dproj(sampler2d tex, float3 sq) 二維投影紋理查詢

tex2dproj(sampler2d tex, float4 szq) 二維投影紋理查詢,並進行深度值比較

texrect(samplerrect tex, float2 s)

texrect (samplerrect tex, float2 s, float2 dsdx, float2 dsdy)

texrect (samplerrect tex, float3 sz)

texrect (samplerrect tex, float3 sz, float2 dsdx,float2 dsdy)

texrect proj(samplerrect tex, float3 sq) texrect proj(samplerrect tex, float3 szq) tex3d(sampler3d tex, float s) 三維紋理查詢

tex3d(sampler3d tex, float3 s, float3 dsdx, float3 dsdy) 結合導數值(derivatives)查詢三維紋理

tex3dproj(sampler3d tex, float4 szq) 查詢三維投影紋理,並進行深度值比較

texcube(samplercube tex, float3 s) 查詢立方體紋理

texcube (samplercube tex, float3 s, float3 dsdx, float3 dsdy) 結合導數值(derivatives)查詢立方體紋理

texcubeproj (samplercube tex, float4 sq) 查詢投影立方體紋理

4.偏導函式:偏導數的物理含義是:在某乙個方向上的變化快慢。 所以 ddx 求的是 x 方向上,相鄰兩個畫素的某屬性值的變化量;ddy 球的是 y 方向上,相鄰兩個畫素的某屬性值的變化量。 如果函式 ddx 的引數為 myvar,該引數對應的畫素點 記為 pij ( ) , ,則 ddx(myvar)的值為「畫素點 pi j ( +1, ) 的值減去 myvar」。同理, 92 ddy(myvar)的值為「畫素點 pij ( ) , 1+ 的值減去 myvar」。如果函式 ddx 和 ddy 的輸 入引數為常數,則函式返回值永遠為 0。

ddx(a) 引數 a 對應乙個畫素位置,返回該畫素 值在 x 軸上的偏導數

ddy(a) 引數 a 對應乙個畫素位置,返回該畫素 值在 x 軸上的偏導數

作用:1. 函式 ddx 和 ddy 用於求取相鄰畫素間某屬性的差值; 2. 函式 ddx 和 ddy 的輸入引數通常是紋理座標; 3. 函式 ddx 和 ddy 返回相鄰畫素鍵的屬性差值;

CG 標準函式庫

函式 功能描述 abs x 返回輸入引數的絕對值 acos x 反餘切函式,輸入引數範圍為 1,1 返回 0,區間的角度值 all x 如果輸入引數均不為0,則返回ture 否則返回flase。運算 any x 輸入引數只要有其中乙個不為0,則返回true。asin x 反正弦函式,輸入引數取值區間...

函式庫檔案

乙個很簡單的問題除錯了好久,不過還算有收穫。現總結一下 1.vs2008中 math.h 標頭檔案中沒有定義m pi,如果程式確實要用m pi則需自己定義。define m pi 3.14159265358979323846 2.如果程式中自己定義的函式比較多,為了除錯方便使用方便,可以將這些函式都...

標準函式庫

1 rand與srand函式產生偽隨機數 cpp view plain copy print?intrand void void srand unsigned intseed rand返回乙個範圍在0和rand max之間的偽隨機數,為了避免程式每次執行時獲得相同的隨機數序列,可以使用srand函式...