How to make a blob invert its direction in the fragment shader?

问题描述 投票:0回答:0

此代码使 blob 对象沿 y 轴上升,并且当它到达屏幕中心时应该反转方向。

blob对象上升,但到达屏幕中心后消失

uniform float   uTime;
varying vec2 vXY;   
    
void main(void) {   
    vec2 uBlob = vec2(0.0, -5.0);
    float direction = 1.;

    float blobPos = uBlob.y + direction*(uTime/1000.); 
    if (blobPos > 0.0) {
        direction *= -1.0; // Reverse direction
    }
    uBlob.y += (direction*(uTime/1000.)); 

    vec4 color = vec4(0.0, 0.0, 0.0, 1.0);

    float dist2 = pow((vXY.x - uBlob.x), 2.0) + pow((vXY.y - uBlob.y), 2.0);

    vec3 fImplicit = vec3(0.0, 0.0, 0.0);
    fImplicit.r = (1.0 / dist2); //this creates the red blob

    color = vec4(fImplicit.r, 0.0, 0.0, 1.0);

    gl_FragColor = color;
}

代码生成此图像:

红色圆圈一直向上,到达屏幕中心后消失。这是怎么回事,我该如何解决?

opengl graphics glsl shader fragment-shader
© www.soinside.com 2019 - 2024. All rights reserved.