-
Notifications
You must be signed in to change notification settings - Fork 13
/
previewScript.js
78 lines (64 loc) · 1.93 KB
/
previewScript.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
68
69
70
71
72
73
74
75
76
77
78
'use strict';
/* global goo */
var setup = function (args, ctx) {
var RenderTarget = goo.RenderTarget;
var MeshData = goo.MeshData;
var Shader = goo.Shader;
var Quad = goo.Quad;
var MeshDataComponent = goo.MeshDataComponent;
var MeshRendererComponent = goo.MeshRendererComponent;
var Material = goo.Material;
var FullscreenUtils = goo.FullscreenUtils;
var Transform = goo.Transform;
var shader = {
attributes: {
vertexPosition: 'POSITION',
vertexUV0: 'TEXCOORD0'
},
uniforms: {},
vshader: [
'attribute vec3 vertexPosition;',
'attribute vec2 vertexUV0;',
'varying vec2 textureCoord;',
'void main(void) {',
' textureCoord = vertexUV0;',
' gl_Position = vec4(vertexPosition.xy, 0.0, 1.0);',
'}'
].join('\n'),
fshader: [
'varying vec2 textureCoord;',
'void main(void){',
' gl_FragColor = vec4(textureCoord.xy, 0.0, 1.0);',
'}'
].join('\n')
};
var renderable = {
meshData: FullscreenUtils.quad,
materials: [new Material(shader)],
transform: new Transform()
};
var size = 64;
var renderer = ctx.world.gooRunner.renderer;
ctx.renderTarget = new RenderTarget(size, size);
renderer.render(renderable, FullscreenUtils.camera, [], ctx.renderTarget, true);
var pixels = new Uint8Array(size * size * 4);
renderer.readPixels(0,0,size,size,pixels);
// Draw the pixels to a canvas element
var canvas = document.createElement('CANVAS');
canvas.width = canvas.height = size;
var context = canvas.getContext('2d');
var imgData = context.createImageData(size, size);
imgData.data.set(pixels);
context.putImageData(imgData,0,0);
var texture = new goo.Texture(canvas, {
wrapS: 'EdgeClamp',
wrapT: 'EdgeClamp'
}, size, size);
ctx.entity.meshRendererComponent.materials[0].setTexture('DIFFUSE_MAP', texture);
};
var cleanup = function (args, ctx) {
ctx.entity.meshRendererComponent.materials[0].removeTexture('DIFFUSE_MAP');
};
var update = function (args, ctx) {
};
var parameters = [];