Графический дизайн

Шейдер галактики из частиц

Три слабо заметные спиральные ветви развиваются на тёмном холсте WebGL2 под фиксированной типографикой; число точек и вызовов отрисовки задано в исходном коде, а FPS считается локально.

OpenDesignДизайн и создание
Официальный
Автоматически анимированная композиция WebGL2-галактики из 50000 точек3 экранов
Едва заметные зелёные спиральные частицы на почти чёрном холсте, с жирным белым заголовком внизу слева и маленькими счётчиками вверху справа.
Композиция галактики из частицСкриншот 1 из 3

Где применима галактика из частиц

  • Эксперименты с WebGLИзучайте композицию частиц на GPU и движение, управляемое шейдером.
  • Анимированная визуальная идентичностьСоздавайте атмосферные главные экраны вокруг одной развивающейся формы.
  • Презентация креативного кодингаСочетайте технические ограничения со сдержанной редакционной типографикой.

Особенности процедурной галактики

  • Спиральное поле частицСлабые зелёные и синие точки образуют три широкие спиральные ветви.
  • Блок контекста рендерингаPoints, draw call и FPS собраны в плотную группу в правом верхнем углу.
  • Редакционная типографикаКрупное утверждение удерживает композицию под графикой.
  • Фокус на одном холстеВизуальное поле несёт весь опыт без видимых элементов управления.

Три спиральные ветви, один вызов отрисовки точек

Particle Galaxy — официальный пример OpenDesign: тёмный, почти пустой холст и большое поле слабых частиц. Авторский заголовок «Fifty thousand points, one draw call.» делает техническую идею частью визуальной идентичности, а не прячет её за элементами интерфейса.

Поле частиц и фиксированный заголовок внизу слева находятся в одном экране; заголовок не вынесен в отдельный раздел ниже первого экрана. Слабые зелёные, синие и бледные точки оставляют широкие тёмные промежутки между тремя ветвями. Компромисс очевиден: сдержанное поле выглядит тихо рядом с яркой типографикой, но из-за низкого контраста изображение стоит рассматривать в полном размере.

Тёмный холст Particle Galaxy, статистика справа вверху, спиральное поле частиц и крупный поясняющий заголовок.
Тёмный холст Particle Galaxy, статистика справа вверху, спиральное поле частиц и крупный поясняющий заголовок.

Где подходит этот дизайн

Дизайн подходит для сцены креативного кодинга, интерактивной технологической витрины или арт-направленного исследования WebGL. Он особенно хорош, когда сама визуализация — главный предмет, а сопроводительный текст остаётся коротким.

Отсутствие статичных элементов управления удерживает внимание на меняющемся поле частиц. Эта сдержанность ограничивает и обнаруживаемость: в предоставленной разметке нет авторских элементов управления, поэтому дизайн говорит через движение, типографику и компактный блок статистики, а не через явные интерактивные подсказки.

Витрина креативного кодинга

Используйте большое поле частиц, чтобы представить эксперимент с рендерингом до объяснения техники.

Главная сцена на WebGL

Адаптируйте тёмный холст как визуальное начало технически ориентированного цифрового проекта.

Редакционный дизайн с упором на движение

Пусть медленно меняющаяся форма удерживает внимание, а краткий текст задаёт контекст.

Как устроена композиция

В правом верхнем блоке показаны 50,000 POINTS, 1 DRAW CALL и меняющаяся оценка FPS. Вершинный шейдер получает позиции точек из gl_VertexID, распределяет их по трём ветвям и меняет угловую скорость так, что внутренние точки вращаются быстрее. Фиксированный наклон и медленно меняющееся общее вращение задают перспективу диска. Мягкие спрайты точек и аддитивное смешивание дают свечение зелёным, голубым и бледным частицам.

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

На снимках показаны разные значения FPS при тех же подписях числа точек и вызовов отрисовки. Из-за этого поле FPS читается как меняющееся локальное состояние отображения, а не стабильное утверждение о производительности на разных устройствах.

