17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-11 20:16:47 +01:00

Vulkan: parity with GL (P1–P7), shared GPU culling records (N6c), threaded command recording and render thread (M1, M4)

This commit is contained in:
2026-10-25 03:06:01 +01:00
parent 49f9df7d98
commit c48c58776a
146 changed files with 20748 additions and 4606 deletions

View File

@@ -79,7 +79,10 @@ enum class blend_mode
additive,
// the blending of the scene, as glBlendFunc() of the opengl renderer gives it to the colour and the alpha alike
scene_alpha, // GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
scene_additive // GL_SRC_ALPHA, GL_ONE (the glare of the lamps)
scene_additive, // GL_SRC_ALPHA, GL_ONE (the glare of the lamps)
under_transmittance, // GL_ONE, GL_SRC_ALPHA: the colour added, what is there kept by the alpha (the clouds and the fog over the sky)
multiply, // GL_ZERO, GL_SRC_COLOR: what is there times the colour (the ambient occlusion)
no_colour // the colour isn't written, only the depth (the depth prepass of the instances inside the colour pass)
};
struct vertex_layout
@@ -100,6 +103,8 @@ struct pipeline_desc
std::vector<VkFormat> colour_formats;
VkFormat depth_format{VK_FORMAT_UNDEFINED};
VkSampleCountFlagBits samples{VK_SAMPLE_COUNT_1_BIT};
// the views drawn at once (multiview, the cube shadow maps of the lamps), 0: none
std::uint32_t view_mask{0};
// the values of the specialization constants 0, 1, 2 ... of all the stages
std::vector<std::uint32_t> specialization;
std::string name;
@@ -132,6 +137,6 @@ class pipeline_library
};
// the dynamic state of a pipeline in its plain form: the whole of Extent, no culling, no depth, triangles
void set_draw_state(VkCommandBuffer Commands, VkExtent2D Extent);
void set_draw_state(command_stream *Commands, VkExtent2D Extent);
} // namespace vk14