Как стать автором
Обновить

Комментарии 5

Объясните мне. Чем так Вулкан лучше, того самого OpenGL 4? (К примеру)
Почему Все так прям на этот vulkan ломанулись. Если смотреть тесты на youtube, то там как правило расхождение в производительности между vulkan и opengl где-то fps 10.
И то я думаю, что если в памяти нормально разместить данные вершин геометрических объектов, и грамотно реализовать работу с видеопамятью (и отрисовывать не весь «мир», а только части сцены) то производительность этих Api должна быть на одном уровне.
Все основные тормоза в обработке данных, заключаются или в передаче данных в видеокарту или в кривом шейдере (под кривым шейдером, я подразумеваю плохо написанные вычисления для каждого пиксела, без которых можно обойтись ).
Разве нет?

Объясните мне. Чем так Вулкан лучше, того самого OpenGL 4?
Всё дело в философии API. OGL похож на старый clib 70-х годов, с его errno и минимализмом в параметрах. В OGL есть куча неявного контекста, какая-то операция с минимумом параметров применяется к «текущему» объекту (буферу, текстуре, етц). В противоположность этому, vulkan как WinAPI — у каждой ф-ции 100500 параметров, зато никаких умолчаний и контекстов. Считается, что такой стиль API более современный.

Не стоит фокусироваться на таком категоричном слове — 'лучше'. Там не про абсолютную линейку, а про закрытие ниш.
Вулкан — молодой API, который позволил избавиться от груза истории, тяготящего opengl, и заложить в дизайн решения, более соответствующие текущему этапу развития gpu. Достаточно того, что вулкан решает сложности с многопоточным рендером. Для топовых высоконагруженных приложений это очень весомый аргумент 'за', даже с учётом издержек на усложнившийся клиентский код. Всем остальным ещё на годы хватит и opengl и он будет 'лучше' во многих ситуациях.

Вы пример запускали на своих машинах? У меня не получилось запустить просто переписав приведенный пример, сейчас буду думать что нет так, проблема с чтением бинарника.
Up. Ошибка как всегда была смешная, не правильные пути стояли, НО это не изменило ситуации, ошибок нет как и картинки, если сможете подсказать буду очень рад

Делюсь make-комбайном по компиляции GLSL в SPIR-V

Прим:

  1. Замените glslc в коде ниже на путь (Я просто воткнул /home/stalker320/VulkanSDK/1.3.290.0/x86_64/bin в переменную PATH в начало)

  2. Поместите ниже приведённый Makefile в папку shaders

  3. Поместите шейдеры в папку shaders/src и создайте папку shaders/bin. Пути зависят от SRCPREFIX и OBJPREFIX

  4. называйте файлы следующим образом: filename.stage.glsl, где stage - это vert, vertex, frag, fragment и прочие стадии пайплайна

  5. Выполните make all для исполнения

  6. Выполните 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 (сделал суффикс изменяемым)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации