/A\
> на свежем железе разнтуы по скорости нет
еще усложнения в Vertex/Domain шейдерах упомянутое IBets, возможно VertexCache все-же дает прирост но в этом случае он не задействуется(?).
Andrey
> возможно VertexCache все-же дает прирост но в этом случае он не задействуется(?).
Думаю драйвера это умеют оптимизировать. У некоторых вендоров есть хардварный occlusion culling так что они сначала выполняют код связаный с трансформацией вершины и только потом все остальное. Так что кэш вершин будет использоваться.
Только надо индексы брать из индексного буфера, иначе драйвер может неправильно кэшировать.
IBets
> Что думаешь об идеи отказаться от классических Vertex Buffer-ов?
у тебя есть готовый движок на 100-500 фичь?
innuendo
Движок не мой же
IBets
Как будешь передавать сжатые форматы, например для нормалей?
innuendo
Парень "всеголишь" в сейбере графику пишет. Может за их движок спрашивает. Помню капулькин в 2011(12) ушел из сейбера сказав, что фигней какойто занимаются. Хотя может его посадили тисиары для пс3 проходить по инвершну.
https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/… dexedEXT.html
Я так понимаю на CPU собираем и рисуем пачкой и это аналог из glMultiDrawElements ?
Andrey
> Я так понимаю на CPU собираем и рисуем пачкой и это аналог из glMultiDrawElements ?
Типа того, ближе будет glMultiDrawElementsBaseVertex.
Andrey
А чем это лучше draw indirect count?
/A\
> А чем это лучше draw indirect count?
Тем, что не indirect?
/A\
Вообще ничем, это другая функциональность, без Compute. Зачен оно, CPU нагружать куллингом?? Для совместимости с ГЛ?в Direct3D12 такой ерунды нету. В Metal ванную аналогично.
Andrey
> Вообще ничем, это другая функциональность, без Compute. Зачен оно, CPU нагружать куллингом?? Для совместимости с ГЛ?в Direct3D12 такой ерунды нету. В Metal ванную аналогично.
Не распарсил. Как-раз non indirect версии нет вариантов кулить на GPU. Ну если только с отвратительным readback-ом.
Andrey
При использовании vkCmdDrawIndexed можно нарисовать инстансами много персов, но они будут все одинаковые. Используя multi draw и общий буфер вершин на все меши можно за раз нарисовать много разных персов.
v1c
> Используя multi draw и общий буфер вершин на все меши можно за раз нарисовать много разных персов.
То есть не нужно отдельно задавать смещения в буфере?
Я думал сейчас все смещается в сторону меш шейдеров и аналогов, так что все будет bindless и чтение вершин в шейдере.
Для мобилок опять же не подходит - полно девайсов с 1.0 и минимум расширений.
prowkan
> Тем, что не indirect?
Ничего не мешает сделать host-visible buffer и писать в него команды. Только на мобилках бывает некоторые параметры не поддерживаются (firstIndex != 0 или instanceCount, не помню точно, есть фича на это).
/A\
> Для мобилок опять же не подходит - полно девайсов с 1.0 и минимум расширений.
Драйверы для тех GPU которые не поддерживают эту фичу могут реализовать это расширение просто через цикл drawCount, от лишней нагрузки это не спасёт, но совместимость обеспечит.