Just get rid of it entirely. The visual flair is not adding any value. It's a performance drag, highly distracting, and serves no useful purpose whatsoever. This "trend" in modern web design is truly infuriating.
I think the lava lamp effect is cool. The perf issues can and will be fixed.
From my perspective I agree with a lot of the other commenters - it’s just design for design’s sake. It’s an expensive way to add minor visual flair that heavily degrades the experience for a sizeable number of users. In terms of value provided to the user: it’s basically zero, or often worse than zero.
Personally, it feels over-designed, which the stretched font for the headings really reinforces. I’d drop the shader, re-evaluate your font choice for the headings, and focus on layout and readability a little more - using the site on my iPhone feels really cramped and like the whole page is getting cut off on the right-hand side constantly. I can’t scroll horizontally to see the rest of the code, for example.
I do like the little text-flicker/flipboard animation on the “keygen” logo though. That looks clean and well-suited to the theme of the site.
And it may be over-designed. It was my first foray back into design since switching careers to programming about 10 years ago. Maybe I took it a bit too far? Felt good to stretch those muscles, though. :)
(Your site works fine on my computer. The effect is disabled and it's not a problem.)
There's clearly bugs where it's enabled where it shouldn't be, and that's certainly an issue, but the comments here make it clear that it gets disabled automatically on lower-end devices.
Mac+Firefox users are probably in your customer base. Listen to the feedback.
The animation itself looks fine, its slow enough that it doesn't feel distracting. Just a bit of flavor.
Its mostly just a few calls to a cheap noise function and no footguns I can see. Also hurrah for dev tools and open text formats! If you're looking for better performance, it looks like the noise could be precomputed (the same blob always gets the same noise)". Might be faster, might just hit more bugs.
I’ve looked at the source, and it seems you’re doing too much computations there. Metaballs are usually rather simple, and they don’t require any trigonometric functions. Compute something like `sum( ball.z / length( pixel - ball.xy ) )` and apply the threshold. If you want anti-aliasing, use fwidth() for the screen-space partial derivative of that value after the loop, compute two thresholds around the iso-value, then smoothstep() instead of a hard threshold.
Also, consider moving the ball parameters (center and size) into a constant buffer and update them on CPU. Because there’s just a few balls, JavaScript is good enough for the job. Your current version computes these things from time for each pixel for each frame. There’re about 8 megapixels on my display, so these computation costs are escalating very quickly.
I sent you an email with a job offer.
Console logs: device: undefined, fps: 60, gpu: amd renoir, isMobile: false, tier: 3
FWIW, my laptop is a relatively beefy 2021 model (granted, with integrated GPU). For a business that's not about 3D rendering, spending an innovation token on making sure your landing page can have a smooth background animation seems like it's playing on hard mode.
I haven't noticed any drop in registrations, conversions, or any noticeable differences in traffic patterns after launching the redesign, so I'm not sure if this is actually happening. Though it's a valid concern and issue, and I do want to fix it. And I appreciate all the reports. I think it may be a retina resolution issue, but could be wrong.
On launch day, everyone loved the effect (it goes along with the new logo) and only a couple people said it performed badly, but they were on exotic devices.
I may have caused this a few days ago when I enabled rendering at retina resolution for tier 3 devices. What I wasn't expecting was so many tier 3 devices that aren't really what I'd consider "tier 3." I was expecting all tier 3 devices to be gaming-level GPUs.
I guess I should have read the source [^0] more closely and I could've avoid this.
Could be the detection of GPUs doesn't work correctly? My nVidia 1080Ti is detected as nVidia 980Ti, and a sibling comment mentions an integrated laptop GPU being detected as tier 3 with isMobile=false.
{
"fps": 130,
"gpu": "amd radeon pro 5300m",
"isMobile": false,
"tier": 3,
"type": "BENCHMARK"
}
Definitely wasn't 130 FPS and made the whole page stuttery.Despite the supposedly high FPS it's very jumpy/laggy in Firefox, though fast in Safari.
That's why the debug information would help.
Good to hear it's not just me though (and the effects also aren't disabled for me either).
Until someone turns up with a new combo where it doesn't work. Because judging by the comments, this seems to be a janky piece of code that isn't well understood.
"Turn it off" (or rather, "rip it out, and throw it away" is good advice. If there is even a slight chance this might come back to haunt you and screw the user experience, it isn't worth it. If your animation is more important than avoiding a horrible user experience, well, that's kind of useful for your customers I suppose.
Do you want an appointment? A lab?
{"CANVASES":2,"GPU":{"fps":209,"gpu":"apple m2","isMobile":false,"tier":3,"type":"BENCHMARK"},"RESOLUTION_RATIO":2,"BLOB_COUNT":20,"BLOB_AMPLITUDE":"52.60","BLOB_RADIUS":"2.54","POSITION_X":"4.43","POSITION_Y":"1.72","RANGE_X":"4.64","RANGE_Y":"6.51","SPEED_X":"9.60","SPEED_Y":"4.51"}
Macbook Pro M1
I'm using an external monitor running at 5120x1440 (Samsung, not retina) only, and am experiencing the the same on Firefox.
At least not retina exclusive.
device: undefined
fps: 30
gpu: "intel mesa dri intel hd graphics 400"
isMobile: false
tier: 2
type: "BENCHMARK"