<!-- WebGL 2 shaders --> <script id="vs-render" type="x-shader/x-vertex"> #version 300 es #define POSITION_LOCATION 0 #define ATTRIBUTE_DATA_LOCATION 6 precision highp float; precision highp int; uniform mat4 MVP; layout(location = POSITION_LOCATION) in vec2 position; layout(location = ATTRIBUTE_DATA_LOCATION) in float data; out float v_attribute; void main() { gl_Position = MVP * vec4(position, 0.0, 1.0); v_attribute = data; } </script> <script id="fs-render" type="x-shader/x-fragment"> #version 300 es precision highp float; precision highp int; in float v_attribute; out vec4 color; void main() { const vec4 blue = vec4( 0.0, 0.0, 1.0, 1.0 ); const vec4 yellow = vec4( 1.0, 1.0, 0.0, 1.0 ); color = v_attribute >= 0.0 ? mix(blue, yellow, sqrt(v_attribute)) : yellow; } </script> <script id="vs-render-centroid" type="x-shader/x-vertex"> #version 300 es #define POSITION_LOCATION 0 #define ATTRIBUTE_DATA_LOCATION 6 precision highp float; precision highp int; uniform mat4 MVP; layout(location = POSITION_LOCATION) in vec2 position; layout(location = ATTRIBUTE_DATA_LOCATION) in float data; centroid out float v_attribute; void main() { gl_Position = MVP * vec4(position, 0.0, 1.0); v_attribute = data; } </script> <script id="fs-render-centroid" type="x-shader/x-fragment"> #version 300 es precision highp float; precision highp int; centroid in float v_attribute; out vec4 color; void main() { const vec4 blue = vec4( 0.0, 0.0, 1.0, 1.0 ); const vec4 yellow = vec4( 1.0, 1.0, 0.0, 1.0 ); color = v_attribute >= 0.0 ? mix(blue, yellow, sqrt(v_attribute)) : yellow; } </script>