Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / OpenCL в игровом движке

OpenCL в игровом движке

Daniil PetrovПостоялецwww10 июля 20186:09#0
У меня такой вопрос: для большинства нужд игрового движка хватит Khronos OpenCL?
Если да, то будет ли оно в будущем работать и с Vulkan? Уж больно не хочется использовать OpenCL от Nvidia / Intel / AMD.
Требуется в основном физика систем частиц, ну и не знаю, для чего он ещё может требоваться в игровых движках.
/A\Постоялецwww10 июля 20189:20#1
Daniil Petrov
Лучше компьют шейдеры для GL/DX/Vulkan, их проще синхронизировать с графическим апи.
Но если нет необходимости синхронизировать данные на гпу, то сойдет и OpenCL 1.2 более свежие уже не поддерживаются нвидиа.
Еще из-за чего лучше OpenCL/CUDA - лучше точность флоатов, например у меня в одном и том же коде OpenGL может выдать NaN, а OpenCL и C++ код дают одинаковый результат, но это настраивается флагами компиляции и хорошая точность явно снижает производительность.
Daniil PetrovПостоялецwww10 июля 20189:48#2
/A\
> Лучше компьют шейдеры для GL/DX/Vulkan, их проще синхронизировать с графическим апи.
Кто-то говорил, что OpenCL лучше, но я думаю, что вычислительные шейдеры в плане совместимости с GAPI проще. А как по возможностям?
/A\Постоялецwww10 июля 201812:06#3
Daniil Petrov
У OpenCL/CUDA чуть больше возможностей для распараллеливания, больше специальных математических функций, они хорошо подходят для точных расчетов.
Но у OpenCL/CUDA нет шаринга с Vulkan. OpenCL 1.2 сильно устарел, так что для нвидиа придется использовать CUDA.
Если это домашний проект, то лучше всего взять одно апи и использовать его.
Daniil PetrovПостоялецwww10 июля 201812:21#4
/A\
> Если это домашний проект, то лучше всего взять одно апи и использовать его.
Для нужд разработки игр вычислительных шейдеров хватит? Либо до уровня каких игр хватит, а каких не хватит?
И можно ли использовать OpenCL для других вычислений, но без CUDA, т.е. сам по себе?

Правка: 10 июля 2018 12:51

/A\Постоялецwww10 июля 201813:13#5
Daniil Petrov
> Либо до уровня каких игр хватит, а каких не хватит?
Это больше зависит от разработчиков, чем от апи.
Синхронизации GL с CL нужно делать и там можно ошибиться, отлаживать это сложно.
Громадные шейдеры CL компилирует лучше, а с GL я раньше мучался с компиляцией.
Для простых симуляций хватит компьют шейдеров, а вот как только перестанет хватать надо экспериментировать с другими апи.

> И можно ли использовать OpenCL для других вычислений
Он для это этого и предназначен)

Daniil PetrovПостоялецwww10 июля 201814:06#6
/A\
Буду тогда отдельно осваивать вычислительные шейдеры и OpenCL, и уже на практике делать выбор.

> Громадные шейдеры CL компилирует лучше, а с GL я раньше мучался с компиляцией.
Шейдеры я теперь компилирую в GL версию SPIR-V. Разница есть?

Правка: 10 июля 2018 14:07

/A\Постоялецwww10 июля 201814:12#7
Daniil Petrov
> Шейдеры я теперь компилирую в GL версию SPIR-V. Разница есть?
Раньше у меня SPIRV работал еще хуже чем нвидиевский компилятор GLSL, сейчас вроде все компилирует как надо.
У меня сразу несколько апи поддерживается, так удобнее находить баги связаные с особенностью апи.
Daniil PetrovПостоялецwww10 июля 201815:17#8
/A\
И напоследок нубский вопрос ))) а OpenCL (в моём случае от Khronos) сам по себе программный или аппаратный?
Если, например, использовать его чисто для физики :) ну и не связывать с GAPI.

Правка: 10 июля 2018 15:18

/A\Постоялецwww10 июля 201815:54#9
Daniil Petrov
> а OpenCL (в моём случае от Khronos) сам по себе программный или аппаратный?
Это тоже самое что OpenGL: khronos дает хэдеры, а вендоры пишут либу.
OpenCL даже на цпу можно запускать.
MAMOHT-92Постоялецwww11 июля 201814:19#10
еще openCL можно на встройке запустить, интеловской.

Правка: 11 июля 2018 14:19

Daniil PetrovПостоялецwww12 июля 20186:56#11
Я тут поковырялся и пришёл к выводу, что для движка действительно лучше использовать вычислительные шейдеры, а для редактора уже использовать чисто CUDA.
А OpenCL как-то получается и ни туда, и ни сюда... да и для игрового движка OpenCL = слишком экзотическая технология.

/ Форум / Программирование игр / Общее

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