Build GLSL shaders with natural language

Favorites

    History

      Explore

      • organic motion background
      • a kaledioscope effect with trippy patterns and colors
      • dreamscape with chromatic abberation effect where mouse is
      • dreamscape
      • isometric vector art grid
      • sun
      • smoke mist turbulent
      • a smooth rainbow gradient with colors gently flowing into eachother
      • soft rainbow gradients flowing into eachother gently
      • morphing madness
      • gentle rainbow gradient
      • swirling
      • displacement shader on image with distortion centered around the mouse. add chromatic aberration effect which grows stronger at the edges
      Explore more
      ```glsl
      precision mediump float;
      
      uniform float u_time;
      uniform vec2 u_mouse;
      uniform vec2 u_resolution;
      varying vec2 v_uv;
      
      float sdfTunnel(vec3 p) {
          float t = atan(p.x, p.z);
          float r = length(p.xz);
          return abs(r - 2.0 + 0.5 * sin(t * 8.0 + u_time * 2.0));
      }
      
      vec3 getColor(float t) {
          return 0.5 + 0.5 * cos(t + vec3(0.0, 2.0, 4.0));
      }
      
      void main() {
          vec2 uv = (v_uv - 0.5) * vec2(u_resolution.y / u_resolution.x, 1.0);
          vec3 ro = vec3(0.0, 0.0, -4.0);
          vec3 rd = normalize(vec3(uv, 1.0));
      
          float totalDist = 0.0;
          for (int i = 0; i < 100; i++) {
              vec3 p = ro + rd * totalDist;
              float dist = sdfTunnel(p);
              totalDist += dist;
              if (dist < 0.001 || totalDist > 10.0) break;
          }
      
          vec3 col = getColor(totalDist * 0.1);
      
          float mouseDist = distance(u_mouse, v_uv);
          col *= 1.0 + 0.5 * mouseDist;
      
          gl_FragColor = vec4(col, 1.0);
      
          #include <colorspace_fragment>
      }
      ```