-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathindex.js
67 lines (54 loc) · 1.34 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import p5 from 'p5';
import fragmentShader from './fragment.fs';
export let props = {
backgroundColor: {
value: 'rgb(255, 0, 0)',
},
};
let shader;
/**
* @param {object} params
* @param {HTMLCanvasElement} params.canvas
* @param {p5} params.p
* @param {number} params.width
* @param {number} params.height
* @param {number} params.pixelRatio
*/
export function setup({ p, width, height }) {
shader = p.createShader(
/* glsl */ `
attribute vec3 aPosition;
attribute vec2 aTexCoord;
uniform mat4 uProjectionMatrix;
uniform mat4 uModelViewMatrix;
varying vec2 vUv;
void main() {
vUv = aTexCoord;
vec3 transformed = aPosition;
transformed.xy = transformed.xy - 1.;
gl_Position = vec4(transformed, 1.);
}
`,
fragmentShader,
);
}
/**
* @param {object} params
* @param {HTMLCanvasElement} params.canvas
* @param {p5} params.p
* @param {number} params.width
* @param {number} params.height
* @param {number} params.pixelRatio
* @param {number} params.time
* @param {number} params.deltaTime
* @param {number} params.frame
* @param {number} params.playhead
* @param {number} params.playcount
*/
export function draw({ p, width, height, time }) {
p.background(props.backgroundColor.value);
p.shader(shader);
shader.setUniform('uTime', time / 1000);
p.rect(0, 0, width, height);
}
export let rendering = 'p5-webgl';