✏️ 正在编辑: plasma.frag
路径:
/home/qyel0117/public_html/wp-content/themes/semplice7/assets/shader/generative/plasma.frag
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
precision mediump float; varying vec2 vUv; uniform float time; uniform vec2 resolution; uniform vec2 mouse; uniform float speed; uniform float zoom; uniform float saturation; uniform float neonIntensity; uniform float colorIntensity; uniform float glowAmount; uniform vec3 colorA; uniform vec3 colorB; vec4 fastTanh(vec4 x) { vec4 x2 = x * x; return clamp(x * (27.0 + x2) / (27.0 + 9.0 * x2), -1.0, 1.0); } void main() { vec2 p = (vUv * 2.0 - 1.0) * vec2(resolution.x / resolution.y, 1.0); vec2 m = mouse * 2.0 - 1.0; float mouseInfluence = length(m) * 0.5; float zBase = zoom - zoom * abs(0.7 - dot(p, p)); float z = zBase + m.y * 2.0; vec2 f = p * z; vec2 i = vec2(0.0); vec4 O = vec4(0.0); for(int j = 0; j < 8; j++) { i.y = float(j) + 1.0; vec2 sinF = sin(f) + 1.0; vec4 colorWave = vec4(sinF.x, sinF.y, sinF.x, sinF.y) * abs(f.x - f.y) * colorIntensity; float mouseDistance = length(p - m * vec2(resolution.x / resolution.y, 1.0)) * 2.0; float neonBoost = 1.0 + (1.0 - smoothstep(0.0, 0.5, mouseDistance)) * neonIntensity; colorWave *= neonBoost; O += colorWave; float timeOffset = time * speed * 0.15 + m.x * 3.0; f += cos(f.yx * i.y + i + timeOffset) / i.y + 0.7; } // original multi-channel plasma vec4 raw = fastTanh(7.0 * exp(z - 4.0 - p.y * vec4(-1.0, 1.0, 2.0, 0.0)) / O); // use each channel independently to blend between colors vec3 col = vec3( mix(colorA.r, colorB.r, raw.r), mix(colorA.g, colorB.g, raw.g), mix(colorA.b, colorB.b, raw.b) ); // saturation vec3 lum = vec3(0.299, 0.587, 0.114); float luminance = dot(col, lum); col = mix(vec3(luminance), col, saturation); // glow float glow = exp(-mouseInfluence * 4.0) * glowAmount; col += mix(colorA, colorB, 0.3) * glow; gl_FragColor = vec4(col, 1.0); }
💾 保存文件
← 返回文件管理器