- PVSM.RU - https://www.pvsm.ru -

Работа с графическими объектами в Android

Работа с графическими объектами в Android
Нажав кнопку «Далее», вы найдете перевод четырех небольших учебных материалов, посвященных различным техникам обработки и генерации изображений в Android; в трех из них имеется исходный код тестовых программ и справочный материал к нему. На наш взгляд, эти пособия могут оказаться полезными всем, кто занимается разработкой приложений и игр под Android.
Под катом находятся следующие статьи:

  • Пример кластеризованного шейдинга в Android
  • Знакомство с RenderScript. Учебное пособие
  • Знакомство с OpenCL для Android. Учебное пособие
  • Тесселяция для OpenGL ES 3.1 на Android

Пример кластеризованного шейдинга в Android

В данном примере [1] для Android реализованы и сравнены несколько техник шейдинга сцен, содержащих множество источников света. Полный исходный код доступен на GitHub [1], его также можно скачать по прямой ссылке [2]. Наиболее эффективный метод, показанный в примере – кластеризованный шейдинг, описанный в данном документе [3]. Данный пример – портированная на Android более продвинутая версия для Windows, доступная для скачивания отсюда [4].
В примере применены следующие методы:

  • Прямой рендеринг. В этом методе сцена рендерится, как обычно, и шейдер фрагментов проходит по всему списку источников света, применяя соответствующие к каждому фрагменту, подлежащему шейдингу.
  • Отложенный шейдинг. В этом методе сцена сначала рендерится в G-буфер, и освещенность вычисляется в процессе пост-процессинга. Шейдер фрагментов проходит по всему списку источников света для каждого фрагмента.
  • Шейдинг четырехугольниками. Это также отложенная техника, но в отличие от предыдущего, каждый источник света рендерится как четырехугольник, вклад каждого суммируется в буфер.
  • Кластеризованный шейдинг. В этом режиме все источники света сначала кластеризуются на трехмерной сетке. Далее сцена растеризуется. Шейдер фрагментов сперва определяет, в какую ячейку сетки попадает данный фрагмент и далее проходит по списку источников света, связанных с этим элементом, суммируя влияние каждого.
  • CS ячейки. Этот метод сочетает отложенный шейдинг и кластеризацию света. Освещение вычисляется шейдером вычислений, который суммирует вклад каждого источника. Заметьте, что эта техника работает только в случае доступности OpenGLES 3.1.

В нашем примере генерируется следующая картинка:

Работа с графическими объектами в Android

В папке примеров имеется два решения для Visual Studio:

  • ClusteredShadingWindows.sln – решение для Windows, которое может быть собрано как обычное приложение Windows
  • ClusteredShadingAndroid.sln – решение для Android. Чтобы его собрать, вам понадобится плагин Visual GDB для Visual Studio. Его можно скачать с сайта visualgdb.com [5].

Если вы не хотите устанавливать Visual GDB, следуйте инструкциям, указанным в файле readme.txt из папки примеров, чтобы собрать его вручную.
Оригинал статьи. [6]

Знакомство с RenderScript. Учебное пособие

Учебное пособие по RenderScript для Android освещает основные принципы использования RenderScript в разработке приложения для Android 4.2.2 и выше.
Основное внимание в пособии уделено RenderScript, его базовому языку и Java API. Поскольку в пособии используется только Java, хотя и существуют нативные C/C++ аналоги для RenderScript API, и поскольку RenderScript использует метод динамической компиляции (JIT), скомпилированное в результате приложение может быть запущено на любом устройстве с нужной версией Android.
Учебное приложение имеет минималистический графический интерфейс, отображающий результаты вычислений и статистику. Оно реализует простой алгоритм обработки полноэкранного изображения, с которым можно взаимодействовать с помощью прикосновений.
Целевая платформа: Эмуляторы и устройства с Android 4.2.2 и выше
Платформа разработки: Любая
Уровень сложности: Новичок

Работа с графическими объектами в Android

Для получения дополнительной информации о примере обратитесь к руководству пользователя, находящемуся внутри тестового архива.
Скачать исходный код [7] / документацию [8].
Оригинал статьи [9]

Знакомство с OpenCL для Android. Учебное пособие

