WebGL 中如何限制颜色(使用 OES_texture_float)?

How are colors clamped in WebGL (using OES_texture_float)?

在渲染到帧缓冲区时使用 FLOAT 作为颜色格式时,WebGL 如何限制颜色?我可以使用低于 0.0 和高于 1.0 的颜色通道吗?如何控制颜色的夹持方式?

在 OpenGL 中,以浮点格式存储在帧缓冲区中的值不会被限制,您可以存储任何值(但精度受格式限制)。

发件人:https://www.khronos.org/registry/webgl/extensions/WEBGL_color_buffer_float/
"NOTE: fragment shaders outputs gl_FragColor and gl_FragData[0] will only be clamped and converted when the color buffer is fixed-point"

如果您使用采样器读取这些值,那么您应该获取存储在缓冲区中的值。

注意:您可以通过存储超出此范围的值然后在着色器中使用此数据来验证这一点,这样它在输出中就会很明显(尝试使用覆盖较大范围的不同值填充浮点纹理(例如0-1000) 然后尝试通过除以 1000 将此纹理渲染到屏幕上,如果您的数据未被限制,您应该看到预期值,如果它被限制,您将丢失数据。