Quartz Composer — это система графа узлов , предоставляемая как часть среды разработки Xcode в macOS для обработки и рендеринга графических данных. Она способна создавать сложные анимации для основных докладов или презентаций, а также создавать анимированные заставки. [1]
Quartz Composer использует OpenGL (включая GLSL ), OpenCL (только в Mac OS X Snow Leopard и более поздних версиях), OpenAL , Core Image , Core Video , JavaScript и другие технологии для создания API и инструмента разработчика на основе простой парадигмы визуального программирования. Apple глубоко внедрила технологии Quartz в операционную систему . Композиции, созданные в Quartz Composer, можно воспроизводить автономно в любом приложении с поддержкой QuickTime [2] (хотя только в Mac OS X Tiger и более поздних версиях), в качестве системной заставки [3] , в качестве визуализатора iTunes, из приложения Quartz Composer или можно встроить в приложение Cocoa или Carbon с помощью предоставленных виджетов пользовательского интерфейса . Хотя Quartz Composer включен в iPhone SDK, по состоянию на декабрь 2015 года нет возможности запускать композиции Quartz на устройствах iOS . Начиная с macOS Catalina, фреймворк Quartz Composer устарел, хотя он все еще присутствует для совместимости. [4][обновлять]
Программирование Quartz через Quartz Composer работает путем внедрения и соединения патчей . [5] Подобно процедурам в традиционных языках программирования, патчи являются базовыми блоками обработки. Они выполняются и производят результат. Для лучшей производительности выполнение патчей следует подходу ленивой оценки , что означает, что патчи выполняются только тогда, когда требуется их вывод. Существует три типа патчей: потребители, процессоры и внешние входные патчи, которые могут получать и выводить щелчки мыши, прокрутки и движения; MIDI и аудио; клавиатуру; или другие движения. Набор патчей можно объединить в один, называемый макросом. Макросы могут быть вложенными, а их подпрограммы также редактировать.
Для управления порядком рендеринга каждому рендереру назначается слой, указанный в правом верхнем углу. Слои рендерятся последовательно, от самого низкого к самому высокому. Рендереры можно включать и отключать, по сути, включая или выключая этот конкретный слой. Отключение неиспользуемых слоев часто приводит к повышению производительности, поскольку требуется оценивать меньшее количество патчей восходящего потока.
Некоторые патчи могут иметь подпатчи, что позволяет изменять глобальные параметры только для включенных подпатчей. Это полезно для освещения, 3D-преобразований и шейдеров GLSL , среди прочего. Поддержка подпатчей обозначается квадратными углами на патче, а не типичными закругленными углами.
С версии 3.0 стало возможным превращать композиции в виртуальные патчи. Это позволяет пользователю повторно использовать функциональность без необходимости хранить дубликаты копий в каждой композиции. Редактор Quartz Composer позволяет пользователю сохранять «сглаженную» копию (с виртуальными патчами, полностью развернутыми внутри) для простого распространения. Версия 4.0 расширила эту функциональность еще больше и автоматически включает «сглаженные» копии виртуальных патчей для использования в качестве резерва, если желаемый виртуальный патч не установлен в хост-системе. Это значительно упрощает распространение композиций.
С выпуском Leopard функциональность сети была значительно улучшена. Стало возможным передавать данные и синхронизировать через сетевой интерфейс, а также была добавлена поддержка передачи и приема Open Sound Control .
Также новым в версии 3.0 стала возможность писать пользовательские плагины патчей с использованием шаблона Xcode и понятие " безопасного режима ", в котором плагины и другие небезопасные патчи не загружаются. Это предотвращает выполнение вредоносными композициями опасных или небезопасных операций. Пользовательские патчи с использованием шаблона Xcode от Apple всегда считаются небезопасными.
Можно было разрабатывать пользовательские плагины патчей для версии 2.0, но API был недокументированным и закрытым и никогда не поддерживался Apple. В конце концов, были выпущены шаблоны для упрощения этой процедуры. [6]
В редакторе Quartz Composer удержание клавиши Option при выборе пункта меню «Preferences...» добавляет 3 дополнительные вкладки параметров для настройки пользователем. Эти параметры включают системные настройки, настройки редактора и настройки интеграции QuickTime. Среди примечательных параметров — расширенные подсказки, программный рендеринг и рендеринг с неограниченной частотой кадров. Многовыборочное сглаживание (MSAA) было добавлено как скрытый параметр в версии 4.0, что позволяет использовать сглаживание внутри редактора QC, хотя оно работает только на графических процессорах, поддерживающих MSAA.
Данные внутри QC могут быть одного из следующих типов:
В версии 4.0 были введены два дополнительных типа:
Данные обычно можно прозрачно преобразовать в другие типы. В Quartz Composer 3.0 связи между патчами меняют цвет, чтобы обозначить происходящие преобразования. Желтые связи означают, что преобразование не происходит, оранжевый указывает на возможную потерю данных при преобразовании (число в индекс), а красный указывает на серьезное преобразование; например, изображение в логическое значение.
Документы Quartz Composer называются Композициями . Композиции — это списки двоичных свойств (хотя версии XML также поддерживаются) с расширением имени файла .qtz и com.apple.quartz-composer-composition
UTI . [7] Патчи, их соединения и состояния входных портов сохраняются в файле композиции. Изображения также могут храниться внутри композиции, что делает их автономными композициями со встроенной графикой. Перетаскивая файл фильма в редактор Quartz Composer, создается ссылка на файл фильма, предоставляя изменяющееся изображение, которое можно подключить к рендереру.
Композиции также хранят метаданные, такие как автор композиции, авторские права и описание. Пользователь также может добавлять произвольные элементы метаданных, если пожелает.
Поддерживаются многие форматы изображений, включая JPEG , JPEG2000 , GIF , PNG , TIFF , TGA , OpenEXR , BMP , ICO , PDF , PICT , ICNS и некоторые типы необработанных цифровых камер. [8] Изображения сохраняются в исходном виде как можно дольше перед растеризацией для отображения. Это означает, что Quartz Composer будет сохранять векторные изображения как векторы при обрезке, масштабировании, повороте или переводе, что позволяет ему работать с очень большими логическими размерами изображений, не потребляя больших объемов памяти или времени обработки. Такая функциональность наиболее очевидна при работе с текстовыми изображениями или PDF-файлами.
В версии 3.0 добавлена возможность добавлять аннотации к областям композиции, называемым примечаниями . Эти примечания параллельны комментариям в других языках программирования. Примечания могут быть желтыми, красными, зелеными, синими или серыми и могут перекрывать другие примечания.
В версии 3.0 была введена концепция Composition Protocols. Протоколы предоставляют шаблон обязательных и необязательных входов и выходов для квалификации соответствующих композиций для различных целей. По умолчанию доступны следующие протоколы:
Apple использует в своем частном API дополнительный протокол:
В версии 4.0 был добавлен один новый протокол:
Официально поддерживаемого способа добавления дополнительных протоколов в Quartz Composer нет. Однако есть некоторые недокументированные методы, которые могут сделать это возможным в будущем. [9]
В дополнение к протоколам, композиции также могут соответствовать различным средам выполнения, где доступен Quartz Composer. В Leopard есть среды выполнения для Tiger (32-бит), а также 32-битные и 64-битные версии среды выполнения Leopard Quartz Composer. Редактор также может указывать используемые патчи, которые небезопасны или недоступны в Tiger, чтобы помочь в создании совместимых композиций.
Системный репозиторий композиций доступен с версии 3.0. [10] Это позволяет приложениям совместно использовать и использовать общие композиции для эффектов и обработки. Также приложения могут запрашивать в репозитории композиции, соответствующие определенным критериям, таким как соответствие протоколу.
Репозиторий распределен по 3 локациям файловой системы :
Добавление композиций в репозиторий так же просто, как добавление файла композиции в одно из этих мест.
В Quartz Composer 3.0 стало возможным сравнивать композиции. Эта функция позволяет пользователю сравнивать входные данные, визуализированный вывод и внешний вид графика любых двух композиций.
В Quartz Composer 3.0 был выпущен инструмент разработчика под названием Quartz Composer Visualizer, который позволяет отображать композиции на нескольких экранах на одном компьютере или даже на нескольких компьютерах и дисплеях.
Поддержка некоторых действий Automator была добавлена с выпуском Leopard.
Первоначально Пьер-Оливье Латур разработал предшественника Quartz Composer под названием PixelShox Studio. [11]