Vulkan API — урок 57. Этап проверки глубины (+листинг)

Вложение глубины теперь готово к использованию, но проверку глубины все еще нужно активировать в графическом конвейере. Сие действо настраивается в структуре VkPipelineDepthStencilStateCreateInfo. VkPipelineDepthStencilStateCreateInfo depthStencil = {}; depthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; Поле depthTestEnable думаю понятно из названия, активирует проверку глубины. Поле depthWriteEnable определяет, будет ли… Continue Reading

Vulkan API — урок 56. Доработки имеющегося под третью координату

Render pass Сейчас нужно включить вложение глубины (depth attachment) в  createRenderPass. Для начала определим VkAttachementDescription. format должен быть аналогичен самому изображению. На этот раз мы не заботимся о хранении данных глубины (storeOp), потому как они не будут использоваться после того, как отрисовка… Continue Reading

Vulkan API — урок 55. Буфер глубины (Depth buffering или Z-buffering)

Итак, для проблемы предыдущего урока есть два способа решения: Подавать вершины в соответствующем порядке – от глубинных до верхних. Использовать тестирование глубины с буфером глубины (для аналогов можно так же встретить термин «Z-буферизация»). Первый вариант в основном используется для отрисовки прозрачных объектов,… Continue Reading

Vulkan API — урок 54. Третья координата.

Перед тем как загружать модели, давайте определимся с третьей координатой, т.к. ранее её мы не использовали. Изменим структуру Vertex для использования 3D векторов при позиционировании и обновим format в соответствующем VkVertexInputAttributeDescription: struct Vertex { glm::vec3 pos; glm::vec3 color; glm::vec2 texCoord;… Continue Reading