GLSL 関連メモ書き。コードはVScode の Extension: Shader Toy 用の記述だったり、glsl-canvasのだったり色々あるので注意

関数

参考・引用

https://thebookofshaders.com/glossary/

よくある記述

フラグメント座標を正規化(0~1に)

画面のUVを取得している

vec2 pos = gl_FragCoord.xy / u_resolution.xy;

glsl-canvasの時のおまじない


#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;
uniform float u_time;

画像の読み込み

#iChannel0 "image.png"
void main( void ){
	vec2 uv = gl_FragCoord.xy / iResolution.xy;
	vec4 color = texture(iChannel0,uv);
	gl_FragColor = color;
}

原点設定

//左下が原点
vec2 p = gl_FragCoord.xy / iResolution.xy;

//画面の中心に原点
vec2 p = (gl_FragCoord.xy * 2.0 - iResolution.xy) / min(iResolution.x, iResolution.y);

カメラ

vec2 cam = vec2(iMouse.x * 2.0 - 1.0, -iMouse.y * 2.0 + 1.0);

反映

p = vec2(p.x-cam.x,p.y+cam.y);

画面中心を原点