yuuho.wiki

カオスの欠片を集めて知恵の泉を作る

ユーザ用ツール

サイト用ツール


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 で送信時に行列を転置できる。
tips/glsl/start.1635669607.txt.gz · 最終更新: 2021/10/31 08:40 by yuuho