Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Рассчёты на GPU в Unity

Рассчёты на GPU в Unity

Поделиться
Advanced: Тема повышенной сложности или важная.
KnofLПостоялецwww25 мая 201715:48#0
Работаю сейчас над некоторым приложением, использующим текстуры в больших количествах. В некоторые моменты времени бывает необходимо произвести rescale какой-нибудь текстуры. Алгоритм этого дела уже реализован и работает. Но вот у меня возник вопрос, а возможно ли, используя Unity, перевести часть (тяжёлую часть) рассчётов на gpu? То есть, если бы бы не использовать Unity - там всё примерно ясно-понятно, а тут ответа на поверхности не видно.
Может кто-то встречался с таким вопросом, есть на него ответы? Уж больно хочется ускорить работу прилаги.

P.S. Приложение мобильное. Как я понимаю, OpenCL тот же заюзать не выйдет.

Правка: 25 мая 2017 15:52

MiraПостоялецwww25 мая 201716:00#1
KnofL
Компутер шейдеры тоже на мобилах не кате?
Compute shaders in Unity closely match DirectX 11 DirectCompute technology. Platforms where compute shaders work:

Windows and Windows Store, with a DirectX 11 or DirectX 12 graphics API and Shader Model 5.0 GPU
macOS and iOS using Metal graphics API
Android, Linux and Windows platforms with Vulkan API
Modern OpenGL platforms (OpenGL 4.3 on Linux or Windows; OpenGL ES 3.1 on Android). Note that Mac OS X does not support OpenGL 4.3
Modern consoles (Sony PS4 and Microsoft Xbox One)

Правка: 25 мая 2017 16:56

KnofLПостоялецwww25 мая 201717:23#2
Mira
Компутер шейдеры тоже на мобилах не кате?

А вот это интересно.
Спасибо за наводку=)

Правка: 25 мая 2017 17:49

AndreyПостоялецwww25 мая 201721:11#3
KnofL
> P.S. Приложение мобильное. Как я понимаю, OpenCL тот же заюзать не выйдет.
Почему-же?
1) взять eglGetCurrentContext, создать с него OpenCL контекст
2) взять Native texture handle: https://docs.unity3d.com/ScriptReference/Texture.GetNativeTexturePtr.html
3) Использовать функции clEnqueueAcquireGLObjects/clEnqueueReleaseGLObjects для обновления текстуры. Рисовать средствами Unity как обычно.
MiraПостоялецwww25 мая 201721:24#4
Andrey
это тоже возможный путь, но трудоемкий.
и еще в юнити нельзя когда захочется юзать нативный ресурс, нужно вызывать через долбаный калбек асинхронно, после рендера сцены. иначе начинается всякое дерьмо.
и получается костыльный уродский код =/

Правка: 25 мая 2017 21:24

/ Форум / Программирование игр / 2D графика и изометрия

2001—2017 © GameDev.ru — Разработка игр