Source: lib/xutils/shaders/frag-shape.glsl.js


/**
 * https://thebookofshaders.com/05/
 * @param {object} paras paras.vert_scale [optional] number scale of vertices
 * @return {object} {vertexShader, fragmentShader}
 * @member xglsl.fragShape
 * @function
 */
export function fragShape(vparas) {
  return {
    fragmentShader: `
    #ifdef GL_ES
    precision mediump float;
    #endif

    uniform vec2 u_resolution;
    uniform vec2 u_mouse;
    uniform float u_time;

    // Plot a line on Y using a value between 0.0-1.0
    float plot(vec2 st, float pct){
      return  smoothstep( pct-0.02, pct, st.y) -
              smoothstep( pct, pct+0.02, st.y);
    }

    void main() {
        vec2 st = gl_FragCoord.xy/u_resolution;

        float y = st.x;

        vec3 color = vec3(y);

        // Plot a line
        float pct = plot(st, y);
        color = (1.0-pct)*color + pct*vec3(0.0,1.0,0.0);

        gl_FragColor = vec4(color,1.0);
    } `,
    vertexShader: `
    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
    `
    }
}