API для рендеринга интерактивной 3D-графики
Stage3D ( кодовое название Molehill [1] ) — API Adobe Flash Player для рендеринга интерактивной 3D-графики с ускорением GPU в играх и приложениях Flash. Приложения Flash Player или AIR , написанные на ActionScript 3, могут использовать Stage3D для рендеринга 3D-графики, [2] и такие приложения изначально работают в Windows, Mac OS X, Linux, Apple iOS и Google Android . [3] Stage3D по назначению и дизайну похож на WebGL . [4] [5]
Stage3D был представлен в Adobe Flash Player 11.0 и AIR 3.0 для того, чтобы облегчить ускорение GPU 3D-контента в приложениях Flash [1] [6] Во Flash Player 10 и более ранних версиях 3D Flash-приложения должны были полностью рендерить 3D-графику на CPU . Flash Player 10 поддерживал ограниченную форму поддержки ускорения GPU для материалов в API, называемом Pixel Bender . [1] [7]
Шейдеры графического процессора в Stage3D выражены на языке Adobe Graphics Assembly Language (AGAL). [8] : 57 [9] Объекты Stage3D отходят от традиционной модели рендеринга SWF тем, что их нельзя добавлять в списки отображения SWF ; вместо этого их необходимо создавать с помощью ActionScript . [1] [8] : 25
Поскольку Stage3D — это низкоуровневая библиотека, которую может быть утомительно использовать напрямую, на ее основе были построены некоторые высокоуровневые 3D- и 2D-библиотеки, чтобы извлечь выгоду из более высокой производительности, которую она обеспечивает. Неполный список библиотек и игровых движков, использующих ее, включает: Unreal Engine 3, [10] [11] Away3D 4, [5] CopperCube , [12] Flare3D , [13] Starling , [14] : vii ND2D или Adobe Labs' Proscenium. [15] Аналогично, 3D-приложения WebGL могут быть созданы с помощью three.js , высокоуровневой библиотеки, похожей на эти. [5] Away3D и Starling были окрещены как официальные компоненты Adobe Gaming SDK. [16] [17]
История
В 2011 году был выпущен Flash Player 11, а вместе с ним и первая версия Stage3D, обеспечивающая ускоренный на GPU 3D-рендеринг для Flash-приложений и игр на настольных платформах, таких как Microsoft Windows и Mac OS X. [1]
В марте 2012 года был выпущен Flash Player 11.2, который включил поддержку Stage3D/GPU на платформах Android и iOS. Игры, использующие API Stage3D, будут работать без изменений на этих мобильных платформах. [18]
В июне 2012 года был выпущен Flash Player 11.3, обеспечивающий прогрессивную потоковую передачу текстурных карт Stage3D, что обеспечивает более высокую производительность и время запуска игр и приложений, использующих Stage3D. [18]
В августе 2012 года был выпущен Flash Player 11.4, который увеличил количество поддерживаемых видеокарт с аппаратным ускорением до 2006 и разрешил использовать альфа-каналы для сжатых текстур Stage3D. [18]
В марте 2012 года Adobe объявила, что Stage3D станет частью премиум-функций Flash Player (начиная с версии Flash Player 11.2) и, таким образом, не будет полностью бесплатным для разработчиков, а будет основан на схеме распределения доходов. [19] [20] Различные известные члены сообщества Flash возражали против этого изменения, называя его «налогом на скорость». [19]
В январе 2013 года компания Adobe классифицировала все премиум-функции как общедоступные и могла свободно использоваться в приложениях Flash без необходимости получения лицензии или роялти от разработчиков или издателей. [2]
В сентябре 2012 года был выпущен Flash Player 11.4, позволяющий играм ориентироваться на «ограниченные профили», включающие старые графические чипы, которые не поддерживали все функции Stage3D. [21]
В апреле 2013 года был выпущен Flash Player 11.7, который поддерживал 16-битные текстурные карты для контента Stage3D, что позволило сократить использование памяти и улучшить управление памятью. [18]
В июле 2013 года был выпущен Flash Player 11.8, который увеличил максимальный размер текстурной карты до 4096 x 4096, в дополнение к поддержке прямоугольных (неквадратных) текстурных карт для контента Stage3D. Это позволило повысить детализацию текстурных карт и создать более крупные текстурные атласы, обеспечивающие лучшую производительность. [18]
Начиная с 2014 года, ускорение GPU было удалено в Flash Player 11.8 и выше для скриптов Pixel Bender. Pixel Bender была старой технологией для написания высокопроизводительных фильтров обработки изображений на базе CPU. Это нарушило ряд менее обеспеченных проектов, включая Scratch MIT , которые не смогли найти рабочую силу для быстрого перекодирования своих приложений. [22] [23]
Функции
Stage3D состоит из следующих компонентов:
- Unified API — унифицированный API ActionScript 3 для управления памятью текстур, затенением вершин, затенением пикселей и рендерингом сеток. Прозрачно выполняется с использованием OpenGL (на Mac OS X и Linux ) и DirectX (на Microsoft Windows ).
- Ускоренный рендеринг на GPU — интегрированная поддержка графических карт производства NVidia, AMD и Intel, [3] Черный список для несовместимых графических карт.
- Ускоренный рендеринг ЦП — интегрированный резервный программный рендерер с использованием SwiftShader для систем с отсутствующими или несовместимыми видеокартами.
- AGAL (Adobe Graphics Assembly Language) — язык для написания шейдеров (программ, работающих на графическом процессоре), которые можно преобразовать в шейдеры OpenGL GLSL и шейдеры DirectX HLSL с помощью Flash Player.
- ATF (Adobe Texture Format) — формат текстур , позволяющий преобразовывать текстуры в соответствующие форматы текстур, зависящие от платформы, например DXT на Windows и MacOS, PVRTC на iOS. [14] : 47–48 [24]
Stage3D поддерживается следующими компонентами:
- XC API — «премиум-функции» для Flash Player, состоящие из высокоскоростных кодов операций манипулирования памятью (известных как «Alchemy» ) и API Stage3D.
- CrossBridge — набор инструментов для кросс-компиляции, позволяющий компилировать 3D-игры или игровые движки на базе OpenGL для запуска во Flash Player.
- Adobe Scout — визуальный профилировщик для Flash-контента, работающего на настольном компьютере или мобильном устройстве. Scout обеспечивает глубокое профилирование контента Stage3D с помощью следующих интегрированных функций: [25]
- Предварительный просмотр Stage3D — просмотр текущего заднего буфера исполняемого содержимого Stage3D [25]
- Запись Stage3D — захват каждой команды Stage3D, выполняемой Flash-контентом, и ее повторное воспроизведение/пошаговое выполнение выполненных команд [25]
- Использование памяти графического процессора — профилирование использования памяти текстур с разбивкой в реальном времени [25]
- Редактор программ Stage3D — Интерактивно изменяйте записанные команды Stage3D и смотрите, как это влияет на рендеринг. Редактируйте код AGAL для вершинных и фрагментных программ, выполняемых каждым вызовом отрисовки. [25]
АГАЛ
Adobe Graphics Assembly Language (AGAL) — язык ассемблера для написания шейдеров графических процессоров . [26] AGAL был изобретен Adobe для предоставления унифицированного языка шейдеров для всех платформ. [26] Программы AGAL пишутся вручную с использованием низкоуровневых кодов операций и регистров . [26] Программы AGAL компилируются в байт-код, который затем встраивается в фильмы Flash SWF . [26] Этот байт-код AGAL автоматически компилируется в шейдеры OpenGL GLSL и шейдеры DirectX HLSL с помощью Adobe Flash Player , в зависимости от платформы. [26]
С помощью AGAL разработчики могут писать шейдеры, которые преобразуют 3D-модели на GPU ( вершинный шейдер ), и шейдеры, которые визуализируют сложные динамические эффекты освещения на GPU ( пиксельный шейдер ). AGAL также позволяет выполнять высококачественную визуализацию текстур с помощью mip-текстурирования . [ 27] AGAL широко используется в игровых движках Flash , таких как Away3D и Flare3D, для различных эффектов. AGAL обычно используется для обеспечения динамического освещения , расширенного динамического диапазона (HDR), альфа-маскирования , многопроходного рендеринга, отображения смещения и отображения окружения . [28] [29] Flare3D расширяет AGAL с помощью собственного языка шейдеров, называемого FLSL (FLare3D Shader Language), который упрощает написание программ шейдеров. [29] HLAG — еще один пример высокоуровневого языка шейдеров, который компилируется в AGAL. [30]
При портировании 3D-видеоигр на C++ для воспроизведения в Adobe Flash Player разработчики должны перевести традиционные шейдеры HLSL и GLSL в AGAL. [31] Код видеоигры на C++ можно преобразовать в совместимый с Flash код с помощью CrossBridge .
Смотрите также
Ссылки
- ^ abcde Joseph Labrecque (2011). Что нового во Flash Player 11. O'Reilly Media, Inc. стр. 17. ISBN 978-1-4493-1110-0.
- ^ ab Adobe Premium Features для Flash Player, Центр разработки Flash Player, Adobe
- ^ ab Stage3D неподдерживаемые чипсеты, драйверы, Flash Player 11, AIR 3, Adobe Help
- ^ Мэтт Фишер (2013). HTML5 для разработчиков Flash. Packt Publishing Ltd. § Stage3D против WebGL, стр. 91. ISBN 978-1-84969-333-2.
- ^ abc "Производительность Stage3D против WebGL — Airtight Interactive". Airtightinteractive.com. 2011-10-28 . Получено 2014-08-04 .
- ^ Джозеф Лабрек (2011). Что нового в Adobe AIR 3. O'Reilly Media, Inc. стр. 17–26. ISBN 978-1-4493-1108-7.
- ^ Реми Арно (2011). «3D в веб-браузере». В Эрик Лендьел (ред.). Game Engine Gems 2. CRC Press. стр. 207–212. ISBN 978-1-56881-437-7.
- ^ аб Кристер Кайтила (2011). Adobe Flash 11 Stage3D (Molehill) Руководство для начинающих по программированию игр . ISBN Packt Publishing Ltd. 978-1-84969-169-7.
- ^ "Что такое AGAL | Adobe Developer Connection". Adobe.com. 2011-10-10 . Получено 2014-08-04 .
- ^ Вагнер Джеймс Ау (2012). Секреты игрового дизайна . John Wiley & Sons. стр. 130. ISBN 978-1-118-46391-8.
- ^ "Adobe Flash 11 использует Unreal Engine 3 для улучшения браузерных игр | The Verge". theverge.com. 7 октября 2011 г. Получено 04.08.2014 .
- ^ "Tools Spotlight: CopperCube 4.0". MCV . evelop-online.net. 2014-05-28 . Получено 2014-09-22 .
- ^ Кит Глэдстиен (2013). Разработка Flash-игр в социальном, мобильном и 3D-мире . Cengage Learning. С. 383–421. ISBN 978-1-4354-6021-8.
- ^ ab Thibault Imbert (2012). Знакомство со Старлингом . O'Reilly Media, Inc. ISBN 978-1-4493-2089-8.
- ^ Рекс ван дер Спай (2012). Основы игрового дизайна с ActionScript 3.0. Apress. стр. 641. ISBN 978-1-4302-3993-2.
- ↑ Тибо Имбер (4 декабря 2012 г.) Знакомство с инструментами разработчика игр (Gaming SDK, Adobe Scout, FlasCC)
- ^ "Adobe Gaming SDK". creative.adobe.com . Получено 2014-08-04 .
- ^ abcde Adobe Flash Roadmap, Adobe
- ^ ab И затем появились премиум-функции Архивировано 2015-02-05 в Wayback Machine , ASV Guy Blog
- ^ Обновление: Премиум-функции для Flash Player, Adobe AIR и FP Блог
- ^ Имбер, Тибо. «Представляем Flash Player 11.4/AIR 3.4 beta!». ByteArray.
- ^ "Stage3D". scratch.mit.edu . Получено 2014-08-05 .
- ^ Adobe Flash Player 11.8 - Ошибка 3591185: производительность шейдера Pixel Bender резко упала в FP11.8. Закрыто как "NeverFix" Архивировано 22.04.2014 на Wayback Machine
- ^ "Сжатые текстуры Stage3D – Знакомство с ATF SDK - ByteArray.org". bytearray.org . Получено 2014-08-04 .
- ^ abcde Начало работы с Adobe Scout, Adobe Developer Connection
- ^ abcde Что такое AGAL, Adobe Developer Connection
- ^ Mip-текстурирование для более гладких текстур в Stage3D, Adobe Developer Connection
- ^ Сессия: Flash to the Max! Высокопроизводительная 3D-графика в Silent Hunter Online, GDC Europe 2013
- ^ ab FLSL, Flare3D Wiki
- ^ HLAG в настоящее время находится в стадии альфа-тестирования, веб-сайт инструмента HLAG
- ^ Crytek, Silent Hunter Online рассказывают о последних дополнениях к GDC Europe 2013, Gamasutra , «Движок рендеринга консоли C++ в Adobe Flash с использованием Actionscript/Stage3D и AGAL для графических эффектов, таких как рендеринг океана»
Внешние ссылки
- Статьи Stage3D на сайте Adobe Developer Connection
- "Разработка 3D-игр для Flash и видеоигр". adobe.com . Получено 2014-08-04 .
- "Как работает Stage3D". adobe.com . Получено 2014-09-17 .
- «Создание 3D Flash-игры с помощью Flare3D и Stage3D». adobe.com . Получено 17.09.2014 .
- «Создание 3D-игр и приложений с помощью Away3D 4 и Stage 3D». adobe.com . Получено 2014-09-17 .
- "Что такое AGAL". adobe.com . Получено 2014-09-17 .
- «Быстрое и простое добавление 3D-контента в вашу Flash-игру». adobe.com . Получено 17.09.2014 .
- "Представляем фреймворк Starling 2D". adobe.com . Получено 2014-09-17 .
- "Вершинные и фрагментные шейдеры". adobe.com . Получено 2014-09-17 .
- "Mip-текстурирование для более гладких текстур в Stage3D". adobe.com . Получено 2014-09-17 .
- "Игровые движки Stage 3D". adobe.com . Получено 2014-09-17 .
- «Начало работы с Adobe Scout». adobe.com . Получено 2014-09-17 .
- «Компиляция игр OpenGL с помощью компилятора Flash C++ (FlasCC)». adobe.com . Получено 2014-09-17 .
- Инструменты перевода из OpenGL и GLSL :
- "adobe/GLS3D · GitHub". github.com . Получено 2014-08-04 .
- "adobe/glsl2agal · GitHub". github.com . Получено 2014-08-04 .