1 | 'use strict';
|
2 |
|
3 | var _tape = require('tape');
|
4 |
|
5 | var _tape2 = _interopRequireDefault(_tape);
|
6 |
|
7 | var _lib = require('../../lib');
|
8 |
|
9 | var _shaderCache = require('../../lib/renderer/shader-cache');
|
10 |
|
11 | var _shaderCache2 = _interopRequireDefault(_shaderCache);
|
12 |
|
13 | function _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 |