我将我的 alpha 通道用作与混合无关的 8 位整数索引,因此我想仔细控制位值。特别是,我需要一个 FBO 渲染纹理中具有特定 alpha 值的所有像素,以匹配着色器中具有相同 alpha 值的所有像素。经验告诉我在比较浮点值是否相等时要小心...
虽然使用浮点 vec4 设置颜色值可能不会给我带来问题,但我的理解是,即使是半精度 16 位浮点数也能够区分所有 8 位整数 (0-255) 值。但我更愿意在片段着色器中执行整数运算,所以我可以确定这些值。
在片段着色器中执行整数操作是否可能会导致性能下降?
输出如何缩放?我在某处读到,将整数向量作为片段的颜色输出发送是有效的。但它是如何缩放的?如果我发送一个整数 0-255 的 uvec4,它会适当地缩放吗?我希望它直接将整数值写入像素格式,对于整数格式,我不希望它进行任何缩放。也许对于 RGBA8 发送大于 255 的 int 值会将其钳制为 255,并将负整数钳制为零,依此类推。
这个问题很困难,因为除非我抓取渲染的图像并仔细检查它们,否则我无法通过打印出颜色值来进行调试。如果有些东西不匹配,也许我可以画出鲜艳的颜色。
这是我在此主题上找到的相关主题。它比以前更让我困惑。