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

[Решено] Почему UBO медленнее glProgramUniformMatrix4fv? (2 стр)

Страницы: 1 2 3 422 Следующая »
#15
23:22, 7 янв. 2020

Apfel1994
> Что если использовать 2 UBO поочередно?
innuendo
> тогда уж трипли

Один скелет на кадр? А если у меня сейчас 16 скелетов?


#16
(Правка: 23:25) 23:24, 7 янв. 2020

programina
> Один скелет на кадр? А если у меня сейчас 16 скелетов?
Заливай всю анимацию, и выбирай кадр в шейдере. Не будет необходимости что то обновлять.

#17
23:26, 7 янв. 2020

Окей. Сейчас у меня по одному UBO для каждого актёра. До этого я использовала один UBO для троих актёров и результат был намного лучше. Точно не помню. Надо перетестить.
Уже поздно, не буду отвлекать. Всем спасибо и спокойной ночи. )

#18
(Правка: 23:40) 23:36, 7 янв. 2020

programina
> Один скелет на кадр? А если у меня сейчас 16 скелетов?

Один большой UBO для всех скелетов. UBO должен поддерживать хотя бы 16кб.
Если этого недостаточно, то лучше использовать TBO/SSBO.

#19
23:39, 7 янв. 2020

Apfel1994
> SSBO
В интернетах пишут, что он медленный.

#20
23:42, 7 янв. 2020

Загрузила скелетов в один UBO под завязку (5 штук) и теперь UBO быстрее, чем glProgramUniformMatrix4fv. )))
580 vs 560 FPS

#21
23:49, 7 янв. 2020

programina
Для больших объемов данных рекомендую посмотреть в сторону SSBO

#22
23:51, 7 янв. 2020

Очень странно... Загрузила в один UBO 16 скелетов и вот это вот всё работает... )) Тут явно превышен лимит в 65536 байт. И мало того, что оно работает, так еще и опережает glProgramUniformMatrix4fv уже на 40 кадров (540 vs 500)

#23
23:55, 7 янв. 2020

Fantom09
> Для больших объемов данных рекомендую посмотреть в сторону SSBO
Мне нужно чтобы работало очень быстро, а про SSBO пишут, что он тормозит.
https://www.reddit.com/r/vulkan/comments/4uayoo/why_should_i_use_… i_can_have_a/

#24
0:00, 8 янв. 2020

programina
> Никакого эффекта. Такой же FPS как во время использования glMapBuffer
Давай весь код семпла.

#25
0:02, 8 янв. 2020
programina
> и опережает glProgramUniformMatrix4fv уже на 40 кадров (540 vs 500)

Вру. Забыла добавить код обновления UBO в главный цикл. glProgramUniformMatrix4fv опять впереди. :(
#26
(Правка: 0:08) 0:06, 8 янв. 2020

MrShoor
> Давай весь код семпла.
Семпла? (что это?)

Тут код всего UBO

+ Показать
+ Показать
#27
0:09, 8 янв. 2020

Это установка одного UBO на множество скелетов (nob - это num_of_bones):

+ Показать

#28
(Правка: 0:12) 0:11, 8 янв. 2020

Это установка UBO для одного скелета.

+ Показать

#29
0:12, 8 янв. 2020

programina
> Семпла? (что это?)
Примера, на котором тестируешь.

> Тут код всего UBO
Нужно не только код UBO, но и то, как рисуешь. И код шейдера тоже.

А еще ты каждый раз заливаешь новые матрицы? Или нет? Если в glProgramUniformMatrix4fv ты передаешь одинаковые данные, то оно может вообще не заливать на видеокарту ничего.

Страницы: 1 2 3 422 Следующая »
ПрограммированиеФорумГрафика