着色器没有在没有光线的情况下绘制黑色?

时间:2017-02-10 02:41:51

标签: opengl glsl shader

我尝试使用从灰度,1D纹理采样的值作为乘法项来实现镜面反射。

我实现了一个切换,所以我可以看到两者之间的差异,但由于某种原因,当启用采样颜色时,没有光的场景区域显示为浅灰色,没有采样那些相同的区域显示为黑色。

这是为什么?这是我设置片段颜色的区域。

if(u_specularRamp == 1)
{
    specularAmount = clamp(specularAmount, 0.0, 1.0);
    vec2 texCoords = vec2(specularAmount, 0.5);
    vec4 sampledColor = texture(u_ramp_tex, texCoords);
    specularReflection = vec3(0.3 * sampledColor.x);
}
else
{
    specularReflection = vec3(0.3 * specularAmount);
}

FragColor = vec4(specularReflection, 1.0);

u_specularRamp是一个整数均匀的传入,可以打开和关闭采样的颜色。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,如果有人遇到这个问题,这种行为是由纹理参数设置为GL_REPEAT引起的。如果您希望黑色没有任何光线,请将该参数设置为GL_CLAMP_TO_EDGE