Link

Memo

Favorite Art

glsl-canvas

対照表

描画逆引き

※GLSL-canvasやShaderToyなど、記述が混在しているので注意

p:ピクセル,radius:半径

float circle(vec2 p,float radius){
	vec2 dist = p-vec2(0.5);
	return 1.0-step(radius-(radius*0.01),dot(dist,dist)*4.0);
}

四角

p:ピクセル,size:縦横の大きさ

float box(vec2 p,vec2 size){
	size = vec2(0.5)-size*0.5;
	vec2 rect = step(size,p);
	rect *= step(size,vec2(1.0)-p);
	return rect.x*rect.y;
}

合成

circle() や box() は描画系の関数として

void main( void ){
	float TIME = iTime;
	vec4 MOUSE = iMouse;
	vec3 RES = iResolution;

	float c = circle(p,1.0);
	vec3 c_color = vec3(0,0,c);
	float b = box(p,vec2(1.0,0.5));
	vec3 b_color = vec3(b,0,0);
	color = b_color + c_color;
	gl_FragColor = vec4(color,1.0);
}

リング

※画面中心を原点とする場合