我现在正在第二天为此而苦苦挣扎,这似乎是一个简单的任务,但是我找不到正确的解决方案。
[使用p5.js,我正在创建GL实例,并将制服发送到顶点着色器。现在,我想更改统一的全局变量,并使着色器在旧值与新值之间进行插值。
在下面的示例中,单击按钮后,它不应立即更改颜色,而应进行很小的增量以获得新的颜色。
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 iResolution;
uniform float iTime;
uniform vec3 uSky;
void main()
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = gl_FragCoord.xy/iResolution.xy;
uv -= 0.5;
uv.x *= iResolution.x/iResolution.y;
vec3 sky = uSky;
//sky = mix(sky, uSky, 0.001);
// ^- This needs to be increment until 1 every time the uniform changes
// Output to screen
gl_FragColor = vec4(sky, 1.0);
}
正如Rabbid76所说。我无法在着色器中更改统一值。解决的办法是从宿主那里逃脱。