tips:glsl:start
文書の過去の版を表示しています。
GLSL
WebGL2 の context をここでは変数名 gl で表記するものとする。
シェーダーのテンプレート
最初の行に改行などを挟まず #version 300 es が必要。
なので、文字列リテラル(バッククォート1つで囲む改行可能文字列)を使う場合は、
最初の行にバックスラッシュを入れるなどの調整があったほうが良い。
#version 300 esは webgl2 において最初の行に必須の宣言。void main()は両方のシェーダーで必須関数。precision mediump float;はフラグメントシェーダーの2行目に必須の宣言。
テンプレ
- 頂点シェーダー
#version 300 es void main(){ }
- フラグメントシェーダー
#version 300 es precision mediump float; void main(){ }
WebGL2 とその他 GLSL の書き方の違い
古い書き方をしているサイトのコードなどに騙されないように。
これらは並列実行用。
| 古い | 新しい |
|---|---|
attribute | in |
varying | out |
カメラ行列など、すべての頂点に対して同じ変数を使うとなったら、
uniform vec3 cam;。 attribute とか varying は使わないでいい。
予約語など
- 最初からある変数
gl_Position頂点シェーダーで出力しないといけないもの vec4 ?gl_PointSize頂点サイズが決められる?
- 頂点シェーダの
in自分でバッファ作って送り込む - 頂点シェーダの
outフラグメントシェーダにわたる - フラグメントシェーダの
in' 頂点シェーダの out から受け取る? - フラグメントシェーダの
out vec4色を出力する?
- 三角形の内部になる画素について塗られるっぽい?
- 頂点シェーダが出力した座標の補間値が各画素について計算されていて
- フラグメントシェーダはその画素の正確な座標を利用して画素値を決めるっぽい?
ビルトイン関数
dot | 内積 |
min | |
max |
webgl2 context
uniformMatrix3( pointer, transpose, matrix )
transpose で送信時に行列を転置できる。
未整理メモ
- WebGL2RenderingContext は WebGLRenderingContext のすべてのメソッドを持っている
gl.TRIANGLESは IBO を使って表示する。gl.TRIANGLE_STRIPは (1,2,3), (2,3,4), (3,4,5) … という感じですべての連続する三点を使う三角形を描画する。
tips/glsl/start.1636190997.txt.gz · 最終更新: 2021/11/06 09:29 by yuuho
