Введение
Quartz Composer — это язык визуального программирования на основе узлов, входящий в состав среды разработки Xcode для macOS и предназначенный для обработки и рендеринга графических данных. Quartz Composer использует OpenGL (включая GLSL), OpenCL (только в Mac OS X Snow Leopard и более поздних версиях), Core Image, Core Video, JavaScript и другие технологии для создания API и инструмента для разработчиков, основанного на простой парадигме визуального программирования. Apple глубоко интегрировала технологии Quartz в операционную систему. Композиции, созданные в Quartz Composer, можно воспроизводить автономно в любом приложении, поддерживающем QuickTime (хотя только начиная с Mac OS X Tiger), использовать как системную заставку, как визуализатор iTunes, непосредственно в приложении Quartz Composer или встраивать в приложения Cocoa или Carbon с помощью предоставляемых виджетов пользовательского интерфейса. Несмотря на то, что Quartz Composer входит в состав SDK для iPhone, на момент lc=y запустить композиции Quartz Composer на устройствах iOS невозможно. Начиная с macOS Catalina, фреймворк Quartz Composer устарел, хотя он по-прежнему присутствует для обеспечения совместимости.
Quartz Composer is a node based visual programming language provided as part of the Xcode development environment in macOS for processing and rendering graphical data. Quartz Composer uses OpenGL (including GLSL), OpenCL (only in Mac OS X Snow Leopard and later), Core Image, Core Video, JavaScript, and other technologies to create an API and a developer tool around a simple visual programming paradigm. Apple has embedded Quartz technologies deeply into the operating system. Compositions created in Quartz Composer can be played standalone in any QuickTime aware application (although only on Mac OS X Tiger and later), as a system Screen Saver, as an iTunes Visualizer, from inside the Quartz Composer application, or can be embedded into a Cocoa or Carbon application via supplied user interface widgets. While Quartz Composer is included with the iPhone SDK, as of lc=y there is no way of running Quartz Compositions on iOS devices. Starting in macOS Catalina, the Quartz Composer framework has been deprecated, although it is still present for compatibility.
Пластыри
Программирование в Quartz через Quartz Composer осуществляется путем реализации и соединения патчей. Подобно подпрограммам в традиционных языках программирования, патчи являются базовыми единицами обработки. Они выполняются и выдают результат. Для повышения производительности выполнение патчей использует подход ленивых вычислений, то есть патчи выполняются только тогда, когда требуется их результат. Существуют три типа патчей: потребительские, процессорные и патчи внешнего ввода, которые могут принимать и выдавать данные о кликах, прокрутках и перемещениях мыши; MIDI и аудио; клавиатуры; или других движениях. Набор патчей можно объединить в один, называемый макросом. Макросы можно вкладывать друг в друга и редактировать их подпатчи. Для управления порядком рендеринга каждому рендереру присваивается слой, отображаемый в его правом верхнем углу. Слои рендерятся последовательно, от нижнего к верхнему. Рендереры можно включать или отключать, тем самым активируя или деактивируя соответствующий слой. Отключение неиспользуемых слоев часто повышает производительность, поскольку требуется вычислять меньше патчей выше по потоку. Некоторые патчи могут содержать подпатчи, что позволяет изменять глобальные параметры только для включенных подпатчей. Это полезно для освещения, 3D-трансформаций и GLSL-шейдеров, среди прочего. Поддержка подпатчей обозначается квадратными углами патча, в отличие от типичных скругленных углов. Начиная с версии 3.0, появилась возможность преобразовывать композиции в виртуальные патчи. Это позволяет пользователям повторно использовать функциональность без необходимости хранить дубликаты в каждой композиции. Редактор Quartz Composer позволяет пользователю сохранять "сглаженную" копию (с полностью развернутыми виртуальными патчами внутри) для удобного распространения. Версия 4.0 расширила эту функциональность и автоматически включает "сглаженные" копии виртуальных патчей для использования в качестве резервной копии, если требуемый виртуальный патч не установлен на хост-системе. Это значительно упрощает распространение композиций. Функциональность сети была значительно улучшена с выпуском Leopard. Стала возможной передача данных и синхронизация через сетевой интерфейс, а также добавлена поддержка передачи и приема Open Sound Control.
Плагины
Также в версии 3.0 появилась возможность создавать собственные плагины для патчей, используя шаблон Xcode, и была введена концепция "безопасного режима", при котором плагины и другие небезопасные патчи не загружаются. Это предотвращает выполнение опасных или небезопасных операций вредоносными сборками. Пользовательские патчи, созданные с использованием шаблона Apple Xcode, всегда считаются небезопасными. Разработка собственных плагинов для патчей была возможна и для версии 2.0, но API был недокументированным и закрытым, и никогда не поддерживался компанией Apple. Впоследствии были выпущены шаблоны для упрощения этой процедуры.
Скрытые опционы
В редакторе Quartz Composer, при выборе "Preferences" из меню с зажатой клавишей Option, добавляются 3 дополнительных вкладки настроек для пользователя. Эти настройки включают параметры системы, параметры редактора и параметры интеграции с QuickTime. Среди примечательных опций – расширенные подсказки, программный рендеринг и неограниченная частота кадров. Мультисемплинг антиалиазинга (MSAA) был добавлен как скрытая опция в версии 4.0, позволяя использовать антиалиазинг непосредственно в редакторе QC, однако он работает только на GPU, поддерживающих MSAA.
Перевод типа
Данные обычно могут быть преобразованы в другие типы прозрачно. В Quartz Composer 3.0 соединения между патчами меняют цвет, чтобы указать на происходящие преобразования. Желтые соединения означают, что преобразование не происходит, оранжевый – возможную потерю данных при преобразовании (например, Number to Index), а красный – критическое преобразование, например, из изображения в логическое значение.
Композиции
Документы Quartz Composer называются композициями. Композиции — это списки бинарных свойств (хотя поддерживаются и XML-версии) с расширением файла qtz и UTI com.apple.quartz-composer-composition. Патчи, их соединения и состояния входных портов сохраняются в файле композиции. Изображения также могут храниться внутри композиции, что позволяет создавать автономные композиции со встроенной графикой. Перетаскивание файла фильма в редактор Quartz Composer создает ссылку на этот файл, обеспечивая динамичное изображение, которое можно подключить к рендереру. Композиции также хранят метаданные, такие как автор, информация об авторских правах и описание. Пользователь может добавлять и произвольные элементы метаданных по желанию. Поддерживается множество форматов изображений, включая JPEG, JPEG2000, GIF, PNG, TIFF, TGA, OpenEXR, BMP, ICO, PDF, PICT, ICNS и некоторые типы файлов с изображений, полученных с цифровых камер. Изображения сохраняются в исходном формате как можно дольше перед растрированием для отображения. Это означает, что Quartz Composer сохраняет векторные изображения в векторном виде при обрезке, масштабировании, вращении или перемещении, что позволяет работать с очень большими логическими размерами изображений без значительного потребления памяти или времени обработки. Эта функциональность особенно заметна при работе с текстовыми изображениями или PDF-файлами. В версии 3.0 появилась возможность добавлять аннотации к областям композиции, называемые заметками. Эти заметки аналогичны комментариям в других языках программирования. Заметки могут быть жёлтыми, красными, зелёными, синими или серыми и могут перекрываться друг с другом.
Время выполнения композиции
В дополнение к протоколам, композиции могут также поддерживаться различными средами выполнения, где доступен Quartz Composer. В Leopard предусмотрены среды выполнения для Tiger (32 бит), а также 32-битные и 64-битные версии среды выполнения Quartz Composer для Leopard. Редактор также может указывать на использованные патчи, которые являются небезопасными или недоступными в Tiger, чтобы помочь в создании совместимых композиций.
Сравнение композиций
Стало возможным сравнивать композиции в Quartz Composer 3.0. Эта функция позволяет пользователю сравнивать входные параметры, отрисованный результат и внешний вид графиков любых двух композиций.
Визуализатор кварцевого композитора
Инструмент для разработчиков Quartz Composer Visualizer был выпущен вместе с Quartz Composer 3.0 и позволяет визуализировать композиции на нескольких экранах одного компьютера, или даже распределять их на несколько компьютеров и дисплеев.
История
Пьер Оливье Латур изначально разработал предшественника Quartz Composer под названием PixelShox Studio.