Учебное пособие по OpenCL для Android знакомит с основными принципами использования OpenCL в Android-приложениях. Учебное приложение представляет собой средство интерактивной обработки изображений.
Основное внимание в пособии сосредоточено на том, как использовать OpenCL в Android-приложении, с чего начать писать OpenCL код и как прилинковаться к рантайму OpenCL. Пособие демонстрирует типичную последовательность вызовов OpenCL API и обычный порядок действий для создания простого обработчика изображений с анимацией для устройства OpenCL. Более сложные темы, такие как эффективное совместное использование данных или вопросы производительности OpenCL для Android в данном пособии не рассматриваются.
Уровень сложности: Новичок
Платформа разработки: Любая
Целевая платформа: Устройства с Android 4.2.2 и выше
Целевое устройство: Устройство GPU на устройстве Android
Замечание. Эмулятор Android не поддерживает GPU OpenCL устройство. Чтобы запустить код примера на эмуляторе, измените целевое устройство GPU на CPU путем замены CL_DEVICE_TYPE_GPU на CL_DEVICE_TYPE_CPU в строке 451 файла jni/step.cpp.

Работа с графическими объектами в Android

Для получения дополнительной информации о примере обратитесь к руководству пользователя, находящемуся внутри тестового архива.
Скачать исходный код [10] / документацию [11].
Оригинал статьи [12]

Тесселяция для OpenGL ES 3.1 на Android

В данной статье обсуждается, как реализовать и использовать тесселяцию в OpenGL ES 3 на Android. Тесселяция – аппаратное средство, позволяющее графическому процессору (GPU) динамически подразделять примитивы. Она также позволяет управлять размещением новых вершин.
Обычное использование тесселяции – динамическое масштабирование уровня детализации местности в зависимости от расстояния до камеры. Таким образом высокая четкость плотно триангулированной территории сочетается с хорошей производительностью.
Для поддержки данной техники, шейдеры тесселяции в настоящее время добавлены в DirectX 11 и OpenGL 4.0. OpenGL ES пока не имеет шейдеров тесселяции, однако платформа Intel Bay Trail имеет расширение, позволяющее использовать тесселяцию в OpenGL ES 3.0.
Следующие шаги показывают, как GPU использует тесселяцию для динамического масштабирования местности. Исходная местность состоит из сетки низкого разрешения и текстуры карты высот высокого разрешения.

  1. Шейдер управления тесселяцией подсчитывает расстояние между текущим треугольником и камерой и устанавливает уровень тесселяции в зависимости от вычисленной величины. Чем ближе камера к треугольнику, тем выше уровень тесселяции.
  2. Шейдер вычисления тесселяции добавляет новые вершины треугольников и перемещает их вверх или вниз в зависимости от значений карты высот высокого разрешения.

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

Работа с графическими объектами в Android
Тесселяция выключена

Работа с графическими объектами в Android
Тесселяция включена

OpenGL ES Tessellation [13]
Оригинал статьи. [14]

Автор: saul

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/obrabotka-izobrazhenij/68246

Ссылки в тексте:

[1] данном примере: https://github.com/GameTechDev/ClusteredShadingAndroid

[2] прямой ссылке: https://github.com/GameTechDev/ClusteredShadingAndroid/archive/master.zip

[3] данном документе: http://www.cse.chalmers.se/~olaolss/main_frame.php?contents=publication&id=clustered_shading

[4] отсюда: https://software.intel.com/en-us/articles/forward-clustered-shading

[5] visualgdb.com: http://visualgdb.com/

[6] Оригинал статьи.: https://software.intel.com/en-us/blogs/2014/07/30/clustered-shading-android-sample

[7] исходный код: https://software.intel.com/sites/default/files/managed/18/09/AndroidBasicRenderScript.7z

[8] документацию: https://software.intel.com/sites/default/files/managed/36/bc/AndroidBasicRenderScript_0.pdf

[9] Оригинал статьи: https://software.intel.com/en-us/articles/renderscript-basic-sample-for-android-os

[10] исходный код: https://software.intel.com/sites/default/files/managed/96/fd/AndroidBasicOpenCL.7z

[11] документацию: https://software.intel.com/sites/default/files/managed/d3/18/AndroidBasicOpenCL.pdf

[12] Оригинал статьи: https://software.intel.com/en-us/android/articles/opencl-basic-sample-for-android-os

[13] OpenGL ES Tessellation: https://software.intel.com/sites/default/files/managed/79/e5/OpenGL%20ES%20Tessellation.zip

[14] Оригинал статьи.: https://software.intel.com/en-us/articles/tessellation-for-opengl-es-31-on-android

[15] Источник: http://habrahabr.ru/post/233889/