1

当亮度值介于 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));

texcolor.rgb 将始终介于 0 和 1.0 之间。如何访问我的片段着色器中的非钳位值,以便我可以自己进行规范化?

谢谢

4

1 回答 1

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);
于 2012-02-10T19:00:09.310 回答