Войти
ПрограммированиеФорумОбщее

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

#0
6:09, 10 июля 2018

У меня такой вопрос: для большинства нужд игрового движка хватит Khronos OpenCL?
Если да, то будет ли оно в будущем работать и с Vulkan? Уж больно не хочется использовать OpenCL от Nvidia / Intel / AMD.
Требуется в основном физика систем частиц, ну и не знаю, для чего он ещё может требоваться в игровых движках.


#1
9:20, 10 июля 2018

Daniil Petrov
Лучше компьют шейдеры для GL/DX/Vulkan, их проще синхронизировать с графическим апи.
Но если нет необходимости синхронизировать данные на гпу, то сойдет и OpenCL 1.2 более свежие уже не поддерживаются нвидиа.
Еще из-за чего лучше OpenCL/CUDA - лучше точность флоатов, например у меня в одном и том же коде OpenGL может выдать NaN, а OpenCL и C++ код дают одинаковый результат, но это настраивается флагами компиляции и хорошая точность явно снижает производительность.

#2
9:48, 10 июля 2018

/A\
> Лучше компьют шейдеры для GL/DX/Vulkan, их проще синхронизировать с графическим апи.
Кто-то говорил, что OpenCL лучше, но я думаю, что вычислительные шейдеры в плане совместимости с GAPI проще. А как по возможностям?

#3
12:06, 10 июля 2018

Daniil Petrov
У OpenCL/CUDA чуть больше возможностей для распараллеливания, больше специальных математических функций, они хорошо подходят для точных расчетов.
Но у OpenCL/CUDA нет шаринга с Vulkan. OpenCL 1.2 сильно устарел, так что для нвидиа придется использовать CUDA.
Если это домашний проект, то лучше всего взять одно апи и использовать его.

#4
(Правка: 12:51) 12:21, 10 июля 2018

/A\
> Если это домашний проект, то лучше всего взять одно апи и использовать его.
Для нужд разработки игр вычислительных шейдеров хватит? Либо до уровня каких игр хватит, а каких не хватит?
И можно ли использовать OpenCL для других вычислений, но без CUDA, т.е. сам по себе?

#5
13:13, 10 июля 2018

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

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

#6
(Правка: 14:07) 14:06, 10 июля 2018

/A\
Буду тогда отдельно осваивать вычислительные шейдеры и OpenCL, и уже на практике делать выбор.

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

#7
14:12, 10 июля 2018

Daniil Petrov
> Шейдеры я теперь компилирую в GL версию SPIR-V. Разница есть?
Раньше у меня SPIRV работал еще хуже чем нвидиевский компилятор GLSL, сейчас вроде все компилирует как надо.
У меня сразу несколько апи поддерживается, так удобнее находить баги связаные с особенностью апи.

#8
(Правка: 15:18) 15:17, 10 июля 2018

/A\
И напоследок нубский вопрос ))) а OpenCL (в моём случае от Khronos) сам по себе программный или аппаратный?
Если, например, использовать его чисто для физики :) ну и не связывать с GAPI.

#9
15:54, 10 июля 2018

Daniil Petrov
> а OpenCL (в моём случае от Khronos) сам по себе программный или аппаратный?
Это тоже самое что OpenGL: khronos дает хэдеры, а вендоры пишут либу.
OpenCL даже на цпу можно запускать.

#10
(Правка: 14:19) 14:19, 11 июля 2018
еще openCL можно на встройке запустить, интеловской.
#11
6:56, 12 июля 2018

Я тут поковырялся и пришёл к выводу, что для движка действительно лучше использовать вычислительные шейдеры, а для редактора уже использовать чисто CUDA.
А OpenCL как-то получается и ни туда, и ни сюда... да и для игрового движка OpenCL = слишком экзотическая технология.

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