Vulkan API — урок 26. Графический конвейер (+листинг)

Теперь мы можем объеденить все созданные ранее структуры и объекты и создать графический конвейер. Перечислим имеющиеся типы объектов: Шейдеры: шейдерные модули, которые определяют функциональность программируемых этапов конвейера. Фиксированные функции: все структуры, которые определяют фиксированные функции конвейера. Layout конвейера: постоянные и… Continue Reading

Vulkan API — урок 25. Проход рендера (render pass)

До того, как мы закончим создание конвейера, необходимо рассказать Vulkan’у о вложениях фреймбуфера, которые будут использованы во время рендеринга. Нам необходимо указать количество цветов и глубину буфера, как много моделей (sample) будет использоваться для каждого из них и как их содержание… Continue Reading

Vulkan API — урок 24. Фиксированные функции (ч2) (+листинг)

Multisampling Структура VkPipelineMultisampleStateCreateInfo настраивает multisampling – один из вариантов сграживания (anti-aliasing). Он работает по принципу объеденения результатов fragment shader для нескольких полигонов (многоугольников), растеризируемых в одни и те же пиксели. В основном это имеет место быть на гранях, где зачастую и вылазиют наиболее заметные артефакты при сглаживании.… Continue Reading

Vulkan API — урок 23. Фиксированные функции (ч1)

В старых API большинство шагов конвейера устанавливается по умолчанию. В Vulkan’е же так нельзя, и вам придется все указывать конкретно, начиная от размера окна и до операций функции смешения цветов. Получение вершин (Vertex input) Структура VkPipelineVertexInputStateCreateInfo определяет формат данных вершин, которые… Continue Reading

Vulkan API — урок 22. Компиляция и использование шейдеров (+листинг)

Компиляция Рекомендую создать папку shaders в папке проекта и хранить шейдеры в файлах shader.vert и shader.frag (vertex и fragmet соответственно) в этой папке. GLSL шейдеры не имеют обязательного расширения, но обычно используются эти два, что бы их отличать. Содержимое shader.vert должно быть таким: #version 450… Continue Reading

Vulkan API — урок 21. Написание шейдеров

В отличии от других API, код шейдеров в Vulkan’е в формате байт-кода в отличии от человеко-ориентированного синтаксиса на подобии  GLSL и HLSL. Формат этого байт-кода – SPIR-V, и разрабатывался он для использования как с Vulkan’ом, так и OpenCL (оба API от Khronos). Это… Continue Reading

Vulkan API — урок 20. Графический конвейер, предисловие

Graphics pipeline – графический конвейер – то что будет описано в ближайших уроках, а именно как создать графический конвейер, который настроен на рисование нашего треугольника. Графический конвейер представляет собой последовательность операций, которые преобразуют вершины и текстуры к соответствующим пикселям на экране.… Continue Reading