-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
56 lines (48 loc) · 1.69 KB
/
index.js
File metadata and controls
56 lines (48 loc) · 1.69 KB
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
loadShaders([
'shaders/gaussian.x.fs.glsl',
'shaders/gaussian.y.fs.glsl',
'shaders/sobel.fs.glsl',
'shaders/copy.fs.glsl',
'shaders/merge.fs.glsl'
], function (shaders) {
var srcCanvas = document.createElement('canvas');
srcCanvas.width = 1024;
srcCanvas.height = 1024;
var srcCtx = srcCanvas.getContext('2d');
var dstCanvas = document.getElementById('main-canvas');
var postproc = new PostProcessor(dstCanvas, 1024, 1024);
var gx = postproc.createProgram(shaders[0]);
var gy = postproc.createProgram(shaders[1]);
var sobel = postproc.createProgram(shaders[2]);
var copy = postproc.createProgram(shaders[3]);
var merger = postproc.createProgram(shaders[4]);
var origin = postproc.createInput(new Uint32Array(1024 * 1024), 1024, 1024);
var WIDTH = 800;
var HEIGHT = 600;
var video = document.createElement('video');
function tick() {
srcCtx.drawImage(video, 0, 0);
postproc.setupInputImage(srcCanvas);
postproc.iterate(gx);
postproc.iterate(gy);
postproc.copyTo(origin);
postproc.iterate(sobel);
postproc.callProgram(merger, [postproc.working_textures[1], origin], postproc.working_textures[0], {});
postproc.renderTexture(postproc.working_textures[0]);
webkitRequestAnimationFrame(tick);
}
navigator.webkitGetUserMedia({video: true}, function (stream) {
console.log('load');
video.src = window.URL.createObjectURL(stream);
video.play();
setTimeout(function () {
WIDTH = video.videoWidth;
HEIGHT = video.videoHeight;
dstCanvas.width = WIDTH;
dstCanvas.height = HEIGHT;
srcCtx.translate(WIDTH, HEIGHT);
srcCtx.scale(-1, -1);
webkitRequestAnimationFrame(tick);
}, 100);
});
});