glam
Version:
Experimental WebGL Engine
38 lines (26 loc) • 839 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createShaderOrGetCached;
var _glShader = require('gl-shader');
var _glShader2 = _interopRequireDefault(_glShader);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createShaderOrGetCached(cache, gl, mesh, defines) {
var material = mesh.material;
var key = defines + material.vertSource + material.fragSource;
var cachedEntry = cache[key];
var shader = undefined;
if (cachedEntry) {
shader = cachedEntry.shader;
cachedEntry.meshes.push(mesh);
} else {
// Create and cache the shader
shader = (0, _glShader2.default)(gl, defines + material.vertSource, defines + material.fragSource);
cache[key] = {
shader: shader,
meshes: [mesh]
};
}
return shader;
}