/A\
это вроде предварительная версия с NV расширениями для RT , а когда окончательная выйдет ?
itmanager85
> DXR - да, стандарт .. но тока под десяткой :D
Vulkan Raytracing - брат близнец DXR, все описанное в статье так же справедливо и для DXR.
Думаю что когда AMD сделает поддержку DXR, расширение Nvidia станет кросс-вендорным, и, скорее всего, перейдет в EXT/KHR категорию.
/A\
> glslang уже перешел на новые названия, старые не компилит
как выйдет новый Vulkan SDK, я поправлю код
0r@ngE
> как выйдет новый Vulkan SDK
вот это правильно, а то у меня слой валидации стал ругаться, видимо в SPIRV тоже переименовали расширение
0r@ngE
А ты по каким докам все это писал?
Откуда взялся VkGeometryInstance?
Я пытался перенести сымплы с DXR и уперся в недостаточную документацию вулкана.
https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-NV_ray_tracing
Да, расширение больше не экспериментальное.
Я первым делом когда узнал про RTX хотел уже было покупать карточку NVidia для экспериментов,
слишком долго я мечтал об аппаратном рейтрейсинге, чтобы пропускать это мимо ушей.
Но сейчас понимаю что 14 нм уже устаревающий техпроцесс, если и тратить килобакс вечнозелёных,
то на GPU сделанному по 7 нм техпроцессу. Там и RT-ядер получится больше, и производительность
будет в 1.5-2 раза выше. Жаль AMD/ATI ничего похожего предложить не может, да и неясно
предложит ли вообще в ближайшие годы.
/A\
> Откуда взялся VkGeometryInstance?
Ты прав, я упустил этот момент в статье :(
К сожалению, эта структура не объявлена в хидерах (упустили парни из Nvidia наверное), потому я заиспользовал структуру из DXR.
Обещают поправить это в следующем выпуске SDK (вместе с переходом NVX -> NV)
Edit: здесь (https://renderdoc.org/vkspec_chunked/chap32.html) уже есть описание VkGeometryInstanceNV.
/A\
> у меня слой валидации стал ругаться
А ты glslang какой юзаешь? Сам собирал?
0r@ngE
> А ты glslang какой юзаешь? Сам собирал?
да, последний из мастера.
наверное если собрать последние слои валидации, то все будет норм, но мне уже лень)
/A\
А что, старые расширения уже перестают поддерживаться?
v1c
> А что, старые расширения уже перестают поддерживаться?
Видимо да, glslang отказался компилить старое расширение.
0r@ngE
Если собираешься сам собрать СДК, то у меня есть cmake для этого, иначе замучаешься ставить все зависимости)
https://github.com/azhirnov/vkTraceConverter/blob/master/cmake/do… n_tools.cmake
0r@ngE
У тебя в коде для буферов задан VK_BUFFER_USAGE_VERTEX_BUFFER_BIT и VK_BUFFER_USAGE_INDEX_BUFFER_BIT, но не задан VK_BUFFER_USAGE_RAY_TRACING_BIT_NV.
В спецификации и сейчас это явно не прописано, но есть такое:
VK_BUFFER_USAGE_RAY_TRACING_BIT_NV specifies that the buffer is suitable for use in vkCmdTraceRaysNV and vkCmdBuildAccelerationStructureNV.
upd: в общем для mShaderBindingTable, vb, ib надо поправить usage.
вообще кстате , RT игры могли выйти ещё пол десятка лет назад - если бы была нормальная поддержка RT в каком нибудь API.
Но увы, это интересно (было) лишь гикам и горстке энтузиастов. :D
Понятно что это был бы не уровень баттлы V, но вау эффект был бы обеспечен.
кстате , в UE4 поддержка RT тоже тока под 10-ой виндой будет ?
0r@ngE
не знаешь ли:
Допустим если у меня есть супер-тяжёлый шейдер с материалами и огромный футпринт в память для per-ray data.
Как мне лучше делать:
(1) Вынести этот шейдер в closestHit и передавать per-ray data через rayPayloadNVX атрибуты.
(2) оставить все тяжёлые расчёты в ray gen шейдере, а по rayPayloadNVX гонять лёгкую структуру?
Например, для второго варианта мне бы хватило float4. А expansion float4 в настоящий per ray data делать уже в rayGen ...
Тема в архиве.