webgltexture-loader-ndarray
Advanced tools
@@ -46,3 +46,3 @@ "use strict"; | ||
| exports.default = function (gl, texture, array) { | ||
| exports.default = function (gl, texture, array, floatSupported) { | ||
| var dtype = array.dtype; | ||
@@ -89,3 +89,3 @@ var shape = array.shape.slice(); | ||
| } | ||
| if (type === gl.FLOAT && !gl.getExtension("OES_texture_float")) { | ||
| if (type === gl.FLOAT && !floatSupported) { | ||
| type = gl.UNSIGNED_BYTE; | ||
@@ -92,0 +92,0 @@ packed = false; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/drawNDArrayTexture.js"],"names":["Buffer","global","isBuffer","b","isPacked","shape","stride","length","convertFloatToUint8","out","inp","muls","gl","texture","array","dtype","slice","maxSize","getParameter","MAX_TEXTURE_SIZE","Error","packed","type","FLOAT","UNSIGNED_BYTE","format","LUMINANCE","data","offset","ALPHA","LUMINANCE_ALPHA","RGB","RGBA","getExtension","buffer","buf_store","size","malloc","buf_array","assign","subarray","texImage2D","TEXTURE_2D","free"],"mappings":"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","file":"drawNDArrayTexture.js","sourcesContent":["//@flow\nimport type { NDArray } from \"ndarray\";\nimport ndarray from \"ndarray\";\nimport ops from \"ndarray-ops\";\nimport pool from \"typedarray-pool\";\n\nif (typeof Buffer === \"undefined\") {\n global.Buffer = class Buffer {\n // mock shim so pool don't crash..\n static isBuffer = b => b instanceof Buffer;\n };\n}\n\n// code is partly taken from https://github.com/stackgl/gl-texture2d/blob/master/texture.js\n\nfunction isPacked(shape, stride) {\n if (shape.length === 3) {\n return (\n stride[2] === 1 &&\n stride[1] === shape[0] * shape[2] &&\n stride[0] === shape[2]\n );\n }\n return stride[0] === 1 && stride[1] === shape[0];\n}\n\nfunction convertFloatToUint8(out, inp) {\n ops.muls(out, inp, 255.0);\n}\n\nexport default (\n gl: WebGLRenderingContext,\n texture: WebGLTexture,\n array: NDArray\n) => {\n let dtype = array.dtype;\n let shape = array.shape.slice();\n let maxSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n if (\n shape[0] < 0 ||\n shape[0] > maxSize ||\n shape[1] < 0 ||\n shape[1] > maxSize\n ) {\n throw new Error(\"gl-react: Invalid texture size\");\n }\n let packed = isPacked(shape, array.stride.slice());\n let type = 0;\n if (dtype === \"float32\") {\n type = gl.FLOAT;\n } else if (dtype === \"float64\") {\n type = gl.FLOAT;\n packed = false;\n dtype = \"float32\";\n } else if (dtype === \"uint8\") {\n type = gl.UNSIGNED_BYTE;\n } else {\n type = gl.UNSIGNED_BYTE;\n packed = false;\n dtype = \"uint8\";\n }\n let format = 0;\n if (shape.length === 2) {\n format = gl.LUMINANCE;\n shape = [shape[0], shape[1], 1];\n array = ndarray(\n array.data,\n shape,\n [array.stride[0], array.stride[1], 1],\n array.offset\n );\n } else if (shape.length === 3) {\n if (shape[2] === 1) {\n format = gl.ALPHA;\n } else if (shape[2] === 2) {\n format = gl.LUMINANCE_ALPHA;\n } else if (shape[2] === 3) {\n format = gl.RGB;\n } else if (shape[2] === 4) {\n format = gl.RGBA;\n } else {\n throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");\n }\n } else {\n throw new Error(\"gl-texture2d: Invalid shape for texture\");\n }\n if (type === gl.FLOAT && !gl.getExtension(\"OES_texture_float\")) {\n type = gl.UNSIGNED_BYTE;\n packed = false;\n }\n let buffer, buf_store;\n let size = array.size;\n if (!packed) {\n let stride = [shape[2], shape[2] * shape[0], 1];\n buf_store = pool.malloc(size, dtype);\n let buf_array = ndarray(buf_store, shape, stride, 0);\n if (\n (dtype === \"float32\" || dtype === \"float64\") &&\n type === gl.UNSIGNED_BYTE\n ) {\n convertFloatToUint8(buf_array, array);\n } else {\n ops.assign(buf_array, array);\n }\n buffer = buf_store.subarray(0, size);\n } else if (array.offset === 0 && array.data.length === size) {\n buffer = array.data;\n } else {\n buffer = array.data.subarray(array.offset, array.offset + size);\n }\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n format,\n shape[0],\n shape[1],\n 0,\n format,\n type,\n buffer\n );\n if (buf_store) {\n pool.free(buf_store);\n }\n};\n"]} | ||
| {"version":3,"sources":["../src/drawNDArrayTexture.js"],"names":["Buffer","global","isBuffer","b","isPacked","shape","stride","length","convertFloatToUint8","out","inp","muls","gl","texture","array","floatSupported","dtype","slice","maxSize","getParameter","MAX_TEXTURE_SIZE","Error","packed","type","FLOAT","UNSIGNED_BYTE","format","LUMINANCE","data","offset","ALPHA","LUMINANCE_ALPHA","RGB","RGBA","buffer","buf_store","size","malloc","buf_array","assign","subarray","texImage2D","TEXTURE_2D","free"],"mappings":"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","file":"drawNDArrayTexture.js","sourcesContent":["//@flow\nimport type { NDArray } from \"ndarray\";\nimport ndarray from \"ndarray\";\nimport ops from \"ndarray-ops\";\nimport pool from \"typedarray-pool\";\n\nif (typeof Buffer === \"undefined\") {\n global.Buffer = class Buffer {\n // mock shim so pool don't crash..\n static isBuffer = b => b instanceof Buffer;\n };\n}\n\n// code is partly taken from https://github.com/stackgl/gl-texture2d/blob/master/texture.js\n\nfunction isPacked(shape, stride) {\n if (shape.length === 3) {\n return (\n stride[2] === 1 &&\n stride[1] === shape[0] * shape[2] &&\n stride[0] === shape[2]\n );\n }\n return stride[0] === 1 && stride[1] === shape[0];\n}\n\nfunction convertFloatToUint8(out, inp) {\n ops.muls(out, inp, 255.0);\n}\n\nexport default (\n gl: WebGLRenderingContext,\n texture: WebGLTexture,\n array: NDArray,\n floatSupported: boolean\n) => {\n let dtype = array.dtype;\n let shape = array.shape.slice();\n let maxSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n if (\n shape[0] < 0 ||\n shape[0] > maxSize ||\n shape[1] < 0 ||\n shape[1] > maxSize\n ) {\n throw new Error(\"gl-react: Invalid texture size\");\n }\n let packed = isPacked(shape, array.stride.slice());\n let type = 0;\n if (dtype === \"float32\") {\n type = gl.FLOAT;\n } else if (dtype === \"float64\") {\n type = gl.FLOAT;\n packed = false;\n dtype = \"float32\";\n } else if (dtype === \"uint8\") {\n type = gl.UNSIGNED_BYTE;\n } else {\n type = gl.UNSIGNED_BYTE;\n packed = false;\n dtype = \"uint8\";\n }\n let format = 0;\n if (shape.length === 2) {\n format = gl.LUMINANCE;\n shape = [shape[0], shape[1], 1];\n array = ndarray(\n array.data,\n shape,\n [array.stride[0], array.stride[1], 1],\n array.offset\n );\n } else if (shape.length === 3) {\n if (shape[2] === 1) {\n format = gl.ALPHA;\n } else if (shape[2] === 2) {\n format = gl.LUMINANCE_ALPHA;\n } else if (shape[2] === 3) {\n format = gl.RGB;\n } else if (shape[2] === 4) {\n format = gl.RGBA;\n } else {\n throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");\n }\n } else {\n throw new Error(\"gl-texture2d: Invalid shape for texture\");\n }\n if (type === gl.FLOAT && !floatSupported) {\n type = gl.UNSIGNED_BYTE;\n packed = false;\n }\n let buffer, buf_store;\n let size = array.size;\n if (!packed) {\n let stride = [shape[2], shape[2] * shape[0], 1];\n buf_store = pool.malloc(size, dtype);\n let buf_array = ndarray(buf_store, shape, stride, 0);\n if (\n (dtype === \"float32\" || dtype === \"float64\") &&\n type === gl.UNSIGNED_BYTE\n ) {\n convertFloatToUint8(buf_array, array);\n } else {\n ops.assign(buf_array, array);\n }\n buffer = buf_store.subarray(0, size);\n } else if (array.offset === 0 && array.data.length === size) {\n buffer = array.data;\n } else {\n buffer = array.data.subarray(array.offset, array.offset + size);\n }\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n format,\n shape[0],\n shape[1],\n 0,\n format,\n type,\n buffer\n );\n if (buf_store) {\n pool.free(buf_store);\n }\n};\n"]} |
@@ -28,6 +28,9 @@ "use strict"; | ||
| function NDArrayTextureLoader() { | ||
| function NDArrayTextureLoader(gl) { | ||
| _classCallCheck(this, NDArrayTextureLoader); | ||
| return _possibleConstructorReturn(this, (NDArrayTextureLoader.__proto__ || Object.getPrototypeOf(NDArrayTextureLoader)).apply(this, arguments)); | ||
| var _this = _possibleConstructorReturn(this, (NDArrayTextureLoader.__proto__ || Object.getPrototypeOf(NDArrayTextureLoader)).call(this, gl)); | ||
| _this.floatSupported = gl.getExtension("OES_texture_float") && gl.getExtension("OES_texture_float_linear"); | ||
| return _this; | ||
| } | ||
@@ -57,3 +60,3 @@ | ||
| (0, _drawNDArrayTexture2.default)(gl, texture, input); | ||
| (0, _drawNDArrayTexture2.default)(gl, texture, input, this.floatSupported); | ||
| return { texture: texture, width: width, height: height }; | ||
@@ -71,3 +74,3 @@ } | ||
| gl.bindTexture(gl.TEXTURE_2D, texture); | ||
| (0, _drawNDArrayTexture2.default)(gl, texture, input); | ||
| (0, _drawNDArrayTexture2.default)(gl, texture, input, this.floatSupported); | ||
| } | ||
@@ -74,0 +77,0 @@ }]); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/NDArrayTextureLoader.js"],"names":["NDArrayTextureLoader","obj","shape","data","stride","input","gl","texture","createTexture","bindTexture","TEXTURE_2D","width","height","get","add"],"mappings":";;;;;;;;;;AACA;;AAKA;;;;;;;;;;;;IAEMA,oB;;;;;;;;;;;4BACIC,G,EAAU;AAChB,aAAOA,IAAIC,KAAJ,IAAaD,IAAIE,IAAjB,IAAyBF,IAAIG,MAApC;AACD;;;8BAESC,K,EAAgB;AACxB,aAAOA,KAAP;AACD;;;+BAEUA,K,EAAgB;AAAA,UACjBC,EADiB,GACV,IADU,CACjBA,EADiB;;AAEzB,UAAMC,UAAUD,GAAGE,aAAH,EAAhB;AACAF,SAAGG,WAAH,CAAeH,GAAGI,UAAlB,EAA8BH,OAA9B;;AAHyB,wCAIDF,MAAMH,KAJL;AAAA,UAIlBS,KAJkB;AAAA,UAIXC,MAJW;;AAKzB,wCAAmBN,EAAnB,EAAuBC,OAAvB,EAAgCF,KAAhC;AACA,aAAO,EAAEE,gBAAF,EAAWI,YAAX,EAAkBC,cAAlB,EAAP;AACD;;;2BAEMP,K,EAAgB;AACrB;AADqB,UAEbC,EAFa,GAEN,IAFM,CAEbA,EAFa;;AAAA,iBAGD,KAAKO,GAAL,CAASR,KAAT,CAHC;AAAA,UAGbE,OAHa,QAGbA,OAHa;;AAIrBD,SAAGG,WAAH,CAAeH,GAAGI,UAAlB,EAA8BH,OAA9B;AACA,wCAAmBD,EAAnB,EAAuBC,OAAvB,EAAgCF,KAAhC;AACD;;;;;;AAGH,mCAAeS,GAAf,CAAmBd,oBAAnB;;kBAEeA,oB","file":"NDArrayTextureLoader.js","sourcesContent":["//@flow\nimport {\n WebGLTextureLoaderSyncHashCache,\n globalRegistry\n} from \"webgltexture-loader\";\nimport type { NDArray } from \"ndarray\";\nimport drawNDArrayTexture from \"./drawNDArrayTexture\";\n\nclass NDArrayTextureLoader extends WebGLTextureLoaderSyncHashCache<NDArray> {\n canLoad(obj: any) {\n return obj.shape && obj.data && obj.stride;\n }\n\n inputHash(input: NDArray) {\n return input;\n }\n\n getNoCache(input: NDArray) {\n const { gl } = this;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n const [width, height] = input.shape;\n drawNDArrayTexture(gl, texture, input);\n return { texture, width, height };\n }\n\n update(input: NDArray) {\n // For now we assume the NDArray always change & need a redraw but we might try to only update if changes later\n const { gl } = this;\n const { texture } = this.get(input);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n drawNDArrayTexture(gl, texture, input);\n }\n}\n\nglobalRegistry.add(NDArrayTextureLoader);\n\nexport default NDArrayTextureLoader;\n"]} | ||
| {"version":3,"sources":["../src/NDArrayTextureLoader.js"],"names":["NDArrayTextureLoader","gl","floatSupported","getExtension","obj","shape","data","stride","input","texture","createTexture","bindTexture","TEXTURE_2D","width","height","get","add"],"mappings":";;;;;;;;;;AACA;;AAKA;;;;;;;;;;;;IAEMA,oB;;;AAEJ,gCAAYC,EAAZ,EAAmB;AAAA;;AAAA,4IACXA,EADW;;AAEjB,UAAKC,cAAL,GACED,GAAGE,YAAH,CAAgB,mBAAhB,KACAF,GAAGE,YAAH,CAAgB,0BAAhB,CAFF;AAFiB;AAKlB;;;;4BAEOC,G,EAAU;AAChB,aAAOA,IAAIC,KAAJ,IAAaD,IAAIE,IAAjB,IAAyBF,IAAIG,MAApC;AACD;;;8BAESC,K,EAAgB;AACxB,aAAOA,KAAP;AACD;;;+BAEUA,K,EAAgB;AAAA,UACjBP,EADiB,GACV,IADU,CACjBA,EADiB;;AAEzB,UAAMQ,UAAUR,GAAGS,aAAH,EAAhB;AACAT,SAAGU,WAAH,CAAeV,GAAGW,UAAlB,EAA8BH,OAA9B;;AAHyB,wCAIDD,MAAMH,KAJL;AAAA,UAIlBQ,KAJkB;AAAA,UAIXC,MAJW;;AAKzB,wCAAmBb,EAAnB,EAAuBQ,OAAvB,EAAgCD,KAAhC,EAAuC,KAAKN,cAA5C;AACA,aAAO,EAAEO,gBAAF,EAAWI,YAAX,EAAkBC,cAAlB,EAAP;AACD;;;2BAEMN,K,EAAgB;AACrB;AADqB,UAEbP,EAFa,GAEN,IAFM,CAEbA,EAFa;;AAAA,iBAGD,KAAKc,GAAL,CAASP,KAAT,CAHC;AAAA,UAGbC,OAHa,QAGbA,OAHa;;AAIrBR,SAAGU,WAAH,CAAeV,GAAGW,UAAlB,EAA8BH,OAA9B;AACA,wCAAmBR,EAAnB,EAAuBQ,OAAvB,EAAgCD,KAAhC,EAAuC,KAAKN,cAA5C;AACD;;;;;;AAGH,mCAAec,GAAf,CAAmBhB,oBAAnB;;kBAEeA,oB","file":"NDArrayTextureLoader.js","sourcesContent":["//@flow\nimport {\n WebGLTextureLoaderSyncHashCache,\n globalRegistry\n} from \"webgltexture-loader\";\nimport type { NDArray } from \"ndarray\";\nimport drawNDArrayTexture from \"./drawNDArrayTexture\";\n\nclass NDArrayTextureLoader extends WebGLTextureLoaderSyncHashCache<NDArray> {\n floatSupported: boolean;\n constructor(gl: *) {\n super(gl);\n this.floatSupported =\n gl.getExtension(\"OES_texture_float\") &&\n gl.getExtension(\"OES_texture_float_linear\");\n }\n\n canLoad(obj: any) {\n return obj.shape && obj.data && obj.stride;\n }\n\n inputHash(input: NDArray) {\n return input;\n }\n\n getNoCache(input: NDArray) {\n const { gl } = this;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n const [width, height] = input.shape;\n drawNDArrayTexture(gl, texture, input, this.floatSupported);\n return { texture, width, height };\n }\n\n update(input: NDArray) {\n // For now we assume the NDArray always change & need a redraw but we might try to only update if changes later\n const { gl } = this;\n const { texture } = this.get(input);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n drawNDArrayTexture(gl, texture, input, this.floatSupported);\n }\n}\n\nglobalRegistry.add(NDArrayTextureLoader);\n\nexport default NDArrayTextureLoader;\n"]} |
+2
-2
| { | ||
| "name": "webgltexture-loader-ndarray", | ||
| "version": "0.6.0", | ||
| "version": "0.9.0-beta.090a4900", | ||
| "description": "ndarray loader for webgltexture-loader", | ||
@@ -17,4 +17,4 @@ "main": "lib/NDArrayTextureLoader.js", | ||
| "typedarray-pool": "^1.1.0", | ||
| "webgltexture-loader": "^0.6.0" | ||
| "webgltexture-loader": "^0.9.0-beta.090a4900" | ||
| } | ||
| } |
@@ -34,3 +34,4 @@ //@flow | ||
| texture: WebGLTexture, | ||
| array: NDArray | ||
| array: NDArray, | ||
| floatSupported: boolean | ||
| ) => { | ||
@@ -88,3 +89,3 @@ let dtype = array.dtype; | ||
| } | ||
| if (type === gl.FLOAT && !gl.getExtension("OES_texture_float")) { | ||
| if (type === gl.FLOAT && !floatSupported) { | ||
| type = gl.UNSIGNED_BYTE; | ||
@@ -91,0 +92,0 @@ packed = false; |
@@ -10,2 +10,10 @@ //@flow | ||
| class NDArrayTextureLoader extends WebGLTextureLoaderSyncHashCache<NDArray> { | ||
| floatSupported: boolean; | ||
| constructor(gl: *) { | ||
| super(gl); | ||
| this.floatSupported = | ||
| gl.getExtension("OES_texture_float") && | ||
| gl.getExtension("OES_texture_float_linear"); | ||
| } | ||
| canLoad(obj: any) { | ||
@@ -24,3 +32,3 @@ return obj.shape && obj.data && obj.stride; | ||
| const [width, height] = input.shape; | ||
| drawNDArrayTexture(gl, texture, input); | ||
| drawNDArrayTexture(gl, texture, input, this.floatSupported); | ||
| return { texture, width, height }; | ||
@@ -34,3 +42,3 @@ } | ||
| gl.bindTexture(gl.TEXTURE_2D, texture); | ||
| drawNDArrayTexture(gl, texture, input); | ||
| drawNDArrayTexture(gl, texture, input, this.floatSupported); | ||
| } | ||
@@ -37,0 +45,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
31921
3.63%321
3.22%+ Added
- Removed