markdown KodeLife片段着色器草图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown KodeLife片段着色器草图相关的知识,希望对你有一定的参考价值。

#version 150

uniform float time;
uniform sampler2D prevFrame;
uniform vec2 resolution;
uniform vec3 spectrum;
out vec4 fragColor;

float rand(float x, float y)
{
    return fract(sin(12.9898 * x + 78.233 * y) * 43758.5453);
}

void main(void)
{
    vec2 uv = gl_FragCoord.xy / resolution;
    float aspect = resolution.x / resolution.y;
    
    // ellipse
    float r = length((uv - 0.5) * vec2(aspect, 1));
    float c = 1 - step(spectrum.x, r);
    
    // displacement
    float t = floor(time * 2);
    float phi = rand(t, 0) * 3.14;
    vec2 d = vec2(cos(phi), sin(phi));
    float wd = rand(t, 1) * 100;
    float sd = floor(wd * dot(uv, d.yx * vec2(-1, 1)));
    uv += d * 0.02 * (rand(sd, t) - 0.5);

    // feedback
    c += texture(prevFrame, uv).b * 0.99;
    
    // color gradient
    float c1 = 0.5 + sin(c * 9.12 + time * 1.11) * 0.5;
    float c2 = 0.5 + sin(c * 7.33 + time * 1.73) * 0.5;
    fragColor = vec4(c1, c2, c, 0);
}
![gif](https://i.imgur.com/aBeqQeb.gif)

以上是关于markdown KodeLife片段着色器草图的主要内容,如果未能解决你的问题,请参考以下文章

markdown KodeLife片段着色器草图

片段着色器是不是处理来自顶点着色器的所有像素?

顶点着色器+片段着色器

如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?

Shader2.0的顶点着色器和片段着色器

GLSL:使用片段着色器进行对象翻译