diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/webGLClient.js | 135 | ||||
-rw-r--r-- | src/webGLWorker.js | 129 |
2 files changed, 132 insertions, 132 deletions
diff --git a/src/webGLClient.js b/src/webGLClient.js index 1ae7332d..b3aa57b5 100644 --- a/src/webGLClient.js +++ b/src/webGLClient.js @@ -8,71 +8,71 @@ function WebGLClient() { var objects = {}; var calls = { - 0: { name: 'NULL' }, - 1: { name: 'getExtension' }, - 2: { name: 'enable' }, - 3: { name: 'disable' }, - 4: { name: 'clear' }, - 5: { name: 'clearColor' }, - 6: { name: 'createShader' }, - 7: { name: 'deleteShader' }, - 8: { name: 'shaderSource' }, - 9: { name: 'compileShader' }, - 10: { name: 'createProgram' }, - 11: { name: 'deleteProgram' }, - 12: { name: 'attachShader' }, - 13: { name: 'bindAttribLocation' }, - 14: { name: 'linkProgram' }, - 15: { name: 'getProgramParameter' }, - 16: { name: 'getUniformLocation' }, - 17: { name: 'useProgram' }, - 18: { name: 'uniform1i' }, - 19: { name: 'uniform1f' }, - 20: { name: 'uniform3fv' }, - 21: { name: 'uniform4fv' }, - 22: { name: 'uniformMatrix4fv' }, - 23: { name: 'vertexAttrib4fv' }, - 24: { name: 'createBuffer' }, - 25: { name: 'deleteBuffer' }, - 26: { name: 'bindBuffer' }, - 27: { name: 'bufferData' }, - 28: { name: 'bufferSubData' }, - 29: { name: 'viewport' }, - 30: { name: 'vertexAttribPointer' }, - 31: { name: 'enableVertexAttribArray' }, - 32: { name: 'disableVertexAttribArray' }, - 33: { name: 'drawArrays' }, - 34: { name: 'drawElements' }, - 35: { name: 'getError' }, - 36: { name: 'createTexture' }, - 37: { name: 'deleteTexture' }, - 38: { name: 'bindTexture' }, - 39: { name: 'texParameteri' }, - 40: { name: 'texImage2D' }, - 41: { name: 'compressedTexImage2D' }, - 42: { name: 'activeTexture' }, - 43: { name: 'getShaderParameter' }, - 44: { name: 'clearDepth' }, - 45: { name: 'depthFunc' }, - 46: { name: 'frontFace' }, - 47: { name: 'cullFace' }, - 48: { name: 'pixelStorei' }, - 49: { name: 'depthMask' }, - 50: { name: 'depthRange' }, - 51: { name: 'blendFunc' }, - 52: { name: 'scissor' }, - 53: { name: 'colorMask' }, - 54: { name: 'lineWidth' }, - 55: { name: 'createFramebuffer' }, - 56: { name: 'deleteFramebuffer' }, - 57: { name: 'bindFramebuffer' }, - 58: { name: 'framebufferTexture2D' }, - 59: { name: 'createRenderbuffer' }, - 60: { name: 'deleteRenderbuffer' }, - 61: { name: 'bindRenderbuffer' }, - 62: { name: 'renderbufferStorage' }, - 63: { name: 'framebufferRenderbuffer' }, - 64: { name: 'debugPrint' }, + 0: { name: 'NULL', args: 0 }, + 1: { name: 'getExtension', args: 1 }, + 2: { name: 'enable', args: 1 }, + 3: { name: 'disable', args: 1 }, + 4: { name: 'clear', args: 1 }, + 5: { name: 'clearColor', args: 4 }, + 6: { name: 'createShader', args: -2 }, + 7: { name: 'deleteShader', args: 1 }, + 8: { name: 'shaderSource', args: 2 }, + 9: { name: 'compileShader', args: 1 }, + 10: { name: 'createProgram', args: -1 }, + 11: { name: 'deleteProgram', args: 1 }, + 12: { name: 'attachShader', args: 2 }, + 13: { name: 'bindAttribLocation', args: 3 }, + 14: { name: 'linkProgram', args: 1 }, + 15: { name: 'getProgramParameter', args: 2 }, + 16: { name: 'getUniformLocation', args: -3 }, + 17: { name: 'useProgram', args: 1 }, + 18: { name: 'uniform1i', args: 2 }, + 19: { name: 'uniform1f', args: 2 }, + 20: { name: 'uniform3fv', args: 2 }, + 21: { name: 'uniform4fv', args: 2 }, + 22: { name: 'uniformMatrix4fv', args: 3 }, + 23: { name: 'vertexAttrib4fv', args: 2 }, + 24: { name: 'createBuffer', args: -1 }, + 25: { name: 'deleteBuffer', args: 1 }, + 26: { name: 'bindBuffer', args: 2 }, + 27: { name: 'bufferData', args: 3 }, + 28: { name: 'bufferSubData', args: 3 }, + 29: { name: 'viewport', args: 4 }, + 30: { name: 'vertexAttribPointer', args: 6 }, + 31: { name: 'enableVertexAttribArray', args: 1 }, + 32: { name: 'disableVertexAttribArray', args: 1 }, + 33: { name: 'drawArrays', args: 3 }, + 34: { name: 'drawElements', args: 4 }, + 35: { name: 'getError', args: 0 }, + 36: { name: 'createTexture', args: -1 }, + 37: { name: 'deleteTexture', args: 1 }, + 38: { name: 'bindTexture', args: 2 }, + 39: { name: 'texParameteri', args: 3 }, + 40: { name: 'texImage2D', args: 9 }, + 41: { name: 'compressedTexImage2D', args: 7 }, + 42: { name: 'activeTexture', args: 1 }, + 43: { name: 'getShaderParameter', args: 2 }, + 44: { name: 'clearDepth', args: 1 }, + 45: { name: 'depthFunc', args: 1 }, + 46: { name: 'frontFace', args: 1 }, + 47: { name: 'cullFace', args: 1 }, + 48: { name: 'pixelStorei', args: 2 }, + 49: { name: 'depthMask', args: 1 }, + 50: { name: 'depthRange', args: 2 }, + 51: { name: 'blendFunc', args: 2 }, + 52: { name: 'scissor', args: 4 }, + 53: { name: 'colorMask', args: 4 }, + 54: { name: 'lineWidth', args: 1 }, + 55: { name: 'createFramebuffer', args: -1 }, + 56: { name: 'deleteFramebuffer', args: 1 }, + 57: { name: 'bindFramebuffer', args: 2 }, + 58: { name: 'framebufferTexture2D', args: 5 }, + 59: { name: 'createRenderbuffer', args: -1 }, + 60: { name: 'deleteRenderbuffer', args: 1 }, + 61: { name: 'bindRenderbuffer', args: 2 }, + 62: { name: 'renderbufferStorage', args: 4 }, + 63: { name: 'framebufferRenderbuffer', args: 4 }, + 64: { name: 'debugPrint', args: 1 }, }; function fixArgs(command, args) { @@ -118,9 +118,10 @@ function WebGLClient() { var len = buffer.length; //dump('issuing commands, buffer len: ' + len + '\n'); while (i < len) { - var command = calls[buffer[i++]].name; + var info = calls[buffer[i++]]; + var command = info.name; assert(typeof command === 'string') - var numArgs = buffer[i++]; + var numArgs = info.args; assert(typeof numArgs === 'number', command); //dump('issue ' + [command, numArgs, 'peek:' + buffer.slice(i, i+5)] + '\n'); if (numArgs === 0) { diff --git a/src/webGLWorker.js b/src/webGLWorker.js index 4ca28fa9..90a1bed9 100644 --- a/src/webGLWorker.js +++ b/src/webGLWorker.js @@ -513,61 +513,60 @@ function WebGLWorker() { this.getExtension = function(name) { var i = this.prefetchedExtensions.indexOf(name); if (i < 0) return null; - commandBuffer.push(1, 1, name); + commandBuffer.push(1, name); return true; // TODO: return an object here }; this.getSupportedExtensions = function() { return this.prefetchedExtensions; }; this.enable = function(cap) { - commandBuffer.push(2, 1, cap); + commandBuffer.push(2, cap); }; this.disable = function(cap) { - commandBuffer.push(3, 1, cap); + commandBuffer.push(3, cap); }; this.clear = function(mask) { - commandBuffer.push(4, 1, mask); + commandBuffer.push(4, mask); }; this.clearColor = function(r, g, b, a) { - commandBuffer.push(5, 4, r, g, b, a); + commandBuffer.push(5, r, g, b, a); }; this.createShader = function(type) { var id = nextId++; - commandBuffer.push(6, -2, type, id); + commandBuffer.push(6, type, id); return { id: id, what: 'shader', type: type }; }; this.deleteShader = function(shader) { if (!shader) return; - commandBuffer.push(7, 1, shader.id); + commandBuffer.push(7, shader.id); }; this.shaderSource = function(shader, source) { shader.source = source; - commandBuffer.push(8, 2, shader.id, source); + commandBuffer.push(8, shader.id, source); }; this.compileShader = function(shader) { - commandBuffer.push(9, 1, shader.id); + commandBuffer.push(9, shader.id); }; this.getShaderInfoLog = function(shader) { return ''; // optimistic assumption of success; no proxying }; this.createProgram = function() { var id = nextId++; - commandBuffer.push(10, -1, id); + commandBuffer.push(10, id); return new WebGLProgram(id); }; this.deleteProgram = function(program) { if (!program) return; - commandBuffer.push(11, 1, program.id); + commandBuffer.push(11, program.id); }; this.attachShader = function(program, shader) { program.shaders.push(shader); - commandBuffer.push(12, 2, program.id, shader.id); + commandBuffer.push(12, program.id, shader.id); }; this.bindAttribLocation = function(program, index, name) { program.attributes[name] = { what: 'attribute', name: name, size: -1, location: index }; // fill in size later program.attributeVec[index] = name; - - commandBuffer.push(13, 3, program.id, index, name); + commandBuffer.push(13, program.id, index, name); }; this.getAttribLocation = function(program, name) { // all existing attribs are cached locally @@ -621,7 +620,7 @@ function WebGLWorker() { program.attributes[attr].size = existingAttributes[attr].size; } - commandBuffer.push(14, 1, program.id); + commandBuffer.push(14, program.id); }; this.getProgramParameter = function(program, name) { switch (name) { @@ -629,7 +628,7 @@ function WebGLWorker() { case this.ACTIVE_ATTRIBUTES: return program.attributeVec.length; case this.LINK_STATUS: { // optimisticaly return success; client will abort on an actual error. we assume an error-free async workflow - commandBuffer.push(15, 2, program.id, name); + commandBuffer.push(15, program.id, name); return true; } default: throw 'bad getProgramParameter ' + revname(name); @@ -656,50 +655,50 @@ function WebGLWorker() { } if (!(name in program.uniforms)) return null; var id = nextId++; - commandBuffer.push(16, -3, program.id, fullname, id); + commandBuffer.push(16, program.id, fullname, id); return { what: 'location', uniform: program.uniforms[name], id: id, index: index }; }; this.getProgramInfoLog = function(shader) { return ''; // optimistic assumption of success; no proxying }; this.useProgram = function(program) { - commandBuffer.push(17, 1, program ? program.id : 0); + commandBuffer.push(17, program ? program.id : 0); bindings.program = program; }; this.uniform1i = function(location, data) { if (!location) return; - commandBuffer.push(18, 2, location.id, data); + commandBuffer.push(18, location.id, data); }; this.uniform1f = function(location, data) { if (!location) return; - commandBuffer.push(19, 2, location.id, data); + commandBuffer.push(19, location.id, data); }; this.uniform3fv = function(location, data) { if (!location) return; - commandBuffer.push(20, 2, location.id, new Float32Array(data)); + commandBuffer.push(20, location.id, new Float32Array(data)); }; this.uniform4fv = function(location, data) { if (!location) return; - commandBuffer.push(21, 2, location.id, new Float32Array(data)); + commandBuffer.push(21, location.id, new Float32Array(data)); }; this.uniformMatrix4fv = function(location, transpose, data) { if (!location) return; - commandBuffer.push(22, 3, location.id, transpose, new Float32Array(data)); + commandBuffer.push(22, location.id, transpose, new Float32Array(data)); }; this.vertexAttrib4fv = function(index, values) { - commandBuffer.push(23, 2, index, new Float32Array(values)); + commandBuffer.push(23, index, new Float32Array(values)); }; this.createBuffer = function() { var id = nextId++; - commandBuffer.push(24, -1, id); + commandBuffer.push(24, id); return new WebGLBuffer(id); }; this.deleteBuffer = function(buffer) { if (!buffer) return; - commandBuffer.push(25, 1, buffer.id); + commandBuffer.push(25, buffer.id); }; this.bindBuffer = function(target, buffer) { - commandBuffer.push(26, 2, target, buffer ? buffer.id : 0); + commandBuffer.push(26, target, buffer ? buffer.id : 0); switch (target) { case this.ARRAY_BUFFER_BINDING: { bindings.arrayBuffer = buffer; @@ -713,43 +712,43 @@ function WebGLWorker() { }; this.bufferData = function(target, something, usage) { if (typeof something !== 'number') something = new something.constructor(something); - commandBuffer.push(27, 3, target, something, usage); + commandBuffer.push(27, target, something, usage); }; this.bufferSubData = function(target, offset, something) { if (typeof something !== 'number') something = new something.constructor(something); - commandBuffer.push(28, 3, target, offset, something); + commandBuffer.push(28, target, offset, something); }; this.viewport = function(x, y, w, h) { - commandBuffer.push(29, 4, x, y, w, h); + commandBuffer.push(29, x, y, w, h); }; this.vertexAttribPointer = function(index, size, type, normalized, stride, offset) { - commandBuffer.push(30, 6, index, size, type, normalized, stride, offset); + commandBuffer.push(30, index, size, type, normalized, stride, offset); }; this.enableVertexAttribArray = function(index) { - commandBuffer.push(31, 1, index); + commandBuffer.push(31, index); }; this.disableVertexAttribArray = function(index) { - commandBuffer.push(32, 1, index); + commandBuffer.push(32, index); }; this.drawArrays = function(mode, first, count) { - commandBuffer.push(33, 3, mode, first, count); + commandBuffer.push(33, mode, first, count); }; this.drawElements = function(mode, count, type, offset) { - commandBuffer.push(34, 4, mode, count, type, offset); + commandBuffer.push(34, mode, count, type, offset); }; this.getError = function() { // optimisticaly return success; client will abort on an actual error. we assume an error-free async workflow - commandBuffer.push(35, 0); + commandBuffer.push(35); return this.NO_ERROR; }; this.createTexture = function() { var id = nextId++; - commandBuffer.push(36, -1, id); + commandBuffer.push(36, id); return new WebGLTexture(id); }; this.deleteTexture = function(texture) { if (!texture) return; - commandBuffer.push(37, 1, texture.id); + commandBuffer.push(37, texture.id); texture.id = 0; }; this.isTexture = function(texture) { @@ -763,106 +762,106 @@ function WebGLWorker() { } } texture.binding = target; - commandBuffer.push(38, 2, target, texture ? texture.id : 0); + commandBuffer.push(38, target, texture ? texture.id : 0); }; this.texParameteri = function(target, pname, param) { - commandBuffer.push(39, 3, target, pname, param); + commandBuffer.push(39, target, pname, param); }; this.texImage2D = function(target, level, internalformat, width, height, border, format, type, pixels) { assert(pixels || pixels === null); // we do not support the overloads that have fewer params - commandBuffer.push(40, 9, target, level, internalformat, width, height, border, format, type, pixels ? new pixels.constructor(pixels) : pixels); + commandBuffer.push(40, target, level, internalformat, width, height, border, format, type, pixels ? new pixels.constructor(pixels) : pixels); }; this.compressedTexImage2D = function(target, level, internalformat, width, height, border, pixels) { - commandBuffer.push(41, 7, target, level, internalformat, width, height, border, new pixels.constructor(pixels)); + commandBuffer.push(41, target, level, internalformat, width, height, border, new pixels.constructor(pixels)); }; this.activeTexture = function(texture) { - commandBuffer.push(42, 1, texture); + commandBuffer.push(42, texture); }; this.getShaderParameter = function(shader, pname) { switch (pname) { case this.SHADER_TYPE: return shader.type; case this.COMPILE_STATUS: { // optimisticaly return success; client will abort on an actual error. we assume an error-free async workflow - commandBuffer.push(43, 2, shader.id, pname); + commandBuffer.push(43, shader.id, pname); return true; } default: throw 'unsupported getShaderParameter ' + pname; } }; this.clearDepth = function(depth) { - commandBuffer.push(44, 1, depth); + commandBuffer.push(44, depth); }; this.depthFunc = function(depth) { - commandBuffer.push(45, 1, depth); + commandBuffer.push(45, depth); }; this.frontFace = function(depth) { - commandBuffer.push(46, 1, depth); + commandBuffer.push(46, depth); }; this.cullFace = function(depth) { - commandBuffer.push(47, 1, depth); + commandBuffer.push(47, depth); }; this.readPixels = function(depth) { abort('readPixels is impossible, we are async GL'); }; this.pixelStorei = function(pname, param) { - commandBuffer.push(48, 2, pname, param); + commandBuffer.push(48, pname, param); }; this.depthMask = function(flag) { - commandBuffer.push(49, 1, flag); + commandBuffer.push(49, flag); }; this.depthRange = function(near, far) { - commandBuffer.push(50, 2, near, far); + commandBuffer.push(50, near, far); }; this.blendFunc = function(sfactor, dfactor) { - commandBuffer.push(51, 2, sfactor, dfactor); + commandBuffer.push(51, sfactor, dfactor); }; this.scissor = function(x, y, width, height) { - commandBuffer.push(52, 4, x, y, width, height); + commandBuffer.push(52, x, y, width, height); }; this.colorMask = function(red, green, blue, alpha) { - commandBuffer.push(53, 4, red, green, blue, alpha); + commandBuffer.push(53, red, green, blue, alpha); }; this.lineWidth = function(width) { - commandBuffer.push(54, 1, width); + commandBuffer.push(54, width); }; this.createFramebuffer = function() { var id = nextId++; - commandBuffer.push(55, -1, id); + commandBuffer.push(55, id); return new WebGLFramebuffer(id); }; this.deleteFramebuffer = function(framebuffer) { if (!framebuffer) return; - commandBuffer.push(56, 1, framebuffer.id); + commandBuffer.push(56, framebuffer.id); }; this.bindFramebuffer = function(target, framebuffer) { - commandBuffer.push(57, 2, target, framebuffer ? framebuffer.id : 0); + commandBuffer.push(57, target, framebuffer ? framebuffer.id : 0); }; this.framebufferTexture2D = function(target, attachment, textarget, texture, level) { - commandBuffer.push(58, 5, target, attachment, textarget, texture ? texture.id : 0, level); + commandBuffer.push(58, target, attachment, textarget, texture ? texture.id : 0, level); }; this.checkFramebufferStatus = function(target) { return this.FRAMEBUFFER_COMPLETE; // XXX totally wrong }; this.createRenderbuffer = function() { var id = nextId++; - commandBuffer.push(59, -1, id); + commandBuffer.push(59, id); return new WebGLRenderbuffer(id); }; this.deleteRenderbuffer = function(renderbuffer) { if (!renderbuffer) return; - commandBuffer.push(60, 1, renderbuffer.id); + commandBuffer.push(60, renderbuffer.id); }; this.bindRenderbuffer = function(target, renderbuffer) { - commandBuffer.push(61, 2, target, renderbuffer ? renderbuffer.id : 0); + commandBuffer.push(61, target, renderbuffer ? renderbuffer.id : 0); }; this.renderbufferStorage = function(target, internalformat, width, height) { - commandBuffer.push(62, 4, target, internalformat, width, height); + commandBuffer.push(62, target, internalformat, width, height); }; this.framebufferRenderbuffer = function(target, attachment, renderbuffertarget, renderbuffer) { - commandBuffer.push(63, 4, target, attachment, renderbuffertarget, renderbuffer ? renderbuffer.id : 0); + commandBuffer.push(63, target, attachment, renderbuffertarget, renderbuffer ? renderbuffer.id : 0); }; //this.debugPrint = function(text) { // useful to interleave debug output properly with client GL commands - // commandBuffer.push(64, 1, text); + // commandBuffer.push(64, text); //}; // Setup |