Мужчины R9 290 дружит с вулканкой?
Dronas
> Мужчины R9 290 дружит с вулканкой?
в общем и целом всё начиная с 7870 дружит, но насколько полностью вопрос сложный, апи низкоуровневое и там нет гарантии 100% поддержки функционала вообще.
laMer007
> Так что ещё вопрос что более мертво
Причём заметь, тот, кто больше всех кричит о смерти GL, не торопится переводить свой супер-пупер движок на сабж...
Кажется дефолтный переводчик GLSL -> SPIR-V неслабо так барахлит.
Шейдеры грузятся и работают, вот только совсем криво. Методом тыка было установлено, что в некоторых случаях переменная записывается значением соседней инструкции, которую убрал оптимизатор (другого объяснения пока нет).
Кто-нибудь с подобным встречался?
UP
The Player
Попробуй с разными версиями.
Ну и выложи пример сюда на посмотреть.
Наткнулся на перевод буржуйских статей, мб кого заинтересует, вродь сделано не плохо. http://vulkanapi.ru/
После небольшой передышки таки вернулся к Vulkan и проблеме преобразования шейдеров. Суть такова...
Есть обычная связка шейдеров (вершинный + фрагментный), которая, пока что, должна просто выводить текстурные координаты, но само собой выводит дерьмо:
Обратите внимание на то, что ни fPos ни fTBN во фрагментном шейдере не используются, хотя мы их все таки передаем. Т.е., чисто теоретически, лунарский транслятор GLSL->SPIR-V или компилятор самого SPIR-V на видяхе все это дело оптимизируют.
Фокус в том, что если попросту убрать запись атрибутов fPos/fTBN в вершинном шейдере, то картина меняется на, кто бы мог подумать, правильную:
И знаете что тут самое подозрительное? Первый (кривой) вывод один в один сходится со значением атрибута fPos, который, само собой, был оптимизирован.
Такое ощущение что оптимизатор до боли кривой и либо пишет не туда, либо читает не из того места.
Сейчас ставлю свежую 1.0.30.0 и буду проверять, осталась ли проблема... Таки да, осталась.
Тем не менее, кто-нибудь с чем-нибудь подобным сталкивался?
The Player
layout(location) для in/out нужно указывать. Они связываются не по именам, а по location.
The Player
А в Vulkan'е никакие биндинги\локации для вариингов явно указывать не нужно?
Правка: опередили
SDC
gammaker
Спасибо! Пока что, вроде бы, помогло.
З.Ы. Впервые слышу о layout(location) для внутренних атрибутов.
А может кто нибудь подсказать псевдокодом, как в вулкане сделать следующее.
Есть 1 юниформ буфер для матриц.
Обновить данные юниформ.
Вывести один объект (пусть будет куб).
Обновить данные юниформ.
Вывести другой объект (пусть будет сфера).
JustForFun
Завести 2 descriptor set`a и биндить для каждого объекта свой.
UPD:
-обновить буфер с per-object данными для всех объектов
-bind ds_for_cube
-draw cube
-bind ds_for_sphere
-draw sphere
JustForFun
А в чем проблема?
Обновляешь буферы, отправляешь команды, ждешь выполнения.