哦哇資訊網

著色器語言GLSL基礎

由 前端程式設計 發表于 家居2021-12-08

最近接觸了大量的GLSL語言生成的動畫效果,整理一下它的基礎知識作為參考。

vec2, vec3, vec4  n維浮點數向量

mat2, mat3, mat4  2x2, 3x3, 4x4 浮點數矩陣

sampler2D  2D紋理

向量的分量訪問:

vector。xyzw  代表了一個空間座標(x,y,z,w)

vector。rgba  代表了一個顏色(r,g,b,a)

vector。stpq  代表了一個紋理座標(s,t,p,q)

變數限定符

attribute   只能存在於vertex shader中,一般用於儲存頂點或法線資料,它可以在資料緩衝區中讀取資料

uniform  在執行時shader無法改變uniform變數, 一般用來放置程式傳遞給shader的變換矩陣,材質,光照引數等等。

varying  主要負責在vertex 和 fragment 之間傳遞變數

6。 內建的特殊變數

頂點著色器中output型別的內建變數

gl_Position:  放置頂點座標資訊 (vec4)

gl_PointSize 需要繪製點的大小   (float)

片元著色器中input型別的內建變數

gl_FragCoord:  片元在framebuffer畫面的相對位置 (vec4)

gl_PointCoord: 經過插值計算後的紋理座標,點的範圍是0。0到1。0 (vec2)

片元著色器中output型別的內建變數

gl_FragColor: 設定當前片點的顏色 (vec4)

7。 內建函式庫

floor(T x) 返回

ceil(T x) 返回>=x 的最小整數

fract(T x) 返回x的小數部分

T clamp(T x, T minVal, T maxVal)   min(max(x, minVal), maxVal),返回值被限定在 minVal,maxVal之間

T mix(T x, T y, T a)    取x,y的線性混合,x*(1-a)+y*a

T step(T edge, T x)    如果 x

TAG: GL變數內建vec4Vector