目次

GLSL

WebGL2 の context をここでは変数名 gl で表記するものとする。

シェーダーのテンプレート

最初の行に改行などを挟まず #version 300 es が必要。
なので、文字列リテラル(バッククォート1つで囲む改行可能文字列)を使う場合は、 最初の行にバックスラッシュを入れるなどの調整があったほうが良い。

テンプレ

頂点シェーダー
#version 300 es
void main(){
 
}
フラグメントシェーダー
#version 300 es
precision mediump float;
void main(){
 
}

WebGL2 とその他 GLSL の書き方の違い

古い書き方をしているサイトのコードなどに騙されないように。

これらは並列実行用。

古い 新しい
attribute in
varying out

カメラ行列など、すべての頂点に対して同じ変数を使うとなったら、 uniform vec3 cam;。 attribute とか varying は使わないでいい。

予約語など

ビルトイン関数

dot 内積
min
max

その他 https://qiita.com/edo_m18/items/71f6064f3355be7e4f45

webgl2 context

未整理メモ

TRIANGLES STRIP の仕組み

type face index vertex index
0,1,2 F0 V0 V1 V2
1,0,2 F1 V2 V1 V3
0,1,2 F2 V2 V3 V4
1,0,2 F3 V4 V3 V5
0,1,2 F4 V4 V5 V6
1,0,2 F5 V6 V5 V7
0,1,2 F6 V6 V7 V8
1,0,2 F7 V8 V7 V9

うまく一回の strip 呼び出しで描画できなさそうなときは半時計回りの三角形を挟んで無かったことにする?