✏️ 正在编辑: fractal-smoke.frag
路径:
/home/qyel0117/public_html/wp-content/themes/semplice7/assets/shader/generative/fractal-smoke.frag
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
precision mediump float; varying vec2 vUv; uniform float time; uniform vec2 resolution; uniform float speed; uniform float scale; uniform float density; uniform float curl; uniform float rise; uniform float fade; uniform vec3 colorSmoke; uniform vec3 colorGlow; uniform vec2 mouse; float hash(vec2 p) { return fract(sin(dot(p, vec2(41.1, 289.7))) * 43758.5453); } float vnoise(vec2 p) { vec2 i = floor(p); vec2 f = fract(p); f = f * f * f * (f * (f * 6.0 - 15.0) + 10.0); return mix( mix(hash(i), hash(i + vec2(1.0, 0.0)), f.x), mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), f.x), f.y ); } float fbm(vec2 p, float t) { float v = 0.0, a = 0.5; mat2 m = mat2(0.8, 0.6, -0.6, 0.8); for(int i = 0; i < 6; i++) { v += a * vnoise(p); p = m * p * 2.0 + vec2(t * 0.4, -t * rise); a *= 0.5; } return v; } void main() { vec2 uv = (vUv - 0.5) * scale; uv.x *= resolution.x / resolution.y; float t = time * speed * 0.06; vec2 q = vec2(fbm(uv + t * 0.3, t), fbm(uv + vec2(5.2, 1.3) + t * 0.2, t)); vec2 r = vec2( fbm(uv + q * curl + vec2(1.7, 9.2) + t * 0.15, t), fbm(uv + q * curl + vec2(8.3, 2.8) + t * 0.12, t) ); float f = fbm(uv + r * curl, t); float smokeMask = smoothstep(0.1, 0.9, f * density); float vertFade = smoothstep(0.0, fade, vUv.y) * smoothstep(1.0, 1.0 - fade, vUv.y); smokeMask *= vertFade; vec3 col = mix(colorSmoke, colorGlow, pow(f, 2.0)); col = mix(vec3(0.0), col, smokeMask); col += pow(smokeMask, 3.0) * colorGlow * 0.5; gl_FragColor = vec4(col, 1.0); }
💾 保存文件
← 返回文件管理器