我尝试使用从灰度,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是一个整数均匀的传入,可以打开和关闭采样的颜色。
答案 0 :(得分:0)
我已经解决了这个问题,如果有人遇到这个问题,这种行为是由纹理参数设置为GL_REPEAT引起的。如果您希望黑色没有任何光线,请将该参数设置为GL_CLAMP_TO_EDGE