{"_id":"glsl-read-float","_rev":"6-d8312232e1b24b5d688f3c1c52f0d794","name":"glsl-read-float","description":"Read floating point values back from WebGL","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"glsl-read-float","version":"1.0.0","description":"Read floating point values back from WebGL","main":"index.js","directories":{"example":"example"},"scripts":{"test":"beefy --open example/example.js -- --transform glslify"},"repository":{"type":"git","url":"git://github.com/mikolalysenko/glsl-read-float.git"},"keywords":["glsl","read","float","gpu","gl","webgl","gpgpu","glslify"],"authors":["ultraist","Mikola Lysenko"],"license":"MIT","bugs":{"url":"https://github.com/mikolalysenko/glsl-read-float/issues"},"homepage":"https://github.com/mikolalysenko/glsl-read-float","devDependencies":{"canvas-fit":"0.0.0","gl-context":"^0.1.0","a-big-triangle":"0.0.0","glslify":"^1.5.0"},"_id":"glsl-read-float@1.0.0","dist":{"shasum":"55260250bf647df53788a7050a126620b5dee88b","tarball":"https://registry.npmjs.org/glsl-read-float/-/glsl-read-float-1.0.0.tgz","integrity":"sha512-GOyGt4528vZmISb77X/I3BOZNq6wRoAk3s3OLGa2NFi9jAiX+6ZB3CpeNjVz98mi2Hm6aoIT7Ik+wwUEUtRUYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGEdUj6I/b+4eJHQyQCvfgScG2wpm0h34l9KBbV9v58AiEAtx7GOEyEcGYmAJ3efDYFeSoTZ5JVZPOuy+XjnzAQEg4="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"mikolalysenko","email":"mikolalysenko@gmail.com"},"maintainers":[{"name":"mikolalysenko","email":"mikolalysenko@gmail.com"}]},"1.1.0":{"name":"glsl-read-float","version":"1.1.0","description":"Read floating point values back from WebGL","main":"index.js","directories":{"example":"example"},"scripts":{"test":"beefy --open example/example.js -- --transform glslify"},"repository":{"type":"git","url":"git://github.com/mikolalysenko/glsl-read-float.git"},"keywords":["glsl","read","float","gpu","gl","webgl","gpgpu","glslify"],"authors":["ultraist","Mikola Lysenko"],"license":"MIT","bugs":{"url":"https://github.com/mikolalysenko/glsl-read-float/issues"},"homepage":"https://github.com/mikolalysenko/glsl-read-float","devDependencies":{"canvas-fit":"0.0.0","gl-context":"^0.1.0","a-big-triangle":"0.0.0","glslify":"^1.5.0"},"_id":"glsl-read-float@1.1.0","dist":{"shasum":"dfb088b0162dcfcc56fc4eddd2f86e18cac32f26","tarball":"https://registry.npmjs.org/glsl-read-float/-/glsl-read-float-1.1.0.tgz","integrity":"sha512-cE0rmtZjheE49V8BMlPU6Y9c7RT7vsrUGXTXhWnN8CTu3xP8+l/IlQMi3+3GJU839g34vrwbIHfhLupQsR1n8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6J77rD+W+eIjsAlF1c0oMvx+DCXpcXQikmQEEpuE28QIhAMiMcAoab7p3ozLilH/uAEwBrS+vpU8uvjGiYWeDF9Uc"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"mikolalysenko","email":"mikolalysenko@gmail.com"},"maintainers":[{"name":"mikolalysenko","email":"mikolalysenko@gmail.com"}]}},"readme":"glsl-read-float\n===============\nWorkaround for reading floating point values back from the GPU using GLSL.\n\n## Example\n\n```javascript\nvar triangle     = require('a-big-triangle')\nvar fit          = require('canvas-fit')\nvar getContext   = require('gl-context')\nvar glslify      = require('glslify')\nvar unpackFloat  = require(\"glsl-read-float\")\n\nvar canvas     = document.body.appendChild(document.createElement('canvas'))\nvar gl         = getContext(canvas, render)\n\nwindow.addEventListener('resize', fit(canvas), false)\n\nvar shader = glslify({\n  vert: \"\\\nattribute vec2 position;\\\nvoid main() {\\\n  gl_Position = vec4(position, 0, 1);\\\n}\",\n  frag: \"\\\n#pragma glslify: packFloat = require(glsl-read-float)\\n\\\nuniform highp float f;\\\nvoid main() {\\\n  gl_FragColor = packFloat(f);\\\n}\",\n  inline: true\n})(gl)\n\nfunction render() {\n  var num = Math.random()\n\n  //Draw shader\n  shader.bind()\n  shader.uniforms.f = num\n  triangle(gl)\n\n  //Read back the float\n  var buffer = new Uint8Array(4)\n  gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buffer)\n  var unpacked = unpackFloat(buffer[0], buffer[1], buffer[2], buffer[3])\n\n  //Log output to console\n  console.log(\"expected:\", num, \"got:\", unpacked)\n}\n```\n\n## Install\n\n```\nnpm install glsl-read-float\n```\n\n## API\n\n### GLSL\n\n```glsl\n#pragma glslify: packFloat = require(glsl-read-float)\n```\n\n#### `vec4 packed = packFloat(float f)`\nPacks a floating point number into an 8bit RGBA color vector, which can be written to the display using `gl_FragColor`, for example.\n\n* `f` is a `float` number\n\n**Returns** A packed `vec4` encoding the value of `f`\n\n### JavaScript\n\n```javascript\nvar unpackFloat = require(\"glsl-read-float\")\n```\n\n#### `var f = unpackFloat(x, y, z, w)`\nUnpacks a packed `vec4` into a single floating point value.\n\n* `x` is the first component of the packed float\n* `y` is the second component of the packed float\n* `z` is the third component of the packed float\n* `w` is the fourth component of the packed float\n\n**Returns** A number which is the unpacked value of the floating point input.\n\n**Note** This module doesn't handle denormals or floats larger than `Math.pow(2, 127)`\n\n## Credits\n\nOriginally based on a routine by @ultraist. You can find his blog here: http://ultraist.hatenablog.com/\n\nNewer version rewritten by Mikola Lysenko.  MIT License (c) 2014","maintainers":[{"name":"mikolalysenko","email":"mikolalysenko@gmail.com"}],"time":{"modified":"2022-06-18T13:01:25.942Z","created":"2014-06-20T21:17:25.411Z","1.0.0":"2014-06-20T21:17:25.411Z","1.1.0":"2014-10-08T17:38:41.035Z"},"homepage":"https://github.com/mikolalysenko/glsl-read-float","keywords":["glsl","read","float","gpu","gl","webgl","gpgpu","glslify"],"repository":{"type":"git","url":"git://github.com/mikolalysenko/glsl-read-float.git"},"bugs":{"url":"https://github.com/mikolalysenko/glsl-read-float/issues"},"license":"MIT","readmeFilename":"README.md"}