我想使用 glsl 将屏幕淡化为特定颜色到目前为止,这是我的 glsl 代码,它运行良好:
uniform sampler2D textureSampler;
uniform vec2 texcoordOffset;
uniform vec3 sp;
uniform vec3 goal;
varying vec4 vertColor;
varying vec4 vertTexcoord;
void main(void) {
vec3 col=texture2D(textureSampler, vertTexcoord.st).rgb;
gl_FragColor = vec4(col+((goal-col)/sp), 1.0);
//gl_FragColor = vec4(col+((goal-col)*sp), 1.0); //as suggested below also this doesn't solve the problem
}
我唯一的问题是,使用更高的 sp 值,颜色不会完全褪色为新颜色。我认为问题是由着色器工作的准确性引起的。有人知道如何提高准确性吗?
编辑: 可能是这种效果取决于驱动程序吗?我正在使用带有最新驱动程序的 ATI,也许有人可以在 NVIDIA 卡上尝试代码?