Комментарии 5
Почему Все так прям на этот vulkan ломанулись. Если смотреть тесты на youtube, то там как правило расхождение в производительности между vulkan и opengl где-то fps 10.
И то я думаю, что если в памяти нормально разместить данные вершин геометрических объектов, и грамотно реализовать работу с видеопамятью (и отрисовывать не весь «мир», а только части сцены) то производительность этих Api должна быть на одном уровне.
Все основные тормоза в обработке данных, заключаются или в передаче данных в видеокарту или в кривом шейдере (под кривым шейдером, я подразумеваю плохо написанные вычисления для каждого пиксела, без которых можно обойтись ).
Разве нет?
Объясните мне. Чем так Вулкан лучше, того самого OpenGL 4?
Не стоит фокусироваться на таком категоричном слове — 'лучше'. Там не про абсолютную линейку, а про закрытие ниш.
Вулкан — молодой API, который позволил избавиться от груза истории, тяготящего opengl, и заложить в дизайн решения, более соответствующие текущему этапу развития gpu. Достаточно того, что вулкан решает сложности с многопоточным рендером. Для топовых высоконагруженных приложений это очень весомый аргумент 'за', даже с учётом издержек на усложнившийся клиентский код. Всем остальным ещё на годы хватит и opengl и он будет 'лучше' во многих ситуациях.
Up. Ошибка как всегда была смешная, не правильные пути стояли, НО это не изменило ситуации, ошибок нет как и картинки, если сможете подсказать буду очень рад
Делюсь make-комбайном по компиляции GLSL в SPIR-V
Прим:
Замените
glslc
в коде ниже на путь (Я просто воткнул /home/stalker320/VulkanSDK/1.3.290.0/x86_64/bin в переменную PATH в начало)Поместите ниже приведённый Makefile в папку shaders
Поместите шейдеры в папку shaders/src и создайте папку shaders/bin. Пути зависят от SRCPREFIX и OBJPREFIX
называйте файлы следующим образом: filename.stage.glsl, где stage - это vert, vertex, frag, fragment и прочие стадии пайплайна
Выполните make all для исполнения
Выполните make clear для очистки
COMPILER = glslc
SRCPREFIX=src
OBJPREFIX=bin
SLSUFFIX=glsl
SOURCES = $(wildcard $(SRCPREFIX)/*.$(SLSUFFIX)) $(wildcard $(SRCPREFIX)/*.$(SLSUFFIX))
OBJECTS = $(patsubst $(SRCPREFIX)/%.$(SLSUFFIX),$(OBJPREFIX)/%.spv,$(SOURCES))
$(OBJPREFIX)/%.spv: $(SRCPREFIX)/%.$(SLSUFFIX)
${COMPILER} -fshader-stage=$(patsubst $(SRCPREFIX)/$(basename $(basename $(notdir $<))).%,%,$(patsubst %.$(SLSUFFIX),%,$<)) $< -o $@
.PHONY: all clean
all: $(OBJECTS)
clean:
rm $(OBJPREFIX)/*.spv
UPD: исправил для поддержки hlsl (сделал суффикс изменяемым)
Vulkan. Руководство разработчика. Графический конвейер