在glsl的內建函式中,經常看到引數的型別為gentype之類,gentype到底指的是什麼型別?
具體到某個glsl函式時,會使用實際的型別替代gentype, genitype, genutype, or genbtype,同時輸出的型別的元件數與輸入型別的元件數相同,這一句有點繞,舉個例子:
mod函式定義為:
gentype mod(gentype x,float y);
gentype mod(gentype x,gentype y);
gendtype mod(gendtype x,double y);
gendtype mod(gendtype x, gendtype y);
返回值:x - y * floor(x/y)
具體到某個渲染器裡,可以有這樣的寫法mod(uv, 2.0)
uv座標是vec2型別,vec2本身就有兩個值,那麼函式返回應該還是乙個vec2,包含兩個值,假設這個uv座標時(3.0, 4.0),那麼返回值應該是:(3.0-2.0floor(3.0/2.0), 4.0-2.0floor(4.0/2.0)), 結果為(1.0, 0.0)
在shadertoy中,uv座標如果做了規範化處理,uv.x, uv.y都落在[0,1]之間,那麼mod(uv, 1.0), 結果 uv = mod(uv, 1.0).
在渲染器裡使用最多的還是 gentype, gendtype, 就是以 float, double為基本元素的引數。尤其是以 float 為基本元素的float, vec2, vec3, vec4.
GLSL常用內建函式
1.dot 點乘 返回兩個單位向量之間夾角的cos值 2.cross 叉乘 3.texture2d 用於紋理取樣 4.normalize 對 乙個向量量規格化 5.clamp 將 個向量固定在乙個最小值和最大值之間 以下內建函式對向量標量同樣有效 6.pow 冪函式 7.exp log 指數函式 對...
GLSL常用內建函式彙總
all 在所有為真的時候,返回為真 any 在任一變數為真的時候,返回為真 dot 向量點乘 cross 向量的叉積 ceil x 向上取整 如 ceil 3.5 值為4 floor x 向下取整 如 floor 3.5 值為3 pow x,y 求x的y次方 exp x 自然指數e的x次方 exp2...
GLSL 內建變數
有些opengl es操作在頂點處理器和片元處理器之間有特定的功能,有些在片元處理器之後又特定的功能,著色器通過內建變數同這些固定功能進行通訊。在opengl es中,內建特殊變數部分來自頂點著色器的輸出變數,部分來自於片元著色器的輸入變數和輸出變數。不同於使用者定義的varying變數,內建特殊變...