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

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

Страницы: 1571 572 573 574578 Следующая »
#8565
(Правка: 14:17) 14:06, 18 июня 2021

Suslik
Что думаешь об идеи отказаться от классических Vertex Buffer-ов? То есть создаем Storage Buffer-ы под Вершины, Нормали и т.д и биндим через отдельный Descriptor Set(возможны альтернативные варианты)
1) Плюсы:
  Не нужно заморачиваться с vkPipelineVertexInputStateCreateInfo(конечно можно использовать reflection spirv для генерации, но если допустим используется precompute pipelines, то нужно будет перебирать с различным [binding, location]),
  В коде становится меньше сущностей
2) Минусы:
  Не понятно что по перфу в общем случае
  На несколько строчек кода больше в коде всех vertex шейдеров
Наверное можно пойти дальше и так же поступить с Index-Buffer-ом(не ясно будет ли работать кэш вершин)


#8566
14:31, 18 июня 2021

IBets
В прошлом году это обсуждалось - на свежем железе разнтуы по скорости нет, на совсем древнем - медленнее.

#8567
15:40, 18 июня 2021

/A\
> на свежем железе разнтуы по скорости нет
еще усложнения в Vertex/Domain шейдерах упомянутое IBets, возможно VertexCache все-же дает прирост но в этом случае он не задействуется(?).

#8568
17:49, 18 июня 2021

Andrey
> возможно VertexCache все-же дает прирост но в этом случае он не задействуется(?).
Думаю драйвера это умеют оптимизировать. У некоторых вендоров есть хардварный occlusion culling так что они сначала выполняют код связаный с трансформацией вершины и только потом все остальное. Так что кэш вершин будет использоваться.
Только надо индексы брать из индексного буфера, иначе драйвер может неправильно кэшировать.

#8569
17:51, 18 июня 2021

IBets
> Что думаешь об идеи отказаться от классических Vertex Buffer-ов?

у тебя есть готовый движок на 100-500 фичь?

#8570
17:57, 18 июня 2021

innuendo
Движок не мой же

#8571
23:05, 19 июня 2021

IBets
Как будешь передавать сжатые форматы, например для нормалей?

#8572
0:04, 20 июня 2021

innuendo
Парень "всеголишь" в сейбере графику пишет. Может за их движок спрашивает. Помню капулькин в 2011(12) ушел из сейбера сказав, что фигней какойто занимаются. Хотя может его посадили тисиары для пс3 проходить по инвершну.

#8573
12:19, 21 июня 2021

https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/… dexedEXT.html
Я так понимаю на CPU собираем и рисуем пачкой и это аналог из glMultiDrawElements ?

#8574
12:34, 21 июня 2021

Andrey
> Я так понимаю на CPU собираем и рисуем пачкой и это аналог из glMultiDrawElements ?
Типа того, ближе будет glMultiDrawElementsBaseVertex.

#8575
13:23, 21 июня 2021

Andrey
А чем это лучше draw indirect count?

#8576
13:38, 21 июня 2021

/A\
> А чем это лучше draw indirect count?
Тем, что не indirect?

#8577
14:07, 21 июня 2021

/A\
Вообще ничем, это другая функциональность, без Compute. Зачен оно, CPU нагружать куллингом?? Для совместимости с ГЛ?в Direct3D12 такой ерунды нету. В Metal ванную аналогично.

#8578
14:24, 21 июня 2021

Andrey
> Вообще ничем, это другая функциональность, без Compute. Зачен оно, CPU нагружать куллингом?? Для совместимости с ГЛ?в Direct3D12 такой ерунды нету. В Metal ванную аналогично.
Не распарсил. Как-раз non indirect версии нет вариантов кулить на GPU. Ну если только с отвратительным readback-ом.

#8579
15:19, 21 июня 2021

Andrey
При использовании vkCmdDrawIndexed можно нарисовать инстансами много персов, но они будут все одинаковые. Используя multi draw и общий буфер вершин на все меши можно за раз нарисовать много разных персов.

Страницы: 1571 572 573 574578 Следующая »
ПрограммированиеФорумГрафика