Part of a tutorial by Jim Vallandingham introducing regl for data visualization.
Read it Here: Intro to regl
Blocks associated with this tutorial:
Part of a tutorial by Jim Vallandingham introducing regl for data visualization.
Read it Here: Intro to regl
Blocks associated with this tutorial:
<!DOCTYPE html> | |
<title>Simple regl Dots Example</title> | |
<body> | |
<script src="https://npmcdn.com/[email protected]/dist/regl.js"></script> | |
<script src="index.js"></script> | |
</body> |
// In practice, you would probably import/require regl | |
// const regl = require('regl')(); | |
// In this block, it is already loaded, so we just | |
// initialize it. For more info, see: | |
// https://github.com/regl-project/regl#standalone-script-tag | |
var regl = createREGL(); | |
var drawDots = regl({ | |
frag: ` | |
precision mediump float; | |
uniform vec4 color; | |
void main () { | |
gl_FragColor = color; | |
}`, | |
vert: ` | |
precision mediump float; | |
attribute vec2 position; | |
// @change acquire the pointWidth uniform | |
// this is set by the uniforms section below | |
uniform float pointWidth; | |
void main () { | |
// @change Set gl_PointSize global to | |
// configure point size | |
gl_PointSize = pointWidth; | |
gl_Position = vec4(position, 0, 1); | |
}`, | |
attributes: { | |
position: function(context, props) { | |
// @change I tweaked the constants here so | |
// the dots are not off the screen | |
return [ | |
[-1 * Math.cos(context.tick / 100), 0.2], | |
[Math.sin(context.tick / 100), -0.8], | |
[Math.sin(context.tick / 100), 0.8] | |
]; | |
} | |
}, | |
uniforms: { | |
color: function(context, props) { | |
return props.color; | |
}, | |
// @change: Add a pointWidth uniform - | |
// set by a prop | |
pointWidth: regl.prop('pointWidth') | |
}, | |
count: 3, | |
// @change: Set our primitive to points | |
primitive: 'points' | |
}) | |
regl.frame(function(context) { | |
drawDots({ | |
color: [0.208, 0.304, 1.000, 1.000], | |
// @change: Pass in the pointWidth prop | |
pointWidth: 10.0 | |
}); | |
}); |