А, и G-буфер тоже получается, то что до освещения делается.
betauser
Да, можно командные буферы для частей фрейма записать паралелльно в разных потоках, а потом отправить на исполнение в нужном порядке. Фрейм граф позволяет это автоматизировать - приложение задает, что нужно сделать (например, нарисовать каскады, g-буфер и т.п.), входы/выходы для каждой задачи и всякие параметры, а фрейм граф сам распределяет их по потокам.
betauser
> Это основные продающие критерии при сравнении.
Метал за деньги не мешает?
GLoom
> > Это основные продающие критерии при сравнении.
> Метал за деньги не мешает?
"продающие критерии" это мысль про "причины выбора". Не финансист, мнение такое, что на коммерческие/закрытые платформы почему бы и не продавать. При выборе лучше сразу знать что по чем, "please contact us for details." - скорее всего не получится осилить связаться узнать, проще искать дальше.
Еще, наверное, можно продавать дополнительные сильно продвинутые фичи, виджеты потому что цельно, как часть чего-то большего.
betauser помню когда то у вас движок был на Ogre3D. Почему отказались от него?
betauser
> betauser помню когда то у вас движок был на Ogre3D. Почему отказались от него?
По причинам выбора, например, из-за отсутствия мультипоточности. Ну, Ogre3D он уже не развивается, архитектурно он для тех еще старых GPU. Мы его перелопалили постепенно, в новом движке перешли на Bgfx. У Bgfx тоже есть нюансы, например, сейчас нет множества потоков, которые как понял есть в Diligent. Рей-трейсинга тоже еще нет.
assiduous
Выглядит интересно. Однако удивило, что не поддерживается многооконность (несколько swapchain) для OpenGL-устройства. Наличие многооконности для меня является решающим фактором.
Есть ли какой-нибудь workaround?
Позапускал в релизе примеры. В большинстве из них DX11 выдавал больший fps, чем другие бэкэнды.
> Однако удивило, что не поддерживается многооконность (несколько swapchain) для OpenGL-устройства
Почему OpenGL является объектом интереса, когда Diligent поддерживает 4 нормальных низкоуровенвых API? Мы поддерживаем OpenGL исключительно ради OpenGLES3.0 на очень старых Андроидах и для WebGL. В остальных случаях смысла использовать OpenGL нет никакого.
> В большинстве из них DX11 выдавал больший fps, чем другие бэкэнды.
Большинство примеров очень простые, и преимущества DX12/Вулкана негде применить. Кроме того, DX11 создает скрытый поток в котором происходит запись команд. В DX12 и Вулкане запись команд происходит непосредственно в том же потоке, что будет несколько медленнее.
Астероиды - пример, который демонстрирует преимущества ДХ12 в bindless режиме и многопоточной записи.
assiduous
> Почему OpenGL является объектом интереса, когда Diligent поддерживает 4
> нормальных низкоуровенвых API? Мы поддерживаем OpenGL исключительно ради
> OpenGLES3.0 на очень старых Андроидах и для WebGL. В остальных случаях смысла
> использовать OpenGL нет никакого.
OpenGL все еще необходим для совместимости с видеокартами предыдущего поколения.
Если например на винде можно обойтись DX11, то в Linux GL-ю альтернативы нет.
0xc0de
Почему нельзя обновить Линукс до версии, поддерживающей Вулкан?
В любом случае, инициализация GL контекста на Линуксе требует хэндла окна - создать своп чейн отдельно от контекста нельзя.
assiduous
> Почему нельзя обновить Линукс до версии, поддерживающей Вулкан?
Не все видеокарты поддерживают вулкан. Например для видеокарт с архитектурой fermi нет драйверов с поддержкой вулкана, но, тем не менее, есть драйвера, которые держат opengl аж версии 4.6.
assiduous
> создать своп чейн отдельно от контекста нельзя
Один свопчейн на контекст было бы достаточно + расшарить контексты, чтобы были доступны ресурсы во всех контекстах. Ресурсы, которые расшарить нельзя (vao, framebuffer) - при необходимости скрыто дублировать внутри api.
0xc0de
> Не все видеокарты поддерживают вулкан. Например для видеокарт с архитектурой
> fermi нет драйверов с поддержкой вулкана, но, тем не менее, есть драйвера,
> которые держат opengl аж версии 4.6.
Тогда пусть горят в аду с этим OpenGL старьём :)
0xc0de
> Один свопчейн на контекст было бы достаточно + расшарить контексты, чтобы были доступны ресурсы во всех контекстах. Ресурсы, которые расшарить нельзя (vao, framebuffer) - при необходимости скрыто дублировать внутри api.
На Линуксе инициализация контекста (во всяком случае в xlib) возможна только одновременно с созданием окна. Приаттачить новый контекст к окну - я не знаю как. Кроме того, каждый контекст имеет свой глобальный стейт и только один контекст может быть активен в потоке. Поэтому как рендерить в разные окна из одного потока без дублирования всех команд - я тоже не знаю. В итоге, сделать реализацию многооконности (как и многопоточности) в OpenGL можно только через нагромождение хаков - поэтому ни того ни другого нет.
0xc0de
> Например для видеокарт с архитектурой fermi нет драйверов с поддержкой вулкана
забавно - ведь dx12 там есть?
innuendo
> забавно - ведь dx12 там есть?
Я столкнулся на своем старом ноуте, с radeon HD 6800M. 12й дайрект есть, а вулкана - нет.
Тема в архиве.