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

Diligent Engine - современная кросс-платформенная низкоуровневая графическая библиотека (18 стр)

Страницы: 117 18 19 2022 Следующая »
#255
0:36, 19 ноя. 2019

innuendo
> как минимум теже пушконстанты говорят что не всё так однозначно в железе
Да, про них я тоже думаю, как их можно было бы добавить в общий API.


#256
1:02, 19 ноя. 2019

innuendo
> как минимум теже пушконстанты говорят что не всё так однозначно в железе
и чем же пушконстанты отличаются от юниформ буферов в железе?

#257
1:08, 19 ноя. 2019

/A\
> и чем же пушконстанты отличаются от юниформ буферов в железе?
Как минимум, на одну индирекцию меньше (не надо через дескриптор находить буфер). Кроме того, разве они не из кэша CU/SM вместо основной памяти читаются?

#258
1:12, 19 ноя. 2019

assiduous
> Кроме того, разве они не из кэша CU/SM вместо основной памяти читаются?
Где-то была цитата, что это тот же юниформ буфер, даже нет никакой гарантии что данные заранее запишутся в кэш.
Та часть юниформ буфера, что читается в шейдере в любом случае попадет в кэш, в отличие от SSBO.

#259
1:14, 19 ноя. 2019

assiduous
> Да, про них я тоже думаю, как их можно было бы добавить в общий API.

думаю никак, как я уже раньше писал имеет смысл сделать более высокоуровневый рендерер - типа подаётся множество renderable с параметрами а что и как это уже backend разного апи разруливает

#260
1:37, 19 ноя. 2019

/A\
Насколько я помню, у Nvidia и amd реализация довольно сильно отличается. В любом случае, запись констант прямо в командный буфер - очень удобная вещь. Не надо выделять никакую память, заботиться о времени ее жизни и т.п. Кроме того, юниформ буферы должны быть выровнены по как минимум 256 байт, т.е. для маленьких констант будет большая экономия

#261
1:39, 19 ноя. 2019

innuendo
> имеет смысл сделать более высокоуровневый рендерер
Конечно имеет, и в нем можно сделать функции для манипулирования отдельными переменными. Но в низкоуровневом API их не должно быть, я считаю

#262
9:37, 19 ноя. 2019

assiduous
> Но в низкоуровневом API их не должно быть, я считаю

да, так вопрос в том, что может лучше иметь высокоуровневую обёртка ?

#263
9:39, 19 ноя. 2019

innuendo
> да, так вопрос в том, что может лучше иметь высокоуровневую обёртка ?
Лучше чем что?

#264
9:47, 19 ноя. 2019

assiduous

чем low-level, я не говорю что твоя либа плохая - я повторюсь что сложно выжать из разных апи с таким подходом - вот простой пример - на DX12 нету семафоров, получается что делаем как там и переносим на Вулкан как сделано в UE и теряем примущества Вулкана

#265
9:53, 19 ноя. 2019

innuendo
> я повторюсь что сложно выжать из разных апи с таким подходом - вот простой
> пример - на DX12 нету семафоров, получается что делаем как там и переносим на
> Вулкан как сделано в UE и теряем примущества Вулкана
Согласен, между API есть некоторые различия, но где-то на 85%-90% все одинаковое (между вулканом и D3D12 как минимум). У меня для этой проблемы есть доступ к нативному API. Ты можешь все писать на общем API, а там где надо написать, к примеру, непосредственно на вулкане семафор, а на D3D12 - fence. Доступ к очередям, командным листам, всем стейтами и т.п. можно получить через специализированные интерфейсы.

#266
10:00, 19 ноя. 2019

assiduous

пусть кто-нибудь сделает high-level и мы сравним что и как :)

#267
17:49, 19 ноя. 2019

innuendo
> можно примеры из своей практики?
Это троллинг такой?

Ну вот например:
1) Держать отдельные буферы под каждый UBO. Удобно? да. Оптимально? Нет. Оптимально - сразу писать данные в staging buffer'ы, чтобы избежать лишних копирований памяти (которые жрут CPU)
2) Делать draw() методы с последовательным списком комманд в OGL. Удобно? Да, легко дебажится в случае чего. Оптимально? Нет. Оптимально - группировать информацию о Mesh'е и делать свой state tracker для трекинга состояний во время рисования Mesh'а
3) Делать одно поточный рендерер. Удобно? Да. Не болит голова о синхронизации. Оптимально? Нет. Оптимально - разбивать на задачи со слабыми зависимостями между данными и гнать это в несколько потоков.

И т.д.

#268
17:54, 19 ноя. 2019

Deamon
> Это троллинг такой?

нет конечно

> И т.д.

это понятно - с этим никто не спорит, вопрос сколько % получили - если ускорили на 10% это хорошо, а если 0.01% - это плохо

#269
18:08, 19 ноя. 2019

assiduous
> Кроме того, юниформ буферы должны быть выровнены по как минимум 256 байт, т.е.
> для маленьких констант будет большая экономия
Это почему же? Вот в AMD 16 и номано.

Страницы: 117 18 19 2022 Следующая »
ПрограммированиеФорумГрафика