Skip to content

Too big buffers are ignored #2

Open
@dy

Description

@dy

Hi! Faced some issue of packing values over 300.
A shader just fills it’s x coordinate gl_FragColor = packFloat(gl_FragCoord.x):

var triangle     = require('a-big-triangle')
var glslify      = require('glslify')
var toFloat  = require("glsl-read-float")
var Shader = require('gl-shader')

var canvas     = document.body.appendChild(document.createElement('canvas'))
var gl         = canvas.getContext('webgl')

canvas.height = 1024;
canvas.width = 1024;
var w = gl.drawingBufferWidth;
var h = gl.drawingBufferHeight;

var shader = Shader(gl, "\
    attribute vec2 position;\
    void main() {\
      gl_Position = vec4(position, 0, 1);\
    }",
    glslify("\
    #pragma glslify: packFloat = require(glsl-read-float)\n\
    void main() {\
      gl_FragColor = packFloat(floor(gl_FragCoord.x));\
    }", {inline: true})
);

//Draw shader
shader.bind()
triangle(gl)

//Read back the float
var buffer = new Uint8Array(4*w*h)
gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
var unpacked = new Float32Array(w*h);
for (var i = 0, j = 0; j < w; j++, i+=4) {
  unpacked[j] = readFloat(buffer[i+0],buffer[i+1],buffer[i+2],buffer[i+3]);
}
 console.log(unpacked)

All the values of unpacked array with index > 300 are 0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions