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;
    float bt = floor(time * 2);
    
    // polar coordinates
    vec2 p = (uv - 0.5) * vec2(aspect, 1);
    p = vec2(atan(p.y, p.x), length(p));
    
    // burst
    float b1 = sin(p.x * 30 * rand(0, time) + time * 11.23);
    float b2 = sin(p.x * 10 * rand(1, time) + time * 10.74);
    float c = 1 - step((1 + b1 * b2 / 2) * spectrum.x, p.y);
    
    // sliding rims
    float dx = rand(floor(p.y * 14), bt) - 0.5;
    p.x += p.y * dx * 0.2;
    p.y *= 0.995;
    
    // bring back to screen coordinates
    p = vec2(cos(p.x), sin(p.x)) * p.y;
    uv = p * vec2(1 / aspect, 1) + 0.5;
    
    // feedback
    c += texture(prevFrame, uv).r * 0.985;
    
    // color gradient
    float c1 = 0.5 + sin(c * 9.12 + time * 1.11) * 0.5;
    float c2 = 0.5 + sin(c * 6.33 + time * 1.73) * 0.5;
    fragColor = vec4(1, c1, c2, 0) * c;
}
![gif](https://i.imgur.com/TxNUchm.gif)

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

markdown KodeLife片段着色器草图

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

顶点着色器+片段着色器

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

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

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