著色器指令碼語言使用方法

2021-08-27 12:20:27 字數 1040 閱讀 1952

#uniform 

輸入著色器的唯讀值,儲存資料用的,例如轉換矩陣、光照引數或者顏色。基本上各種輸入著色器的常量引數像頂點和片段應該是uniform。uniform宣告全域性變數,頂點著色器中宣告的uniform,片元著色器也可以使用。另,不同平台對個數有限制,詳情可以查資料。

e.guniform mat4 viewprojmatrix;

uniform mat4 viewmatix;

uniform vec3 lightposition;

#attibute (屬性)

僅僅在頂點著色器中被使用,做為頂點著色器的輸入。典型被用來儲存位置、法線、貼圖座標和顏色資料。屬性是每個頂點被繪製的詳細資料。個數也有限制,最小為8.

e.gattribute vec4 a_positon;

attribute vec4_a_texcoord0;

#varying (變數)

變數被用來儲存頂點著色器的輸出和片元著色器的輸入。他們在頂點著色器和片元著色器中必須被相同的宣告(型別需匹配),數量限制最小是8

varying vec2 texcoord;

varying vec4 color;

# lowp, mediump, highp (精度控制)

精度控制能夠被用在任何浮點和整型數變數。

e.ghighp vec4 position;

varying lowp vec4 color;

mediump float specularexp;

//預設精度在頭部定義

precision highp float;

precision mediump int;

#invariant (不變性)

被用於任何頂點著色器的變數輸出的關鍵字。一旦輸出被宣布為invariance, 同樣計算的輸入相同,編譯器保證的輸出結果相同。

e.ginvariant gl_position;

//可以使用#pragma指令保證全域性變數保持invariant

沒有搞懂的部分

sample2d

texture2d

著色器語言

metal shading language metal 的著色器用的是一門專門的語言,叫metal shading language 大概可以叫msl?既然是一門專門的語言,它是一門單獨的語言,但它不是全新的。它是 c 14 的乙個子集,然後做了不多的擴充套件。和glsl比,尤其是熟悉 c 的同學...

OpenGL ES 著色器指令碼

static char vshaderstr attribute vec4 a position n attribute vec4 a color n varying vec4 v color n void main n n static char fshaderstr ifdef gl es n ...

使用指令碼語言

dim myvar myvar hello world myvar 在這個例子中,option explicit語句強制所有的變數必須專門宣告。dim語句宣告了變數myvar。如果在使用變數前沒有宣告變數,vbscript就會給出執行時錯誤資訊 variable is undefined myvar...