Tektronix SVG Renderer: ретро-анимация векторной графики на GPU для Unity

Концепция и назначение

Аддон предназначен для воспроизведения отрисовки SVG-файлов в стиле старых векторных осциллографов (Tektronix 401x). Вместо традиционной перерисовки всего кадра он накапливает список точек и цветов из SVG на CPU и передаёт их в Compute Shader, который обновляет только «текущую» линию в RenderTexture. Такой подход устраняет необходимость полных перерисовок и позволяет эмулировать эффект горящего (glowing) контура, достигаемый за счёт плавного наложения оттенков более новых линий.

Архитектура и ключевые компоненты

  • Парсер SVG: очень простой и легковесный, умеет разбивать файлы на последовательность примитивов (линий, кривых) и извлекать базовые параметры (цвет, ширина линии, координаты). При этом не заявлена полная поддержка всех SVG-функций (градиенты, сложные трансформации и т. п.), но для большинства «плоских» векторных график его возможностей хватает.
  • Compute Shader: получает на вход два буфера — один с набором вершинных точек (в развернутом виде – каждая линия разбита на конечный список сегментов), другой с индексом «текущей» линии. Каждый кадр шейдер рисует только одну (или несколько последних) линию(й), накладывая их с учётом HDR и последующего Bloom-эффекта (обработка свечения делается средствами Unity-Pipeline).
  • RenderTexture + пост-эффекты: результат Compute Shader выводится в RenderTexture, после чего встроенные Unity-шаги пост-обработки (Bloom) создают мягкое свечение. Это позволяет разгрузить вычисления: весь «glow» рисуется пост-эффектами, а шейдер отвечает лишь за точечную отрисовку векторного контура.

Интеграция в проект

  • В Unity откройте сцену или создайте новую, затем импортируйте папку Assets из аддона в ваш проект (можно просто перетащить в окно Project)
git clone https://github.com/GasimoCodes/Tektronix-SVG-Renderer-Unity.git
  • Добавьте на любую Camera или пустой GameObject компонент TektronixSVGRenderer (скрипт на C#)
  • В инспекторе укажите:

SVG-файл (TextAsset или путь к файлу), который нужно отрисовать

RenderTexture (целевой текстурный ресурс), куда Compute Shader будет писать результат

Параметры скорости рисования, толщины линий и прочие базовые настройки.

  • Убедитесь, что в настройках проекта включены Compute Shaders (Windows/Linux/Mac — все основные платформы поддерживаются)

Больше статей:

1
1
2 комментария