Графический дизайн
Шейдер галактики из частиц
Три слабо заметные спиральные ветви развиваются на тёмном холсте WebGL2 под фиксированной типографикой; число точек и вызовов отрисовки задано в исходном коде, а FPS считается локально.
Где применима галактика из частиц
- Эксперименты с WebGLИзучайте композицию частиц на GPU и движение, управляемое шейдером.
- Анимированная визуальная идентичностьСоздавайте атмосферные главные экраны вокруг одной развивающейся формы.
- Презентация креативного кодингаСочетайте технические ограничения со сдержанной редакционной типографикой.
Особенности процедурной галактики
- Спиральное поле частицСлабые зелёные и синие точки образуют три широкие спиральные ветви.
- Блок контекста рендерингаPoints, draw call и FPS собраны в плотную группу в правом верхнем углу.
- Редакционная типографикаКрупное утверждение удерживает композицию под графикой.
- Фокус на одном холстеВизуальное поле несёт весь опыт без видимых элементов управления.
Три момента галактики из частиц
1 / 3Три спиральные ветви, один вызов отрисовки точек
Particle Galaxy — официальный пример OpenDesign: тёмный, почти пустой холст и большое поле слабых частиц. Авторский заголовок «Fifty thousand points, one draw call.» делает техническую идею частью визуальной идентичности, а не прячет её за элементами интерфейса.
Поле частиц и фиксированный заголовок внизу слева находятся в одном экране; заголовок не вынесен в отдельный раздел ниже первого экрана. Слабые зелёные, синие и бледные точки оставляют широкие тёмные промежутки между тремя ветвями. Компромисс очевиден: сдержанное поле выглядит тихо рядом с яркой типографикой, но из-за низкого контраста изображение стоит рассматривать в полном размере.
Где подходит этот дизайн
Дизайн подходит для сцены креативного кодинга, интерактивной технологической витрины или арт-направленного исследования 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
Задайте композицию холста
Начните с тёмного поля на весь холст, компактной группы статистики в правом верхнем углу и фиксированной типографики в левом нижнем. Зелёную подпись темы, крупное утверждение и поясняющий абзац оставьте в том же экране, не добавляя второй раздел под графикой.
Сформируйте поле частиц
Постройте три слабо заметные спиральные ветви из точек, вычисляемых по vertex ID, с более быстрым угловым движением у центра и мягкими аддитивными спрайтами точек. Сохраните тёмные промежутки и фиксированную типографику. Считайте галактику визуальным узором, а не физически проверенной астрономической моделью.
Проверьте подписи и границы возможностей
Подписи Points, Draw Call и FPS должны визуально различаться, а меняющиеся значения FPS нужно показывать как локальное состояние отображения, а не как универсальный бенчмарк. Убедитесь, что движение и изменение размера затрагивают только отрисованный холст.
Рекомендуемый промптСоздай автоматически анимированную WebGL2-галактику из частиц: 50000 точек, позиции которых вычисляются из gl_VertexID, и один вызов отрисовки POINTS за кадр. Расположи их в трёх широких спиральных ветвях с более быстрым угловым движением к центру, фиксированным наклоном и медленным общим вращением. Используй мягкие зелёные и голубые аддитивные спрайты точек, фиксированную типографику внизу слева «Fifty thousand points, one draw call.» и в правом верхнем углу подписи точек и вызова отрисовки, заданные в исходном коде, с локальной оценкой FPS. Не добавляй пользовательские элементы управления, физическую симуляцию галактики, подключённые сервисы, хранилище или универсальную гарантию производительности.
Экспортируйте дизайн и получите ссылку для публикации
Экспортируйте готовый дизайн, затем воспользуйтесь функцией Share в OpenDesign, чтобы получить ссылку. Откройте ссылку в отдельном окне браузера и убедитесь, что нужная версия со всеми ресурсами доступна, прежде чем отправлять её.





