GLSL
OpenGL Shading Langusage
godotは3.0のAPIをサポートしている
SandBox
tutorial
main()がある
uniform変数はCPUから与えられる値
スレッドごとによって値が変わらない
型としてはvec2,vec3,vec4やfloatをサポート
変数名にprefixとしてu_をつける慣習あったりなかったり。
実際のところどんな名前なのかは実行プラットフォーム次第
gl_FragCoordは各ピクセルの二次元座標
スレッドごとにどのピクセルを処理している変わるので異なる値をもつ
stはそのスレッドで担当するピクセル座標といえる
スレッドごとに異なる値をもつものはvaryingと呼ぶ
code:=sample
precision mediump float;
uniform vec2 u_resolution; // モニタ画面サイズ(x,y)
uniform vec2 u_mouse; // マウス座標. xy: current, zw: click
uniform float u_time; //経過時間
void main() {
//それぞれのスレッドの担当するピクセル座標を画面サイズでわる
//得られるstは0-1の値で正規化された値になる。
vec2 st = gl_FragCoord.xy/u_resolution;
gl_FragColor = vec4(st.x,st.y,0.0,1.0);
}
出力
https://gyazo.com/3a5f85e472e8840aa2b0c48618655d7a
左下が黒(0,0,0,0)
右下が赤(1,0,0,0)
左上が緑(0,1,0,0)
右上が黄(1,1,0,0),
参考サイト