通过color.rgb索引到3d查找表给出了黑屏

时间:2015-05-06 06:37:13

标签: opengl glsl shader fragment-shader lookup-tables

[已解决] 不确定如何,但目前无法重现此问题。

尝试使用3d查找表重新映射rgb值。

顶点着色器:(如果相关)

void main()
{
    gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
    gl_Position = ftransform();
    gl_FrontColor = gl_Color;
}

片段着色器

uniform sampler2D tex;
uniform sampler3D lut;

void main()
{
    vec3 color = texture2D(tex, gl_TexCoord[0].st).rgb;

    gl_FragColor = vec4(texture3D(lut, vec3(.5, .5, .5)).xyz, .5);
    // gl_FragColor = vec4(texture3D(lut, vec3(color.r, .5, .5)).xyz, .5);
}

lut是一个32x32x32纹理,充满红色像素(用于测试) tex是1280x720纹理 两者都使用rgb作为内部像素格式。

使用立即值索引到LUT(未注释的行)时:
我看到一个50%alpha的红色屏幕的正确结果

索引与color.rgb (注释行)相关时:
我看到整个屏幕黑色

我也试过vec3(color.r / 1000.0, .5, .5)
只是为了确保x索引低于1 那没有用。

那么如何使用我当前的tex2d rgb值正确访问lut3d?

0 个答案:

没有答案