UNPKG

glam

Version:

Experimental WebGL Engine

85 lines (58 loc) 2.42 kB
'use strict'; 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(); }); });