Glsl WebGL:在新旧值之间插值

Glsl WebGL:在新旧值之间插值,glsl,shader,webgl,p5.js,Glsl,Shader,Webgl,P5.js,我现在已经第二天在努力解决这个问题了,这似乎是一项简单的任务,但我找不到正确的解决方案 使用p5.js,我创建了一个GL实例,并将制服发送到顶点着色器。 现在我想更改全局变量,它是统一的,并使着色器在旧值到新值之间插值 在下面的示例中,单击按钮后,它不应立即更改颜色,而应以较小的增量获得新颜色 #ifdef GL_ES precision mediump float; #endif uniform vec2 iResolution; uniform float iTime; uniform v

我现在已经第二天在努力解决这个问题了,这似乎是一项简单的任务,但我找不到正确的解决方案

使用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);
}

正如拉比76所评论的那样。我无法更改着色器中的统一值。
解决方案是从主机执行lerp。

无法更改着色器中统一变量的值。您必须更改应用程序中统一的值。如果要创建动画和动画,则必须计算坐标并设置帧中均匀的值。