火星文字雨
效果图
GLSL代码及注释:
// 参考自:https://www.shadertoy.com/view/4s33Rn
uniform float iGlobalTime;
uniform vec2 iMouse;
vec2 iResolution = vec2(512., 512.);
vec3 color = vec3(0.6, 0.1, 0.3); // red
// 一元随机函数
float rand(float x)
{
return fract(sin(x) * 4358.5453123);
}
// 二元随机函数
float rand(vec2 co)
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5357);
}
// 火星文算法 —— _(┐「ε:)_
float invader(vec2 p, float n)
{
p.x = abs(p.x);
p.y = floor(p.y - 5.0);
// 2^x
float tmp = exp2(floor(p.x - 3.0 * p.y));
return step(p.x, 2.0)
* step(1.0, floor( mod(n / tmp, 2.0) ));
}
float ring(vec2 uv, float rnd)
{
float t = 0.6 * (iGlobalTime + 0.2 * rnd);
float i = floor(t / 2.0); // 确保