'use strict' exports.shader = getShaderReference exports.program = createProgram var GLError = require("./GLError") var formatCompilerError = require('gl-format-compiler-error'); var weakMap = typeof WeakMap === 'undefined' ? require('weakmap-shim') : WeakMap var CACHE = new weakMap() var SHADER_COUNTER = 0 function ShaderReference(id, src, type, shader, programs, count, cache) { this.id = id this.src = src this.type = type this.shader = shader this.count = count this.programs = [] this.cache = cache } ShaderReference.prototype.dispose = function() { if(--this.count === 0) { var cache = this.cache var gl = cache.gl //Remove program references var programs = this.programs for(var i=0, n=programs.length; i