Пишем простой рейтрейсер используя Vulkan Raytracing (комментарии)
Это сообщение сгенерировано автоматически.
Небольшое примечание:
Компания Nvidia решила стабилизировать расширение VK_NVX_raytracing, переименовав его VK_NV_ray_tracing. Так же, на днях вышла новая версия драйверов, в которых была убрана поддержка "старого" расширения для рейтрейсинга.
К сожалению, компания LunarG не поспевает, и, на текущий момент, мы имеем ситуацию, когда старое расширение не поддерживается больше последними драйверами, а использовать новое мы не можем, пока не выйдет новая версия Vulkan SDK.
В заложниках ситуации оказались многие разработчики, и автор статьи в их числе. Арсений Капулкин (zeux), пойдя на встречу просящим (https://github.com/zeux/volk/issues/14#issuecomment-439291505) реализовал временную поддержку обоих расширений в своей замечательной библиотеке Volk.
Компания LunarG оставила мой запрос без ответа.
Будем надеяться, что ситуация в скором времени разрешится, и нам станет доступен обновленный SDK с поддержкой нового расширения.
Как только это произойдет, я обновлю текст статьи и код.
Прошу прощения за временные неудобства.
0r@ngE
замути такую сцену - интересно сколько FPS выдаст при 1080p :D а также если её всю считать анимированной и перестраивать BVH дерево на каждый кадр :D
это FROL'овский ray tracer - спроси может он поделится своей моделью освещения во благо "научных" эксперементов :D
https://gamedev.ru/code/forum/?id=136598&page=16#m232
эта демка с ракурсом по умолчанию и с 3 пере- отражениями и тенями - на GTX 1080 даёт 70 FPS (в статике) [1024x768]
0r@ngE
сцену можно скачать тут (есть в т.ч. в виде obj файла)
http://sergio.gamedev.ru/shader_art
ещё интересно когда много источников освещения (тут например 6) и объекты в динамике с некоторым количеством переотражений и тенями - как например в демке ниже
кстате эта вторая демка несмотря на малое количество шаров (около 10) в 1080p на GTX 1080 тоже даёт всего около 70 FPS ..
интересно было бы поглядеть на подобную (графически) демку но с более сложными объектами .. (и тоже в динамике).
а то что насували в баттле V - полный отстой ..
если понадобятся ещё интересные графически ray trace демки - скажи , я подкину ещё :D
0r@ngE
написал и пропал - хоть бы намекнул будут ли демки где наглядно можно оценить преимущество трассировки лучей , пусть и не в современно игровой сложности сценах и/или даже хотя бы в ограниченном разрешении ?
потому что тот шлак который льют в баттле V выглядит совсем не убедительно - отражения там почему то в основном от плоских поверхностей (не считая водички разве что), без всяких там ray tracing особых эффектов - типа множества источников освещения и теней от каждого из них и кучи переотражений .. ну т.е. всего того ради чего все пускали слюни по ray trace'у .. :D
понятно что на сцене баттлы оно (вышеперечисленное) раком встанет - но всегда можно замутить сцену попроще и разрешение поменьше :D (1024x768 например).
хотя ваще надо признать что напр. тот же Star Wars RT выглядит таки уже с определённой заявкой на прогресс , по крайней мере в одном из ожидаемых пользователей направлении использования RT .. как впрочем и новый 3DMark RT, но вот немного не хватает плотности новых эффектов ..
ну и есть такой интересный вопрос - возможно ли чисто алгоритмически с приемлемыми затратами считать то, насколько далеко луч лежит от собственно тела треугольника, при нахождении его пересечения с ним .. для того чтобы в случае того если он лежит на грани, например пускать 4-ре лучше в этом пикселе экрана , для антиалиазинга ..
понятно что такая ботва едва ли сейчас будет совместима с RTX, но в целом для построения чёткого изображения интересно по рассуждать на тему ..
конечно что изложено в упрощённом виде, так например на гранях BVH Node также понадобится 4-ре луча на пиксель .. или например можно было бы оптимизировать нахождение соседних 4-х лучей для таких случаев, не перебирая всё подряд ..
конечно большой вопрос было бы оно быстрее чем просто 4-ре луча на пиксель :D
но если бы можно было обсчитывать границы для объёмных лучей, то теоретически возможно можно было бы получить преимущество трассируя изначально как бы в более низком разрешении и разбивая уже на большее количество лучей - уже только на гранях (треугольников и BVH Node) - для повышения разрешения до любого уровня.
я так (точнее нечто подобное просто для эксперимента) кстате делал на сцене с малым количеством треугольников, но просто обсчитывал в меньшем разрешении изначально (через 1-2 пикселя допустим по горизонтали и вертикали), потом между пикселями которые попадали в один треугольник - пересчитывал сразу пересечение недостающих пикселей сразу с этим треугольником, а остальные не просчитанные пиксели собирал в массив - и трейсил там уже полностью все их. ускорение выходило минимум на порядок :D с еле заметными артефактами одиночными мелкими.
думаю можно было бы выжать и больше :D понятно что это была упрощённая модель того что я изначально здесь описывал, да и полигонов в сцене было немного, но вообще идея выглядит довольно интересной .. :D
UPD.:
itmanager85
> для повышения разрешения до любого уровня.
до любого уровня конечно вряд ли ли получится на (особенно сильно) криволинейных поверхностях (для переотражений), - т.к. нормали могут для 4-х соседних пикселей все же по идее достаточно сильно расходится , но 1080p->2160p (DSR) по идее можно провернуть.
короче говоря не всё ещё исследовано в технологиях и техниках трассировке лучей :D
Выложите exe и готовые бинарики плиз, чтобы ПЫЧ ПЫЧ и РЕЙТРЕЙСИНГ
0r@ngE
А под гибридным рендерингом ты что подразумеваешь?
Трассировку по G-буфферу, как в примерах нвидии?
Я вот хочу попробовать динамические лайтмапы на рейтрейсе, а рисование растром.
Какое ужасное качество.
gamedevfor
> Какое ужасное качество.
где ? в демке в старт посте ? алиазинг не нравится или что ? :D
itmanager85
в старт посте, какие то черные отражения кролика.
И твоя картинка
тоже ужасна c черными тенями, лестницами, переотражения плохого качества.
gamedevfor
> тоже ужасна c черными тенями
покажи где нормальные тени ?
gamedevfor
> лестницами
лестницы так просто не убрать - либо x4 DSR разрешение выставлять , либо DLSS юзать .. :D первое приведёт к 4-х кратному падению производительности , второе в действии с DXR ещё не видел ..
gamedevfor
> переотражения плохого качества.
по мне так переотражения которые не на полу (а на объектах) - выглядят весьма интересно .. покажи где оно лучше ?
itmanager85
> покажи где нормальные тени ?
Ну тот пример с CUDA в принципе годный (хотя хотелось бы не только шаров, а что то посложнее)
gamedevfor
> Ну тот пример с CUDA в принципе годный.
они оба на CUDA :D
второй пример - "Ray tracing on GPU with CUDA (compared to CPU)" ? да, неплохо выглядит - но как бы ещё подобрать такую модель освещения чтобы оно было идентично ? :D
вот кстате ещё интересная демка, тоже выглядит со сбалансированным качеством
https://gamedev.ru/flame/forum/?id=216540&page=26#m383
itmanager85
> написал и пропал
Прошу прощения, статью дописывал в 3 утра, запостил и ушел отсыпаться. А днем с семьей за город поехали отдыхать.
> будут ли демки где наглядно можно оценить преимущество трассировки лучей
Преимущество над чем? Если над растеризацией - то это факт, дело только в развитии технологий, чтоб перформанс позволял.
Arxon
> Выложите exe и готовые бинарики плиз, чтобы ПЫЧ ПЫЧ и РЕЙТРЕЙСИНГ
Проект элементарно собирается из исходников. Могу выслать архив с бинарником на почту, если сильно хочется. Сюда залить не могу по причине ограничания в 2 МБ.
/A\
> А под гибридным рендерингом ты что подразумеваешь?
Использование RTX для замены частей пайплайно современного рендера. Например стохастические тени, отражения, AO.
gamedevfor
> в старт посте, какие то черные отражения кролика.
Не могли бы вы отметить - что конкретно вы имеете ввиду?
0r@ngE
> Будем надеяться, что ситуация в скором времени разрешится
как то nVidia не сильно спешит утвердить своё преимущество как первопроходца передовой технологии .. :D выпустили бы уж какую нибудь RT демку (а лучше парочку) - чтоб все ахнули и побежали скупать RTX карточки .. а то так вместо лизки сам хуанг обанкротится :D
0r@ngE
> Преимущество над чем? Если над растеризацией - то это факт, дело только в
> развитии технологий, чтоб перформанс позволял.
ну т.е. я имел в виду будут ли статьи в которых будут представлены различные варианты использования возможностей аппаратного RTX - типа там различные модели освещения (с задействованием переотражений, тенями, преломлениями) / AO / Dynamic GI , возможно ещё что ? (ну т.е. в виде чего то более завершённого и глубже проработанного)
Тема в архиве.