我试图在画布上渲染亮度值矩阵作为图像,当亮度值在0到4000之间时。我使用2D浮点纹理这样做,因为我听说过他们报价介于[-inf,inf]之间。
gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, ct.columns, ct.rows, 0, gl.LUMINANCE, gl.FLOAT, new Float32Array(ct.grid[i]));
但是,当我在片段着色器中检索纹理值时,它们总是被夹在[0,1.0]之间。具体地,
vec4 texcolour = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
texcolour.rgb将始终介于0和1.0之间。如何在片段着色器中访问未展开的值,以便我自己进行规范化?
谢谢
答案 0 :(得分:1)
你是如何测试的?你可以尝试像
这样的东西vec4 texcolour = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
gl_FragColor = texcolour.x > 3000.0 ? vec4(0,1,0,1) : vec4(1,0,0,1);