UNPKG

2.4 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 _geo3dBox = require('geo-3d-box');
12
13var _geo3dBox2 = _interopRequireDefault(_geo3dBox);
14
15var _lib = require('../../lib');
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19(0, _tape2.default)('Lambert Lit Augmentation', function (t) {
20 var scene = (0, _lib.Scene)({
21 autoStart: false,
22 renderer: (0, _lib.ForwardRenderer)({
23 autoResizeCanvas: false,
24 width: 100,
25 height: 100
26 })
27 });
28
29 var gl = scene.renderer.gl;
30 var camera = (0, _lib.PerspectiveCamera)();
31 scene.add(camera);
32 var geometry = (0, _lib.Geometry)((0, _geo3dBox2.default)({ size: 5 }));
33
34 var material = (0, _lib.LitMaterial)({
35 color: [51 / 255, 0, 0] // Ambient color
36 }).use(_lib.LambertAugment, {
37 diffuse: [1, 1, 1]
38 });
39
40 var mesh = (0, _lib.Mesh)(geometry, material);
41
42 var whiteLight = (0, _lib.DirectionalLight)({ color: [1, 1, 1], direction: [1, 0, 0] });
43 var redLight = (0, _lib.DirectionalLight)({ color: [1, 0, 0], direction: [-1, 0, 0] });
44
45 camera.position[2] = 20;
46 mesh.transform.euler[1] = Math.PI * 0.25;
47 scene.add(mesh);
48
49 t.test('no lights renders the ambient color', function (t) {
50 t.plan(3);
51
52 scene.render(camera);
53
54 t.deepLooseEqual((0, _readPixel2.default)(gl, 50, 50), [51, 0, 0], 'The center is dark red');
55 t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [51, 0, 0], 'The left is dark red');
56 t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [51, 0, 0], 'The right is dark red');
57 });
58
59 t.test('the box is affected by a single light', function (t) {
60 t.plan(2);
61
62 scene.add(whiteLight);
63 scene.render(camera);
64
65 t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [51, 0, 0], 'The left is black');
66 t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [231, 180, 180], 'The right is pink');
67 });
68
69 t.test('the box is affected by a single light', function (t) {
70 t.plan(2);
71
72 scene.add(redLight);
73 scene.render(camera);
74
75 t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [231, 0, 0], 'The left is red');
76 t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [231, 180, 180], 'The right is pink');
77
78 scene.renderer.destroy();
79 });
80});
\No newline at end of file