mirror of
https://github.com/mikolalysenko/glsl-read-float.git
synced 2025-12-08 21:26:01 +00:00
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
"use strict"
|
|
|
|
var triangle = require('a-big-triangle')
|
|
var fit = require('canvas-fit')
|
|
var getContext = require('gl-context')
|
|
var glslify = require('glslify')
|
|
var unpackFloat = require("../index.js")
|
|
|
|
var canvas = document.body.appendChild(document.createElement('canvas'))
|
|
var gl = getContext(canvas, render)
|
|
|
|
window.addEventListener('resize', fit(canvas), false)
|
|
|
|
var shader = glslify({
|
|
vert: "\
|
|
attribute vec2 position;\
|
|
void main() {\
|
|
gl_Position = vec4(position, 0, 1);\
|
|
}",
|
|
frag: "\
|
|
#pragma glslify: packFloat = require(../index.glsl)\n\
|
|
uniform highp float f;\
|
|
void main() {\
|
|
gl_FragColor = packFloat(f);\
|
|
}",
|
|
inline: true
|
|
})(gl)
|
|
|
|
function render() {
|
|
var num = Math.random()
|
|
|
|
//Draw shader
|
|
shader.bind()
|
|
shader.uniforms.f = num
|
|
triangle(gl)
|
|
|
|
//Read back the float
|
|
var buffer = new Uint8Array(4)
|
|
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
|
|
var unpacked = unpackFloat(buffer[0], buffer[1], buffer[2], buffer[3])
|
|
|
|
//Log output to console
|
|
console.log("expected:", num, "got:", unpacked)
|
|
} |