Renderscript в помощь разработчику 3D-приложений

Февраль 13, 2011 | Рубрика: Новости, Программы |

Похоже, что Android Honeycomb дает жизнь не только настоящим планшетам на Android, но и новым революционным технологиям, что были применены при его разработке. Мы уже рассказывали про Fragments API — инструмент позволяющий разработчику создавать устройство-независимые многоколоночные приложения. Сейчас же мы рассмотрим Renderscript, который по сути является новым API, позволяющим разработчикам 3D-приложений использовать всю вычислительную мощь устройства, создавая при этом код, который не будет зависеть от модели процессора, как если бы он создавался с помощью NDK.

Renderscript включает в себя три инструмента, что дадут возможность разработчику достигнуть своей цели: новый API чем-то напоминающий CUDA, простой API для рендеринга 3D-изображений и язык C99(диалект C). В системных приложениях Android Honeycomb уже использован Renderscript, это и новые обои рабочего стола, что вы могли видеть в роликах, и различные приложения от Google, такие как новые Books и Youtube. Вы видели, как там быстро идет отрисовка 3D, а ведь по сути своей приложения довольно тяжелые. И еще раз повторюсь, все приложения, что созданы с помощью Renderscript будут исполняться на процессорах любого производителя.

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

Введение в Renderscript

Renderscript — это важная особенность Honeycomb, которая не обсуждалась ранее. Всего будет две статьи, эта — простой обзор Renderscript, следующая же будет содержать больше технических подробностей и простой пример.

Renderscript — это новый API, направленный на высокую производительность при 3D рендеринге и сложных вычислительных операциях. Renderscript будет интересен разработчикам, пытающимся максимизировать производительность их приложений и чувствующим себя комфортно при работе на низком уровне. Для разработчиков доступны три инструмента: простой API для 3D рендеринга, поддерживающего аппаратное ускорение, API для моделирования сложных вычислений (похожий на CUDA), и язык стандарта близкого к C99.

Renderscript уже использовался ранее для создания новых, более красивых визуально, приложений Books и YouTube. Также, он уже использовался для написания живых обоев, поставляемых с Honeycomb.

Улучшение производительности достигается путем выполнения нативного кода на устройстве. Однако, в отличии от NDK, это решение кроссплатформенно. Язык разработки для Renderscript — это C99 с некоторыми расширениями, во время процесса разработки, он компилируется в аппаратно-независимом промежуточном формате и размещается в пакете приложения. Когда приложение запускается, то скрипт компилируется в машинный код и оптимизируется. Это позволяет избежать проблем, связанных с необходимостью выбирать какую-то определенную машинную архитектуру.

Renderscript не предназначен для замены существующего высокоуровневого API, его следует использовать в тех случаях, когда текущая необходимость в производительности не обеспечивается с помощью API.

Может показаться интересным, что ранее ничего не говорилось о том, где выполняется код — на GPU или CPU. Причина в том, что это определяется на устройстве во время выполнения. Когда есть соответствующая аппаратная поддержка, то простые скрипты могут выполняться на GPU в качестве небольшой вычислительной нагрузки. Более сложные скрипты запускаются на CPU (или на нескольких CPU). Роль CPU в данном случае также заключается в том, чтобы обеспечить резерв, если нет дополнительной аппаратной поддержки в виде подходящих GPU. На самом деле, всё это должно быть незаметно для разработчика. Вообще, в дальнейшем простые скрипты смогут запускаться во многих местах, но пока всё что нужно на практике — распределить нагрузку между несколькими CPU, поддерживаемыми на устройстве.

Это видео получено перехватом изображения с HDMI выхода планшета на Honeycomb. Оно показывает Renderscript в работе. Здесь мы представляем «брутфорсную» реализацию физики для 900 частиц. Вычислительный скрипт запускает каждый кадр картинки и автоматически использует преимущество двух ядер. Как только симуляция физики завершается, второй графический скрипт рендерит изображение. В видео мы толкаем одну из больших частиц, для того чтобы показать их взаимодействие. После этого, наклоняем планшет, чтобы часть работы за нас сделала гравитация. Весь этот процесс демонстрирует неплохую вычислительную мощь нового процессора A9.

На Honeycomb мы перешли с GL ES 1.1 на 2.0 в качестве рендера для Renderscript. С версией 2.0 мы смогли добавить программную поддержку шейдеров, загрузку 3D моделей, и более эффективное управление памятью. Однако, самое важное изменение — это то, что Renderscript и сопутствующие инструменты теперь общедоступны.

Скриншот демонстрирует одно из наших тестовых приложений. Приложение реализует трехмерную сцену, которая демонстрирует рекурсивный вызов скриптов. Андроиды, изображенные на скриншоте, загружаются из A3D файла, созданного в Maya и транслированного из файла Collada. A3D — это формат для хранения объектов Renderscript на устройстве.

habrahabr.ru


Обратите внимание:

Комментировать

Мы ищем авторов

Нужны люди, которые смогут писать (переводить), новости, обзоры, статьи про Андроид и публиковать у нас на сайте. По всем вопросам стучим в ICQ:365-820-030.

Подпишитесь на обновления

Введите ваш e-mail:

Delivered by FeedBurner


Подписка через RSS

Хорошая реклама!

Рубрики

Мы ВКонтакте!

Архивы

Управление

Android в фотографиях

    Rain drop keep falling on my headAFS-120046aquatic pulmonate gastropod mollusks - ramshorn snailsNot Bad For One Afternoon...Digital LED ClockBeFunky Vintage 1 on AndroidLuzern bridge (classic view)Digital LED Clocktrio