Stage3D / AGAL с нуля. Часть 1 – Азы

Добрый день, дорогие друзья.

В сети до сих пор довольно мало туториалов Stage3D / AGAL, а тем более на русском, поэтому я решил сделать несколько переводов статей об этом замечательном инструменте. Сегодня мы взглянем на гранит, который предстоит грызть, но к процессу пока не приступим. Под катом некоторое количество вводной информации по Stage3D / AGAL.

Итак, AGAL


Мы все видели эти поразительные вещи, на которые способен Stage3D, возможно вы даже копались в коде примеров Away3D и компилировали их.

Во время работы с Away3D для моих первых экспериментов, я чувствовал разочарование из-за отсутствия возможности работать с чем-то большим, чем просто кубы, сферы и стандартные примитивы. Конечно же это было связано с недостатком навыков в сфере 3d моделирования.

Потом вышли Starling и ND2D, и тогда мы начали понимать, что Stage3D — это отличный инструмент для покорения сотен спрайтов, частиц и анимаций без потери производительности.

Но нужно смотреть правде в глаза: если вы хотите понимать как работают эти вещи, для того-ли, что бы усовершенствовать их, или просто использовать с наибольшей эффективностью, вам придутся копнуть глубже и разобраться с низкоуровневым API, которое Adobe предоставила нам в Stage3D.

Как и большинство людей, я начал с простого примера «Hello Triangle». И все. На этом и заканчивалась вся информация, пришлось копать.

В следующих 3-4 постах я расскажу об основах и принципах работы со Stage3D, и конечно же постараюсь показать чуть больше, чем просто трехцветный треугольник.

Программируем под Flash Player 11


Для начала, нам нужно настроить среду разработки так, что бы компилировать под Flash Player 11. Я использую FDT, вы можете последовать за мной, или использовать любую другую среду разработки как Flash Develop или Flash Builder.

На эту тему уже написано не мало статей, потому я просто приведу ссылки для разных IDE.
(на английском)

Все ссылки были найдены на Regart.net.

Удостоверьтесь, что можете компилировать с доступом к Context3D, прежде чем двигаться дальше.

Stage3D: Что он из себя представляет и чем не является


Я замечаю, что множество флеш-разработчиков были разочарованы первым знакомством со Stage3D. Adobe обещали настоящее 3D во флеше, а все, что мы имеем, это AGAL. Какие-то цифры, нет камеры, нет Scene3D, нету даже атрибута z для трехмерных объектов.

Stage3D занимается всего одной вещью, но качественно. Stage3D всего лишь дает вам возможность загрузить какое-то количество информации, текстур и программу для выполнения в видеокарту. И все.

Чем Stage3D не является, так это 3D движком. 3D движок позволяет вам работать с полигональными сетками, материалами, светом, камерами и другими подобными объектами. На основе Stage3D уже работает достаточно много движков, как Away3D 4.x, Alternativa 3D, Minko, Unreal Engine и Unity 3D Engine.

«Все, все понятно, теперь мы хотим наконец узнать что-то новое», правильно? Тогда продолжайте читать.

Основные термины


Как и в каждой сфере, здесь необходимо знать некоторую терминологию, что бы двигаться дальше. Я приведу только самые простые и объясню подробнее более сложные вещи.

GPU: Graphical Processing Unit (графический процессор). Очевидно, видеокарта.
Видеопамять (V-Ram): Память видеокарты.
Буфер (Buffer): Занятое видеопамяти место.
Вершина (Vertex): Точка в 3D пространстве.
Fragment : Пока ограничимся определением «цвет пикселя»
Шейдер (Shader): Это часть программы. Они разделяются на 3 типа: Вершинные шейдеры (Vertex Shader), Пиксельные шейдеры (Pixel Shader / Fragment Shader), Геометрические шейдеры (Geometry Shader) (3й пока не доступен)
Программа (Program): Совокупность вершинного и пискельного шейдеров.

Это все на сегодня.

Далее мы рассмотрим и постараемся понять анатомию программы в Stage3D и напишем наш первый треугольник с использованием графического ускорения.

Оригинал: Stage3D/AGAL from scratch. The Basics.
Автор оригинала: Norbz.
Перевод: MidnightOne.

Примечание переводчика: Norbz уже написал 7 достаточно подробных и качественных статей в своём блоге. Это была первая. Если вам интересно, я смогу перевести все остальные.

PS: Надо ввести блог «Stade3D», а пока публикую в «разработку».

Комментарии (17)

+1
Если вам интересно, я смогу перевести все остальные.
Было бы круто.

Спасибо за этот.
+1
Да, однозначно надо продолжение. Спасибо за перевод!
0
если вы хотите понимать как работают эти вещи, для того-ли, что бы усовершенствовать их, или просто использовать с наибольшей эффективностью, вам придутся копнуть глубже и разобраться с низкоуровневым API, которое Adobe предоставила нам в Stage3D.
Совершенно не понимаю как это работает, что не мешает юзать мне «альтернативу» без углубления в дебри Stage3D / AGAL. Имхо статья нужна лишь для «профи», а остальным вполне подойдет любой из движков.
+2
Как раз «профи» эта статья тоже будет неинтересна.
Такие статьи в больше мере полезны экспериментаторам, джедаям, людям с тягой к саморазвитию и прочим любопытным разработчикам, чей интерес в какой-то момент привлечет тема GPU рендера во Flash.
0
И все таки, когда есть куча движков, не вижу смысла учиться писать еще один.
+1
Это не для каждого, это нормально.
0
Я не пишу новый движок, использую nd2d, но посчитал информацию (в будущих постах) чрезвычайно полезной.
0
Да, движков куча, функционал разный, но когда вы останавливаетесь на каком либо движке приходит время (достаточно скоро) когда вам не хватает его функционала, а без общих понятий работы 3D тут никуда.
0
Это касается не только 3Д но и 2Д тоже. Например я когда начал использовать Flixel, т.к. о flash и as3 толком ничего не знал, через какое-то время я начал много в нем переделывать под себя, когда разобрался с языком. И сейчас у меня своя версия flixel, которую я таская за собой из проекта-в-проект.
0
А потом на форуме плодить темы типа «как сделать прозрачную текстуру»? )))
+1
Если автор пишет толково — однозначно стоит перевести! Те статьи, копипастами которых изобилуют интернеты, зачастую написаны людьми, совершенно неспособными доступно преподнести базовый материал в должном объеме ;)
+1
Переводи еще, статья коротковата, ничего еще толком не понятно.
0
странно. я думал тут много людей которые ушли от д3д к флешу. вообще там же все дублирует его функционал. поэтому хз, надо ли об этом писать…
0
странно, откуда такие выводы )
0
Конечно переводи!
0
Очень и очень.
0
Жду продолжения!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.