Войти
ПрограммированиеФорумГрафика

Vulkan API (вышел!) (540 стр)

Страницы: 1537 538 539 540 541 542 Следующая »
#8085
14:33, 7 янв. 2021

disambiguation
> зачем мне Вулкан, отвечаю - для GUI
Это эпично. Атомной бомбой - да по воробью. :))
Впрочем, я бы и сам бы так сделал. :)


#8086
(Правка: 15:27) 15:05, 7 янв. 2021

ImGui хорош для прототипирования интерфейса и тестирования.
Для солидного Gui все же лучше использовать Retained mode подход и тем же gapi все отрисовывать, да и ещё 3d интерфейс можно если будет потребность.

По поводу того Зачем нужен вулкан, ранее говорил... для всего остального Не целесообразно.

Вон помню Andrey кажется подсказывал что новичкам желательно разобраться в Основных техниках машинной графики и фиксированном графическом конвейере, взяв DX11, потом будет более легкий переход на программируемые вулкан / дэикс12.
Но лично сам поперся сразу в программируемый вулкан. Благо видосы есть, книги есть. Все в принципе можно изучить.

#8087
(Правка: 15:27) 15:26, 7 янв. 2021

disambiguation
> Кстати, Суслик спрашивал зачем мне Вулкан, отвечаю - для GUI

+ Показать

Suslik, не благодари.
Upd. А, опоздал...
#8088
15:55, 7 янв. 2021

disambiguation
> вот именно, поэтому поковыряв ваш вулкан я вдруг понял, что вместо основноного
> проекта я занмаюсь  какой-то нелепой борьбой с gapi ради рисования кнопочки или
> какой-то другой мелочи, объём кода растёт в геометрической прогрессии, причём
> полезного кода там процентов 10
В том то и дело что "платим" кодом настройки ради скорости.
Вулкан и задумывался чтобы программист графики понимал что делает видеокарта, отсюда и вытекают обширные "structure info" для функций, и самих функций до Hello Triangle нужно вызвать поболее чем было раньше на gapi с fixed pipeline.

Надо просто видеть преимущества и в чем эффективность.
Если смотрите в будущее и хотите напрямую использовать современные gapi от хронос груп или майкрософт то платите цену за "порог входа".
Во всех остальных случаях аля "побыстрее" для бизнес приложений Qt, C++ Builder, а для игр Godot.

#8089
15:58, 7 янв. 2021

phridrich
Когда портируешь свой мобильный движок на 150 дроколов на вулкан.

#8090
0:42, 8 янв. 2021

Так Vulkan ещё не сильно low-level, просто дали абстракции в виде command buffer, queues и барьеров. GNM для плойки намного более low-level.

#8091
1:18, 8 янв. 2021

lookid
> Когда портируешь свой мобильный движок на 150 дроколов на вулкан.
Забавно, но как раз для мобил от вулкана может быть очень много толка даже с 150 дроколами за счёт рендерпассов.

#8092
13:56, 8 янв. 2021

Я периодически смотрю как работают разные обертки над вулканом, уже придумал экспресс-тест, как отфильтровать совсем негодные:
- Аллокация памяти без кэширования.
- Загрузка данных из cpu в gpu через отдельные командный буфер и ожидание gpu после сабмита.
— Дополнительно: любое излишнее количество вызовов vkQueueSubmit, что сильно замедляет цп.
- Продублировать запись в буфер/текстуру и проверить вставится ли между ними барьер.
- Включить в слоях валидации проверку синхронизаций и запустить какой-нибудь сложный сэмпл.
- В рендердоке захватить кадр и посмотреть какие рендер пассы, какие барьеры, используется ли buffer dynamic offset, кэшируются ли дескрипторы и тд.

В итоге большинство оберток проваливают уже первые 3 теста, это печально.

#8093
15:09, 8 янв. 2021

/A\
> - Аллокация памяти без кэширования.
Без кэширования чего?

#8094
15:23, 8 янв. 2021

