Перейти к содержимому

Веб-графикаВиджеты

Лава-лампа из метаболлов — интерактивный фон на WebGL

Текущие капли лавы, которые плавно сливаются и разделяются: поле метаболлов считается фрагментным шейдером, 23 КБ без зависимостей, курсор тянет лаву за собой, цвета перекрашиваются под тему сайта.

Период
2026

Ключевые показатели проекта

вес виджета, 8 КБ в gzip, без зависимостей
23 КБ
библиотек — один фрагментный шейдер
0
капель максимум в одном поле
14

Состав работ по проекту

Услуги

  • Фрагментный шейдер поля метаболлов
  • Виджет для фона секции или шапки
  • Реакция на курсор и тач
  • Адаптация палитры под тему сайта

О проекте

Нужен фон, который оживает: не статичная картинка и не тяжёлая 3D-сцена, а что-то среднее — заметное движение, которое не отвлекает от контента и не весит ничего.

Тёмный фон с тёплым оранжевым свечением в центре — атмосфера лава-лампы
Подробнее о проекте

Классическая лава-лампа подходит идеально: медленные текучие формы, знакомые каждому, при этом устроена она проще, чем кажется.

Ход работы

  • капли — это гауссовы «холмы» в одном поле, а граница лавы — сглаженный порог по их сумме: поэтому близкие капли сливаются непрерывно и так же плавно расходятся;
  • весь расчёт умещается в один фрагментный шейдер: полный экран покрывает один треугольник, вес виджета — 23 КБ, 8 КБ в gzip, без единой зависимости;
  • объём капле даёт освещение, а не второй цвет. Нормаль берётся не из градиента поля — он равен нулю и в центре капли, и на её краю, поэтому силуэт не отворачивался от света и капля читалась плоским пятном. Считаем её от высоты купола над порогом: у корня производная на краю уходит в бесконечность, нормаль доворачивается до горизонтали, и появляется край шара. Дальше обычная светотень — подсвет с теневой стороны, компактный блик, френель;
  • курсор добавляет в поле свою каплю и тянет к себе соседние. Притяжение ограничено радиусом и плавно сходит в ноль на его границе: без этого оно действовало из любого угла кадра, и все капли рано или поздно слипались в одну. Касание ведёт лаву так же, как мышь, — вертикальный свайп при этом остаётся у страницы;
  • у поля нет собственного экрана: канвас прозрачный, лава живёт прямо на фоне темы сайта и перекрашивается, когда тему переключают;
  • защита производительности: потолок devicePixelRatio и площади буфера, остановка рендера за пределами экрана, уважение системного «уменьшить движение».

Результат

Лёгкий интерактивный фон, который вставляется в любую страницу одной строкой и не требует ни сборки, ни библиотек. Лава на этой странице — она и есть: виджет, а не видео.

Направление ещё развивается: дальше — режимы под конкретные секции сайта и более выразительная форма самих капель.

Есть продукция, которую нужно визуализировать?

Средний бюджет проекта — от 30 000 ₽.

Небольшие отдельные задачи оцениваются индивидуально.