Показаны сообщения с ярлыком molehill. Показать все сообщения
Показаны сообщения с ярлыком molehill. Показать все сообщения

воскресенье, 15 января 2012 г.

Nape и Starling вместе? Это возможно!

Привет, друзья!

Некоторые из вас уже наверняка пробовали использовать быстрейший flash 2D физический движок Nape вместе с GPU 2D фреймворком Starling и заметили, что свойство Body.graphic является flash.display.DisplayObject и не может быть приравнено к экзмепляру starling.display.DisplayObject.

В итоге, некоторые просто использовали более медлительный Box2D, некоторые самостоятельно контролировали отрисовку физических тел в виде DisplayObject’ов движка Starling, вожможно, некоторые даже сделали то же самое, что сделал я, но никому не показали. Мне нравится свойство Body.graphic — оно очень удобное и мне хотелось бы помочь всем as3 разработчикам использовать его в полную силу и для DisplayObject’ов Starling’а.

Представляю вашему вниманию модифицированные swc движка Nape (release и debug) Milestone 7.2 «r3″ для FP 10+, (возможно, не полностью) совместимые со Starling.

Всё, что я там изменил — заменил класс Body.graphic flash.display.DisplayObject на Dynamic (* в as3) и удалил конвертацию в градусы свойства Body.graphic.rotation. В моём случае, этого было достаточно.
Теперь я могу использовать Nape как обычно, с обычными DisplayObject’ами, что очень здорово!
Да, там наверняка есть ещё какие-нибудь несовместимые вещи со Starling, но в моём случае Nape работает без ошибок и проблем не возникает.

Качайте и используйте эти swc со Starling в своё удовольствие!
debug swc
release swc

Мне понравилось приключения с компиляцией caxe и flib под Windows в MinGW, это было здорово!
Чтобы скомпилировать swc под Windows, надо: [...]

Читать дальше: Nape и Starling вместе? Это возможно!

суббота, 15 октября 2011 г.

Пишем шейдер на AGAL

Ни для кого уже не секрет, что Flash Player 11 имеет поддержку GPU ускорения графики. Новая версия вводит Molehill API позволяя работать с видеокартой на достаточно низком уровне, что с одной стороны даёт полную волю фантазии, с другой требует более глубокого понимания принципов работы современной 3D графики.

В данной статье речь пойдёт о языке написания шейдеров – AGAL (Adobe Graphics Assembly Language). Предполагается, что читатель знаком с базовыми основами современной realtime 3D графики, а в идеале – имеет опыт работы с OpenGL или Direct3D. Для остальных же проведу небольшой экскурс:

  • в каждом кадре всё рендерится заново, подходы с частичной перерисовкой экрана крайне нежелательны
  • 2D – частный случай 3D
  • видеокарта способна растеризовать треугольники и ничего кроме
  • треугольники строятся на вершинах
  • каждая вершина содержит в себе атрибуты (координата, нормаль, вес и др.)
  • порядок задания вершин в треугольнике определяется индексами
  • данные вершин и индексов хранятся в вершинном и индексном буферах соответственно
  • шейдер – программа выполняемая видеокартой
  • каждая вершина проходит через вершинный шейдер, а каждый пиксель при растеризации через фрагментный (пиксельный)
  • видеокарта не умеет работать с целыми числами, но отлично работает с 4D векторами

Синтаксис
В текущей реализации AGAL используется обрезок Shader Model 2.0, т.е. фитчелист железа ограничен 2005 годом. Но стоит помнить, что это ограничение лишь возможностей шейдерной программы, но никак не производительности железки. Возможно, в будущих версиях Flash Player планка будет поднята до SM 3.0, и мы сможем рендерить сразу в несколько текстур и делать текстурную выборку прямо из вершинного шейдера, но учитывая политику Adobe, случится это не раньше выхода следующего поколения мобильных устройств.

Любая программа на AGAL является по сути низкоуровневым языком ассемблера. Сам по себе язык очень простой, но требует изрядной доли внимательности. Код шейдера представлен набором инструкций вида: [...]

Читать дальше: Пишем шейдер на AGAL