/A\
Что за аллокация памяти с кэшированием?

#8095
15:58, 8 янв. 2021

/A\
> Загрузка данных из cpu в gpu через отдельные командный буфер и ожидание gpu
> после сабмита.
Это например когда грузишь текстуры и геометрию с VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT ?
а ждать я так понимаю попозже или в самом конце, давая другую работу CPU/GPU?
> кэшируются ли дескрипторы и тд.
это минимизация vkUpdateDescriptorSets в кадре? Повторный вызов VkCmdBindVertexBuffers/
vkCmdBindIndexBuffer/VkCmdBindPipeline ?
>- Продублировать запись в буфер/текстуру и проверить вставится ли между ними барьер.
Ну это уже полноценная система должна быть. Очень высокоуровневое реализация. Не для оберток это, их цель упростить работу с Vulkan соблюдая простейшие рекомендации по оптимизациям.
К тесту можно добавить
- vkResetCommandPool + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
- Immutable Samplers

и многое другое.

#8096
17:15, 8 янв. 2021

prowkan
> Без кэширования чего?
Я про всякие аллокаторы типа VMA, которые выделяют кусок памяти и на нем уже размещают ресурсы.
Потому что постоянное выделение и освобождение памяти может снизить фпс до 10 на стороне цпу.

Andrey
> Это например когда грузишь текстуры и геометрию с VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT ?
да

> а ждать я так понимаю попозже или в самом конце, давая другую работу CPU/GPU?
Ну да, представь у тебя уже что-то тяжелое выполняется на гпу, а тут ты залил данные в буфер, и ждешь на цпу, когда же они скопируются.

> это минимизация vkUpdateDescriptorSets в кадре?
Ну вот в UE я видел очень большое количество дескрипторов и ResetDescriptorPool в начале кадра, что очень плохо для мобилок. При этом dynamic offset + кэширование дескрипторов дает неплохой выигрышь особенно в однопоточном коде.

> Повторный вызов VkCmdBindVertexBuffers/ vkCmdBindIndexBuffer/VkCmdBindPipeline ?
Это не так дорого и решается сортировкой в пользовательском коде, так что не критично.

> > Продублировать запись в буфер/текстуру и проверить вставится ли между ними барьер.
> Ну это уже полноценная система должна быть. Очень высокоуровневое реализация.
> Не для оберток это, их цель упростить работу с Vulkan соблюдая простейшие
> рекомендации по оптимизациям.
Если заявлена поддержка автоматической расстановки барьеров, то это серьезная ошибка.

> К тесту можно добавить
> - vkResetCommandPool + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
> - Immutable Samplers
А насколько они влияют на производительность?

А еще robustBufferAccess должен быть отключен в релизе, потому что это единственная фича, которая дает заметное снижение производительности.

#8097
17:56, 8 янв. 2021

/A\
>Ну вот в UE я видел очень большое количество дескрипторов и ResetDescriptorPool
это ваще жесть, vkResetDescriptorPool я даже не использую, вот поэтому не много игр на Vulkan на мобилках. До сих пор не написали эффективный рендер на UE4?
> А насколько они влияют на производительность?
vkResetCommandPool + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
это в примерах Khronos(ARM) можно глянуть, это вообще одна из первых рекомендаций, про это Арсений пишет

>Immutable Samplers
это и для Direct3D12 тоже как рекомендация, семплеры в шейдере компилируются, более оптимальный код на стороне драйвера при создании PSO. AMD рекомендует, так-же Арсений пишет

#8098
17:58, 8 янв. 2021

/A\
> А еще robustBufferAccess должен быть отключен в релизе, потому что это
> единственная фича, которая дает заметное снижение производительности.
да, это отключил. хорошая тузла об этом сказала

#8099
18:03, 8 янв. 2021

Andrey
> До сих пор не написали эффективный рендер на UE4?
тебе, конечно, виднее, шо делается в движках мирового класса

Страницы: 1537 538 539 540 541 542 Следующая »
ПрограммированиеФорумГрафика