Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 А что сейчас вместо OpenGL?
Хочу приделать новую рисовалку к языку Factor (он использует OpenGL самых первых версий, даже смешно). Поддержка OpenGL прекращена, велено переходить на Vulkan. Попробовал учить Vulkan, пришёл в восторг. Я помню, OpenGL казался нелепо многословным - чтобы нарисовать чёрный квадрат на белом фоне, понадобилось 200 строк кода. В Vulkan же надо написать несколько сот строк одних настроек, прежде чем начнёшь рисовать! Поняв, что эти люди сошли с ума, стал искать что-нибудь другое. Вот есть WebGPU, который, пишут, можно использовать и без браузера. Правда ли это, хороший ли это выбор? Или есть какие-нибудь секретные рисовалки, ещё лучшие?

 Re: А что сейчас вместо OpenGL?
Аватара пользователя
george66 в сообщении #1724813 писал(а):
Правда ли это, хороший ли это выбор? Или есть какие-нибудь секретные рисовалки, ещё лучшие?


Если вы делаете именно приложение на Factor, то лучше всего, чтобы оно поддерживало Vulkan для кроссплатформенности. Но сейчас никто в здравом уме и трезвой памяти не пишет код на Vulkan, DirectX, Metal, WebGPU и т.д. Обычно используется, что-нибудь более высокоуровневое.

В документации Factor написано, что у него есть поддержка веб -фреймворка. Пример тут:
https://bluishcoder.co.nz/2008/10/11/fa ... k-example/

Тогда лучше связки для быстрой разработки графики: HTML, CSS + Three.js, вряд ли можно найти.

 Re: А что сейчас вместо OpenGL?
Аватара пользователя
george66
OpenGL можно считать мертвым.

Есть старый условно мобильный OpenGL ES, он достаточно простой. Умеет 3d шейдеры и даже вычислительные шейдеры.
Почти все 2D и многие нехардкорные 3D приложения его успешно используют. Ибо нему есть адаптеры поверх DirectX11, Vulkan, Metal - словом, работает оно так или иначе условно везде.

Есть WebGL1/2 - это кастрированный OpenGL ES, но он работает в Web. GLES -> WebGL переносится очень легко, почти автоматически (например, с помощью emscripten). Главный минус WebGL - там нет вычислительных шейдеров, совсем.

Есть D3D11 - в двух словах, это тот же GLES, но мультитредовый, и более свободный по многим критериям. Порог входа +- такой же, чуть больше текста. Работает условно только под Windows.

Ну а потом есть D3D12 - низкоуровневая ступень DirectX, Vulkan - его платформо-независимый аналог. И Metal - параллельная повесть от Apple, его полноценно адаптировать к аналогам этого уровня не получится.

WebGPU - это API их уровня, только для Web с соответсвующими ограничениями. К сожалению, это единственный доступ к вычислительным шейдерам из web.

У Microsoft есть реализация D3D11 поверх D3D12, с помощью которой в целом можно скрестить ужа с ежом - порог входа оставить относительно низким, но при этом использовать с некоторыми ограничениями функционал D3D12 - например, нейросетевой DirectML (в частности, под ONNX), имеющий доступ к тензорным ядрам GPU и всякие интересные низкоуровневые штуки вычислительных шейдеров: например, посчитать сумму всей волны за одну операцию.

Ну и есть еще аппаратная поддержка RayTracing (D3D12, Vulkan, Metal). В web ее нет даже в webGPU

 Re: А что сейчас вместо OpenGL?
bondkim137 в сообщении #1727773 писал(а):
george66
OpenGL можно считать мертвым.

А OpenGL ES кто-то поддерживает? (поддержка OpenGL прекращена). Я разбирался в OpenGL и рисовал на Факторе вращающийся полупрозрачный шар. Так что при необходимости и в Вулкане разберусь, но очень не хочется. WebGPU, как пишут, ещё не устоялась, в каждой версии что-нибудь меняют.

 Re: А что сейчас вместо OpenGL?
Аватара пользователя
george66 в сообщении #1727779 писал(а):
А OpenGL ES кто-то поддерживает?
Нативно - все меньше и меньше. Под капотом на разных ус-вах сидят DirectX, Vulkan и Metal. Драйвера GLES, за редким исключением, производители железа уже не пишут.

Но через адаптеры GLES замечательно работает (например, Angle, Zink). Под Windows адаптер надо тащить с собой (не сложно - надо условно просто положить dll-ку Angle рядом с exe). На мобильных ус-вах iOS, Android, а также Linux и macOS адаптер вообще обычно встроен в систему.

Если приложению хочется легкий путь, что б работать везде и совсем сложного по графике в нем ничего нет, то GLES - хороший вариант (рендеринг на экран и в текстуры, 3d шейдеры, compute шейдеры). Если нужен гибкий мультитрединг, тензорные вычисления, raytracing и ручное управление синхронизацией конвееров или прямая работа с памятью - придется спускаться на уровень D3D12, Vulkan и Metal. Причем одновременно, если приложение хочет работать на всех платформах.

 Re: А что сейчас вместо OpenGL?
[quote="bondkim137 в сообщении #1727808"][/quote]

Спасибо.

 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group