Pronto:
VScode + glslCanvas + glslLinter + Shadering línguas apoiar + glslang
Ref: tutorial
NDC:
u_resolution vec2 uniforme; vec2 pos = gl_FragCoord.xy / u_resolution - vec2 ( 0,5 , 0,5 );
1: esfera
#ifdef gl_ES precisão mediump flutuador ; #endif u_resolution vec2 uniforme; const flutuador e = 1E- 8 ; struct Forma { flutuador sdf; cor vec3; }; Combine_sdf forma (Forma A, Forma b) { Temp forma; temp.sdf = min (a.sdf, b.sdf); temp.color = a.color * flutuador (a.sdf <= 0.0 ) + * b.color flutuador (b.sdf <= 0,0 ); voltar temperatura; } Flutuador circle_sdf (pos vec2, centro vec2, flutuadorraio) { retorno comprimento (pos-centro) - raio; } Vazio main () { flutuador raio = 0,2 ; vec2 pos = gl_FragCoord.xy / u_resolution - vec2 ( 0,5 , 0,5 ); Forma cle01 = Forma (circle_sdf (pos, vec2 (- 0,1 , 0,0 ), raio), vec3 ( 1 , 0 , 0 )); Forma cle02 = Forma (circle_sdf (pos, vec2 ( 0.1 , 0.0 ), de raio), vec3 ( 0 , 0 , 1 )); Cena Forma = combine_sdf (cle01, cle02); vec3 cor = flutuador (scene.sdf <= 0,0 ) * scene.color; gl_FragColor = vec4 (cor, 1,0 ); }