在着色器中解释纹理数据

Posted

技术标签:

【中文标题】在着色器中解释纹理数据【英文标题】:Interpreting texture data in shader 【发布时间】:2015-08-05 04:39:48 【问题描述】:

当我们有无符号浮点内部格式和 GL_UNSIGNED_BYTE 时,它会将数据钳制为 0-1 吗?如果图像格式是 GL_FLOAT 怎么办?由于浮点数未标准化,是否存在将值限制为 0-1 的情况?

在着色器中,浮点采样器会钳制数据 0-1 还是只返回浮点数据?如果不归一化,如何确定颜色的强度?

【问题讨论】:

【参考方案1】:

数据如何标准化(或不标准化)取决于纹理的内部格式。

没有任何附加字母的格式被标准化(GL_RGB、GL_RGBA、...) 末尾带有附加 F 的格式不是标准化浮点(GL_RGB16F、GL_RGBA32F、...) 以 I (GL_RGB16I, ...) 结尾的格式是有符号整数格式,需要在着色器中使用 isampler 以 UI 结尾的格式(GL_RGB16UI,...)是无符号整数格式,需要在着色器中使用 usampler

【讨论】:

以上是关于在着色器中解释纹理数据的主要内容,如果未能解决你的问题,请参考以下文章

片段着色器中未使用纹理数据 - OpenGL

LWJGL 无法在着色器中采样帧缓冲纹理

在片段着色器中丢失纹理定义

从片段着色器中的地形高程数据计算法线

为啥我的着色器中的 GLSL 纹理坐标不是线性的?

GL_POINTS 着色器中的示例纹理