From 3d1893b811fa77ea718cbfa0a0b5bc63ff9f1a90 Mon Sep 17 00:00:00 2001 From: Liam Doherty Date: Sat, 28 May 2016 13:25:10 +0800 Subject: [PATCH 1/3] add toString method to shader, for convenience of debugging --- index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/index.js b/index.js index 95b6969..6308b72 100644 --- a/index.js +++ b/index.js @@ -56,6 +56,21 @@ function compareAttributes(a, b) { return 1 } +proto.toString = function(){ + var result = {} + if(!this.uniforms){ + result.neverBound = true; + }else{ + result.types = this.types + result.uniforms = {} + var local = this; + Object.keys(this.types.uniforms).forEach(function(uniformName){ + result.uniforms[uniformName] = local.uniforms[uniformName] + }) + } + return JSON.stringify(result) +} + //Update export hook for glslify-live proto.update = function( vertSource From 3760040a11c810c9652c58a77b0796439c8bcf41 Mon Sep 17 00:00:00 2001 From: Liam Doherty Date: Tue, 28 Jun 2016 21:15:11 +0800 Subject: [PATCH 2/3] moved to scoped packages --- README.md | 4 ++-- package.json | 11 ++++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a873654..aa52e95 100644 --- a/README.md +++ b/README.md @@ -63,12 +63,12 @@ Here is the result: # Install - npm install gl-shader + npm install @lfdoherty/gl-shader # API ```javascript -var createShader = require('gl-shader') +var createShader = require('@lfdoherty/gl-shader') ``` diff --git a/package.json b/package.json index e2dbe33..fc41f5f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "gl-shader", + "name": "@lfdoherty/gl-shader", "version": "4.2.0", "description": "WebGL shader wrapper", "main": "index.js", @@ -15,11 +15,11 @@ }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "beefy --open example/example.js" + "start": "beefy example/example.js" }, "repository": { "type": "git", - "url": "git://github.com/stackgl/gl-shader.git" + "url": "git://github.com/lfdoherty/gl-shader.git" }, "keywords": [ "webgl", @@ -35,8 +35,5 @@ "author": "Mikola Lysenko", "license": "MIT", "readmeFilename": "README.md", - "gitHead": "e28ce1d36277aeb6d109d886e847c7cdc1903cd9", - "bugs": { - "url": "https://github.com/stackgl/gl-shader/issues" - } + "gitHead": "e28ce1d36277aeb6d109d886e847c7cdc1903cd9" } From 4ea1bf6068c76512e7d5e865fa5dab184754cbe0 Mon Sep 17 00:00:00 2001 From: Liam Date: Fri, 11 Nov 2016 10:36:38 +0800 Subject: [PATCH 3/3] commit --- lib/create-uniforms.js | 30 ++++++++++++++++++++---------- lib/runtime-reflect.js | 11 ++++++----- lib/shader-cache.js | 5 +++-- package.json | 7 +++---- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/lib/create-uniforms.js b/lib/create-uniforms.js index 1d0870b..baf2efe 100644 --- a/lib/create-uniforms.js +++ b/lib/create-uniforms.js @@ -31,7 +31,7 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { return proc(gl, wrapper, locations) } - function makePropSetter(path, index, type) { + function makePropSetter(path, index, type, size, name) { switch(type) { case 'bool': case 'int': @@ -47,12 +47,18 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { if(d < 2 || d > 4) { throw new GLError('', 'Invalid data type') } + let checkStr = '' + if(size && size > d){ + checkStr = 'if(!(obj instanceof Float32Array)){throw new Error("must use Float32Array to set uniform array '+name+'")};\n'; + const valueSize = size * d; + checkStr += 'if(obj.length !== '+valueSize+'){throw new Error("for uniform '+name+' size is " + obj.length + " but should be ' + valueSize + '")};\n' + } switch(type.charAt(0)) { case 'b': case 'i': - return 'gl.uniform' + d + 'iv(locations[' + index + '],obj' + path + ')' + return checkStr + 'gl.uniform' + d + 'iv(locations[' + index + '],obj' + path + ')' case 'v': - return 'gl.uniform' + d + 'fv(locations[' + index + '],obj' + path + ')' + return checkStr + 'gl.uniform' + d + 'fv(locations[' + index + '],obj' + path + ')' default: throw new GLError('', 'Unrecognized data type for vector ' + name + ': ' + type) } @@ -99,7 +105,7 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { var path = item[0] var idx = item[1] if(locations[idx]) { - code.push(makePropSetter(path, idx, uniforms[idx].type)) + code.push(makePropSetter(path, idx, uniforms[idx].type, uniforms[idx].size, uniforms[idx].name)) } } code.push('return obj}') @@ -143,9 +149,9 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { function storeProperty(obj, prop, type) { if(typeof type === 'object') { - var child = processObject(type) + // var child = processObject(type) Object.defineProperty(obj, prop, { - get: identity(child), + //get: identity(child), set: makeSetter(type), enumerable: true, configurable: false @@ -153,7 +159,7 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { } else { if(locations[type]) { Object.defineProperty(obj, prop, { - get: makeGetter(type), + // get: makeGetter(type), set: makeSetter(type), enumerable: true, configurable: false @@ -167,13 +173,17 @@ function createUniformWrapper(gl, wrapper, uniforms, locations) { function processObject(obj) { var result if(Array.isArray(obj)) { - result = new Array(obj.length) + throw new Error('should not happen') + /*result = new Array(obj.length) for(var i=0; i 1) { + /*if(info.size > 1) { for(var j=0; j