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

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

Страницы: 1570 571 572 573627 Следующая »
#8550
16:54, 15 июня 2021

А есть где-то пример использования VK_EXT_fragment_density_map ?
В UE частично добавлен, но нигде нет создания текстуры с VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT и VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, либо это бага, либо никто его не использовал.
Ну и документация в вулкане написана весьма ограниченно, прям как для метала.

#8551
16:57, 15 июня 2021

/A\
> В UE частично добавлен, но нигде нет создания текстуры с VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT и VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, либо это бага, либо никто его не использовал.
Это в 4м или 5м УЕ?
Ставлю на багу.

#8552
17:01, 15 июня 2021

Вулкан закручивает гайки.
Нельзя использовать в сэмлере ненормализованные координаты на TEXTURE_ARRAY и еще на чем-то. Чем, спрашивается, они им помешали?

#8553
(Правка: 17:19) 17:05, 15 июня 2021

HolyDel
В 5-ом
upd: в 4-ом тоже

#8554
20:08, 15 июня 2021

/A\
Вот вроде живой пример с VK_EXT_fragment_density_map:
https://github.com/hydium/stereoVR/blob/e78d3be9186b80e387f2ef63e… orld_Vulkan.c

если еще не натыкался?

#8555
17:34, 16 июня 2021

MikeNew
> Нельзя использовать в сэмлере ненормализованные координаты на TEXTURE_ARRAY и
> еще на чем-то. Чем, спрашивается, они им помешали?

не понял, это как так ?

#8556
13:00, 17 июня 2021

innuendo
> не понял, это как так ?
Да вот прямо так:

+ Показать
#8557
17:32, 17 июня 2021

HolyDel
> Вот вроде живой пример с VK_EXT_fragment_density_map:
VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT и VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT там не используются, зато есть флаг OVR_RENDERPASS_FLAG_INCLUDE_FRAG_DENSITY при вызове ovrVkRenderPass_Create().
В UE флаг OVR_RENDERPASS_FLAG_INCLUDE_FRAG_DENSITY тоже не найден.

В общем насколько я понял из документации UE и видео на ютубе (потому что в документации вулкана такое не нашел), fragment density должна быть R8G8_UNORM текстура, где float-point значения 1.0, 0.5, 0.25 означают насколько уменьшается количество сэмплов по горизонтали (R-канал) и по вертикали (G-канал).

В итоге по VRS:
На десктопе вулкан и дх12 почти одинаковая реализация.
На мобилках на вулкане более-менее похожее решение, но с другим форматом текстуры.
На метале - более ущербная реализация с 2-мя одномерными float массивами по вертикали и по горизонтали (почти как на андроиде, только там 2D). Да еще и самому надо резолв делать, а чтобы поменять данные текстуры надо ее пересоздавать.

С десктопами понятно, а вот зачем это все на мобилках (и тем более на метале) я не очень понимаю, разве что для VR.

#8558
(Правка: 18:45) 18:44, 17 июня 2021

/A\
Кажется еще от Oculus есть видео по использованию VK_EXT_fragment_density_map, я когда то чекал, но это не точно что на канале Oculus-а есть

#8559
(Правка: 19:39) 19:38, 17 июня 2021

IBets
Это наверное https://youtu.be/E8qRv4xHGDw?t=1426 но там очень мало.

В любом случае у меня нет телефона чтоб потестить это расширение, так что не уверен, что буду его использовать.

#8560
(Правка: 5:10) 5:10, 18 июня 2021

Andrey
> Vulan Debug Ouput: ERROR: [DS] Code 2345 : duplicated binding number in
> VkDescriptorSetLayoutBinding. For more information refer to Vulkan Spec Section
> '13.2.1. Descriptor Set Layout' which states 'The
> VkDescriptorSetLayoutBinding::binding members of the elements of the pBindings
> array must each have different values.'
> (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtm…
> outCreateInfo)
Ты два раза добавил одинаковый vkDescriptorSetLayoutBinding в vkDescriptorSetLayoutCreateInfo при создании DescriptorSetLayout, поэтому эта ошибка валидации

#8561
(Правка: 7:37) 7:36, 18 июня 2021

Какой способ биндинга frequency буфферов наилучший для pc по перфу будет в среднем?
1) Аллокацию и обновление descriptor set делаем каждый draw call, после рендеринга кадра ресетим descriptor pools(вероятно самый медленный, но настолько ли критично?)
2) Dynamic uniform buffer. Привязываем в начале кадра, смещения передаём при биндинге дескриптор сета
3) Не заморачиваемся с uniform буффером. Используем storage buffer привязываем в начале кадра и через пуш контанты передаём необходимые смещения при вызове отрисовки(на AMD полагаю будет работать как во  (2) случае)
4) Используем массив uniform буфферов и передаём смещение как в предыдущем случае через push константы, для доступа в шейдере

#8562
8:10, 18 июня 2021


IBets
> 2) Dynamic uniform buffer. Привязываем в начале кадра, смещения передаём при биндинге дескриптор сета
этот вариант специально в api предусмотрели, чтобы он гарантированно работал и ни от чего не зависел.

#8563
(Правка: 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-ом(не ясно будет ли работать кэш вершин)

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

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

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