glam
Version:
Experimental WebGL Engine
85 lines (58 loc) • 2.42 kB
JavaScript
;
var _tape = require('tape');
var _tape2 = _interopRequireDefault(_tape);
var _normals = require('normals');
var _normals2 = _interopRequireDefault(_normals);
var _readPixel = require('../read-pixel');
var _readPixel2 = _interopRequireDefault(_readPixel);
var _geo3dBox = require('geo-3d-box');
var _geo3dBox2 = _interopRequireDefault(_geo3dBox);
var _lib = require('../../lib');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _tape2.default)("Lambert Lit Augmentation", function (t) {
var scene = (0, _lib.Scene)({
autoStart: false,
renderer: (0, _lib.ForwardRenderer)({
autoResizeCanvas: false,
width: 100,
height: 100
})
});
var gl = scene.renderer.gl;
var camera = (0, _lib.PerspectiveCamera)();
scene.add(camera);
var geometry = (0, _lib.Geometry)((0, _geo3dBox2.default)({ size: 5 }));
var material = (0, _lib.LitMaterial)({
color: [51 / 255, 0, 0] // Ambient color
}).use(_lib.LambertAugment, {
diffuse: [1, 1, 1]
});
var mesh = (0, _lib.Mesh)(geometry, material);
var whiteLight = (0, _lib.DirectionalLight)({ color: [1, 1, 1], direction: [1, 0, 0] });
var redLight = (0, _lib.DirectionalLight)({ color: [1, 0, 0], direction: [-1, 0, 0] });
camera.transform.position[2] = 20;
mesh.transform.euler[1] = Math.PI * 0.25;
scene.add(mesh);
t.test("no lights renders the ambient color", function (t) {
t.plan(3);
scene.render(camera);
t.deepLooseEqual((0, _readPixel2.default)(gl, 50, 50), [51, 0, 0], "The center is dark red");
t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [51, 0, 0], "The left is dark red");
t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [51, 0, 0], "The right is dark red");
});
t.test("the box is affected by a single light", function (t) {
t.plan(2);
scene.add(whiteLight);
scene.render(camera);
t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [51, 0, 0], "The left is black");
t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [231, 180, 180], "The right is pink");
});
t.test("the box is affected by a single light", function (t) {
t.plan(2);
scene.add(redLight);
scene.render(camera);
t.deepLooseEqual((0, _readPixel2.default)(gl, 35, 50), [231, 0, 0], "The left is red");
t.deepLooseEqual((0, _readPixel2.default)(gl, 65, 50), [231, 180, 180], "The right is pink");
scene.renderer.destroy();
});
});