Техническая идея

Заголовок связывает число частиц и идею вызова отрисовки с визуальным образом, а не подаёт их как не связанные метаданные.

Визуальная плотность

Широкие спиральные ветви остаются разреженными на чёрном фоне, сохраняя пустое пространство вокруг заголовка и статистики.

Вариации состояния

На снимках сохраняются 50000 точек и один вызов отрисовки, а значения FPS различаются: фиксированные подписи отделены от меняющегося состояния отображения.

Граница возможностей

Исходный код WebGL2 задаёт N = 50000 и вызывает gl.drawArrays с POINTS один раз за каждый отрисованный кадр. Позиции частиц вычисляются в вершинном шейдере, а не обновляются через буфер позиций на CPU. Основной поток по-прежнему занимается настройкой, uniform-значениями времени, изменением размера и отрисовкой. Элементов управления указателем, клавиатурой, камерой или параметрами нет. Это процедурный образ, похожий на галактику, а не научная гравитационная симуляция.

Комментарии в исходном коде заявляют 60fps, но отдельные статичные снимки и локальный счётчик FPS не доказывают гарантированную производительность. Они также не доказывают промышленное развёртывание, подключённые сервисы или исторический процесс генерации. Числа точек и вызовов отрисовки — факты кода; значение частоты кадров — наблюдение, зависящее от окружения.

Что описывают счётчики

Число точек берётся из заданного значения N, а подпись draw call соответствует единственному вызову POINTS в цикле отрисовки. Значение FPS оценивает частоту requestAnimationFrame примерно по полусекундным окнам. Разделение этих смыслов сохраняет полезный технический контекст и не превращает работу в необоснованный бенчмарк.

Как создать шейдер галактики из частиц в OpenDesign

  1. Скачайте и установите OpenDesign

    Скачайте десктопное приложение, установите его и завершите настройку. Создайте проект для своего дизайна.

    Скачать OpenDesign
  2. Задайте композицию холста

    Начните с тёмного поля на весь холст, компактной группы статистики в правом верхнем углу и фиксированной типографики в левом нижнем. Зелёную подпись темы, крупное утверждение и поясняющий абзац оставьте в том же экране, не добавляя второй раздел под графикой.

  3. Сформируйте поле частиц

    Постройте три слабо заметные спиральные ветви из точек, вычисляемых по vertex ID, с более быстрым угловым движением у центра и мягкими аддитивными спрайтами точек. Сохраните тёмные промежутки и фиксированную типографику. Считайте галактику визуальным узором, а не физически проверенной астрономической моделью.

  4. Проверьте подписи и границы возможностей

    Подписи Points, Draw Call и FPS должны визуально различаться, а меняющиеся значения FPS нужно показывать как локальное состояние отображения, а не как универсальный бенчмарк. Убедитесь, что движение и изменение размера затрагивают только отрисованный холст.

    Рекомендуемый промпт

    Создай автоматически анимированную WebGL2-галактику из частиц: 50000 точек, позиции которых вычисляются из gl_VertexID, и один вызов отрисовки POINTS за кадр. Расположи их в трёх широких спиральных ветвях с более быстрым угловым движением к центру, фиксированным наклоном и медленным общим вращением. Используй мягкие зелёные и голубые аддитивные спрайты точек, фиксированную типографику внизу слева «Fifty thousand points, one draw call.» и в правом верхнем углу подписи точек и вызова отрисовки, заданные в исходном коде, с локальной оценкой FPS. Не добавляй пользовательские элементы управления, физическую симуляцию галактики, подключённые сервисы, хранилище или универсальную гарантию производительности.

  5. Экспортируйте дизайн и получите ссылку для публикации

    Экспортируйте готовый дизайн, затем воспользуйтесь функцией Share в OpenDesign, чтобы получить ссылку. Откройте ссылку в отдельном окне браузера и убедитесь, что нужная версия со всеми ресурсами доступна, прежде чем отправлять её.