1#version 300 es2precision highp float;3in vec2 v_uv;4uniform vec2 u_res;5uniform float u_time;6uniform float u_params[4];7uniform sampler2D u_texture;8out vec4 fragColor;910float hash(vec2 p) {11 return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);12}13float hash21(vec2 p) {14 p = fract(p * vec2(234.34, 435.345));15 p += dot(p, p + 34.23);16 return fract(p.x * p.y);17}1819float noise2(vec2 p) {20 vec2 i = floor(p);21 vec2 f = fract(p);22 f = f * f * (3.0 - 2.0 * f);23 return mix(mix(hash(i), hash(i + vec2(1,0)), f.x),24 mix(hash(i + vec2(0,1)), hash(i + vec2(1,1)), f.x), f.y);25}26void main() {27 float s = u_params[0], sc = u_params[1], i = u_params[2], m = u_params[3];28 vec2 uv = v_uv * sc;29 float t = u_time * s;30 float n = noise2(uv + t * 0.1);31 n += noise2(uv * 2.0 - t * 0.15) * 0.5;32 n += noise2(uv * 4.0 + t * 0.2) * 0.25;33 n /= 1.75;34 vec3 cA = vec3(0.91,0.87,0.82), cB = vec3(0.09,0.09,0.07), cC = vec3(0.23,0.42,0.65);35 vec3 col = mix(cA, cB, n * i);36 col = mix(col, cC, n * m * 0.3);37 fragColor = vec4(col, 1.0);38}