UNPKG

3.8 kBJavaScriptView Raw
1'use strict';
2
3var _tape = require('tape');
4
5var _tape2 = _interopRequireDefault(_tape);
6
7var _readPixel = require('../read-pixel');
8
9var _readPixel2 = _interopRequireDefault(_readPixel);
10
11var _mesh = require('../../lib/mesh');
12
13var _mesh2 = _interopRequireDefault(_mesh);
14
15var _perspective = require('../../lib/camera/perspective');
16
17var _perspective2 = _interopRequireDefault(_perspective);
18
19var _lit = require('../../lib/material/lit');
20
21var _lit2 = _interopRequireDefault(_lit);
22
23var _forward = require('../../lib/renderer/forward');
24
25var _forward2 = _interopRequireDefault(_forward);
26
27var _scene = require('../../lib/scene');
28
29var _scene2 = _interopRequireDefault(_scene);
30
31var _geometry = require('../../lib/geometry');
32
33var _geometry2 = _interopRequireDefault(_geometry);
34
35var _normals = require('normals');
36
37var _normals2 = _interopRequireDefault(_normals);
38
39var _geo3dBox = require('geo-3d-box');
40
41var _geo3dBox2 = _interopRequireDefault(_geo3dBox);
42
43function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44
45(0, _tape2.default)('Lit Material', function (t) {
46 var scene = (0, _scene2.default)({
47 autoStart: false,
48 renderer: (0, _forward2.default)({
49 autoResizeCanvas: false,
50 width: 100,
51 height: 100
52 })
53 });
54 var gl = scene.renderer.gl;
55 var camera = (0, _perspective2.default)();
56 var material = (0, _lit2.default)();
57 var box = (0, _geo3dBox2.default)({ size: 5 });
58 box.normals = _normals2.default.vertexNormals(box.cells, box.positions);
59 var geometry = (0, _geometry2.default)(box);
60 var mesh = (0, _mesh2.default)(geometry, material);
61
62 scene.add(camera);
63 scene.add(mesh);
64
65 material.shading.color = [1, 0, 0];
66 mesh.transform.position[2] = 0;
67 camera.position[2] = 20;
68
69 t.test('creates a scene with a red box', function (t) {
70 t.plan(5);
71
72 scene.render(camera);
73 t.deepLooseEqual((0, _readPixel2.default)(gl, 50, 50), [255, 0, 0], 'The center is red');
74 t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 35), [255, 0, 0], 'The top left is red');
75 t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 65), [255, 0, 0], 'The bottom right is red');
76 t.deepLooseEqual((0, _readPixel2.default)(gl, 30, 30), [255, 255, 255], 'The top left outside is white');
77 t.deepLooseEqual((0, _readPixel2.default)(gl, 70, 70), [255, 255, 255], 'The bottom right outside is white');
78 });
79
80 t.test("can change the box's color", function (t) {
81 t.plan(5);
82
83 material.shading.color = [0, 1, 1];
84 scene.render(camera);
85
86 t.deepLooseEqual((0, _readPixel2.default)(gl, 50, 50), [0, 255, 255], 'The center is cyan');
87 t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 35), [0, 255, 255], 'The top left is cyan');
88 t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 65), [0, 255, 255], 'The bottom right is cyan');
89 t.deepLooseEqual((0, _readPixel2.default)(gl, 30, 30), [255, 255, 255], 'The top left outside is white');
90 t.deepLooseEqual((0, _readPixel2.default)(gl, 70, 70), [255, 255, 255], 'The bottom right outside is white');
91 });
92
93 t.test('the box can scale', function (t) {
94 t.plan(5);
95
96 material.shading.color = [255, 0, 255];
97 mesh.transform.scale = [0.2, 0.2, 0.2];
98 scene.render(camera);
99
100 t.deepLooseEqual((0, _readPixel2.default)(gl, 50, 50), [255, 0, 255], 'The center is magenta');
101 t.deepLooseEqual((0, _readPixel2.default)(gl, 48, 48), [255, 0, 255], 'The top left is magenta');
102 t.deepLooseEqual((0, _readPixel2.default)(gl, 52, 52), [255, 0, 255], 'The bottom right is magenta');
103 t.deepLooseEqual((0, _readPixel2.default)(gl, 45, 45), [255, 255, 255], 'The top left outside is white');
104 t.deepLooseEqual((0, _readPixel2.default)(gl, 55, 55), [255, 255, 255], 'The bottom right outside is white');
105
106 scene.renderer.destroy();
107 });
108});
\No newline at end of file