在著色器中我們一般都會宣告變數來在程式中使用,但是著色器中還有一些特殊的變數,不宣告也可以使用。這些變數叫做內建變數。內建變數,相當於著色器硬體的輸入和輸出點,使用者利用這些輸入點輸入之後,就會看到螢幕上的輸出。通過輸出點可以知道輸出的某些資料內容。當然,實際上肯定不會這樣簡單,這麼說只是為了幫助理解。在頂點著色器中的內建變數和片元著色器的內建變數是不相同的。著色器中的內建變數有很多,在此,我們只列出最常用的集中內建變數。
頂點著色器的內建變數
輸入變數:
gl_position:頂點座標
gl_pointsize:點的大小,沒有賦值則為預設值1,通常設定繪圖為點繪製才有意義。
片元著色器的內建變數
輸入變數:
gl_fragcoord:當前片元相對視窗位置所處的座標。
gl_fragfacing:bool型,表示是否為屬於光柵化生成此片元的對應圖元的正面。
輸出變數:
gl_fragcolor:當前片元顏色
gl_fragdata:vec4型別的陣列。向其寫入的資訊,供渲染管線的後繼過程使用。
常見函式
radians(x
):角度轉弧度
degrees(x
):弧度轉角度
sin(x)
:正弦函式,傳入值為弧度。相同的還有cos余弦函式、tan正切函式、asin反正弦、acos反余弦、atan反正切
pow(x,
y):xyexp(x
):ex
exp2(x
):2x
log(x)
:logex
log2(x
):log2x
sqrt(x
):x√
inversesqr(x
):1x√
abs(x)
:取x的絕對值
sign(x
):x>0返回
1.0,x
<
0返回-
1.0,否則返回
0.0ceil(x
):返回大於或者等於x的整數
floor(x
):返回小於或者等於x的整數
fract(x
):返回x-floor(x
)的值mod(x,
y):取模(求餘)
min(x,
y):獲取xy中小的那個
max(x,
y):獲取xy中大的那個
mix(x,
y,a)
:返回x∗(1
−a)+y∗a
step(x
,a):x
<
a返回0.0
,否則返回
1.0smoothstep(x
,y,a
):a<
x返回0.0
,a>
y返回1.0
,否則返回
0.0-
1.0之間平滑的hermite插值。
dfdx(p
):p在x方向上的偏導數
dfdy(p
):p在y方向上的偏導數
fwidth(p
):p在x和y方向上的偏導數的絕對值之和
幾何函式
length(x
):計算向量x的長度
distance(x
,y):返回向量xy之間的距離
dot(x,
y):返回向量xy的點積
cross(x
,y):返回向量xy的差積
normalize(x
):返回與x向量方向相同,長度為
1的向量
矩陣函式
matrixcompmult(x
,y):將矩陣相乘
lessthan(x
,y):返回向量xy的各個分量執行x
<
y的結果,類似的有greaterthan
,equal
,notequal
lessthanequal(x
,y):返回向量xy的各個分量執行x
<
=y的結果,類似的有類似的有greaterthanequal
any(
bvecx)
:x有乙個元素為
true
,則為true
all(
bvecx)
:x所有元素為
true
,則返回
true
,否則返回
false
not(
bvecx)
:x所有分量執行邏輯非運算
紋理取樣函式有texture2d、texture2dproj、texture2dlod、texture2dprojlod、texturecube、texturecubelod及texture3d、texture3dproj、texture3dlod、texture3dprojlod等。
texture表示紋理取樣,2d表示對2d紋理取樣,3d表示對3d紋理取樣
lod字尾,只適用於頂點著色器取樣
proj表示紋理座標st會除以q
紋理取樣函式中,3d在opengles2.0並不是絕對支援。我們再次暫時不管3d紋理取樣函式。重點只對texture2d函式進行說明。texture2d擁有三個引數,第乙個引數表示紋理取樣器。第二個引數表示紋理座標,可以是二維、三維、或者四維。第三個引數加入後只能在片元著色器中呼叫,且只對取樣器為mipmap型別紋理時有效。
shell 函式與內建變數
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...
shell 函式與內建變數
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...
mysql內建變數 MySQL常用內建變數
mysql用很多常用的內建變數,掌握這些內建變數後對於我們快速獲取當前mysql的配置有很大幫助,下面就來列舉幾個常用的變數。檢視當前mysql版本號資訊。show variables like version mariadb none show variables like version var...