UNPKG

1.66 kBJavaScriptView Raw
1'use strict';
2
3var _tape = require('tape');
4
5var _tape2 = _interopRequireDefault(_tape);
6
7var _lib = require('../../lib');
8
9var _shaderCache = require('../../lib/renderer/shader-cache');
10
11var _shaderCache2 = _interopRequireDefault(_shaderCache);
12
13function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15(0, _tape2.default)('Shader Cache', function (t) {
16 t.plan(7);
17 var renderer = (0, _lib.ForwardRenderer)({
18 autoAddCanvas: false
19 });
20 var cache = (0, _shaderCache2.default)();
21 var meshA = (0, _lib.Mesh)((0, _lib.Geometry)(), (0, _lib.FlatMaterial)());
22 var meshB = (0, _lib.Mesh)((0, _lib.Geometry)(), (0, _lib.FlatMaterial)());
23
24 var shaderA = cache.getOrCreate(renderer.gl, meshA, '');
25 var shaderB = cache.getOrCreate(renderer.gl, meshB, '');
26
27 var shaderA2 = cache.getOrCreate(renderer.gl, meshA, '');
28 var shaderB2 = cache.getOrCreate(renderer.gl, meshB, '');
29
30 t.equal(shaderA, shaderB, 'Caches the shader across meshes');
31 t.equal(shaderA, shaderA2, 'Caches the shader across time');
32 t.equal(shaderB, shaderB2, 'Caches the shader across time');
33
34 cache.clearMeshes();
35
36 var shaderA3 = cache.getOrCreate(renderer.gl, meshA, '');
37
38 t.equal(shaderA, shaderA3, 'Cache retains the copy after clearMeshes');
39 t.equal(shaderB, shaderA3, 'Cache retains the copy after clearMeshes');
40
41 cache.clearMeshes();
42 cache.clearUnused();
43
44 var shaderA4 = cache.getOrCreate(renderer.gl, meshA, '');
45
46 t.notEqual(shaderA, shaderA4, 'Does not retain cache if no meshes used it previously');
47 t.notEqual(shaderB, shaderA4, 'Does not retain cache if no meshes used it previously');
48
49 renderer.destroy();
50});
\No newline at end of file