summaryrefslogtreecommitdiff
path: root/src/vk/graphics_pipeline_3d_skeletal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vk/graphics_pipeline_3d_skeletal.cpp')
-rw-r--r--src/vk/graphics_pipeline_3d_skeletal.cpp91
1 files changed, 46 insertions, 45 deletions
diff --git a/src/vk/graphics_pipeline_3d_skeletal.cpp b/src/vk/graphics_pipeline_3d_skeletal.cpp
index 364b502..b000d89 100644
--- a/src/vk/graphics_pipeline_3d_skeletal.cpp
+++ b/src/vk/graphics_pipeline_3d_skeletal.cpp
@@ -39,7 +39,7 @@ load_pipeline(void *obj)
vert_shader_stage_info.flags = 0;
vert_shader_stage_info.stage = VK_SHADER_STAGE_VERTEX_BIT;
vert_shader_stage_info.module =
- cg_core.vk_device_with_swapchain->vert3d_shader_module;
+ cg_core.vk_device_with_swapchain->vert3d_skeletal_shader_module;
vert_shader_stage_info.pName = "main";
vert_shader_stage_info.pSpecializationInfo = nullptr;
@@ -287,51 +287,52 @@ GraphicsPipeline3DSkeletal::draw(
vkCmdSetScissor(draw_command_buffer, 0, 1, &vk_scissor);
}
- // Draw models
- for(auto& [skeletal_mesh, instances]:
+ vkCmdBindPipeline(
+ draw_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
+ this->graphic_pipeline);
+
+ // Draw models
+ for(auto& [skeletal_mesh, instances]:
cg_core.vk_renderer->skeletal_models_to_draw[current_frame])
- {
- VkBuffer vertex_buffers[]{skeletal_mesh->vertex_buffer->buffer};
- VkDeviceSize offsets[]{0};
-
- vkCmdBindPipeline(
- draw_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
- this->graphic_pipeline);
- vkCmdBindVertexBuffers(
- draw_command_buffer, 0, 1, vertex_buffers, offsets);
- vkCmdBindIndexBuffer(
- draw_command_buffer, skeletal_mesh->index_buffer->buffer, 0,
- VK_INDEX_TYPE_UINT32);
-
- for(auto &instance: instances)
- { // Object matrix.
- glm::mat4 translation_matrix{1.0f};
- translation_matrix = glm::translate(
- translation_matrix, *instance->position);
- glm::mat4 rotation_matrix{glm::toMat4(*instance->orientation)};
-
- std::array<VkDescriptorSet, 4> vk_descriptor_sets{
- cg_core.vk_light->descriptor_sets_world[image_index],
- view->descriptor_sets_3d[image_index],
- instance->texture->descriptor_sets[image_index],
- instance->descriptor_sets[image_index]};
-
- vkCmdBindDescriptorSets(
- draw_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
- cg_core.vk_graphics_pipeline_3d_layout->pipeline, 0,
- vk_descriptor_sets.size(), vk_descriptor_sets.data(), 0, nullptr);
-
- vkCmdDrawIndexed(
- draw_command_buffer, skeletal_mesh->index_count, 1, 0, 0, 0);
-
- VK::UDOSkeletalModel udo_skeletal_model{};
- instance->tick(cg_core.delta_time);
- udo_skeletal_model.base_matrix = translation_matrix * rotation_matrix;
- std::copy(instance->bone_transforms.begin(),
- instance->bone_transforms.end(),
- udo_skeletal_model.bone_matrices);
- instance->uniform_buffers[image_index].copy_data(&udo_skeletal_model);
- }
+ {
+ VkBuffer vertex_buffers[]{skeletal_mesh->vertex_buffer->buffer};
+ VkDeviceSize offsets[]{0};
+
+ vkCmdBindVertexBuffers(
+ draw_command_buffer, 0, 1, vertex_buffers, offsets);
+ vkCmdBindIndexBuffer(
+ draw_command_buffer, skeletal_mesh->index_buffer->buffer, 0,
+ VK_INDEX_TYPE_UINT32);
+
+ for(auto &instance: instances)
+ { // Object matrix.
+ glm::mat4 translation_matrix{1.0f};
+ translation_matrix = glm::translate(
+ translation_matrix, *instance->position);
+ glm::mat4 rotation_matrix{glm::toMat4(*instance->orientation)};
+
+ std::array<VkDescriptorSet, 4> vk_descriptor_sets{
+ cg_core.vk_light->descriptor_sets_world[image_index],
+ view->descriptor_sets_3d[image_index],
+ instance->descriptor_sets[image_index],
+ instance->texture->descriptor_sets[image_index]};
+
+ vkCmdBindDescriptorSets(
+ draw_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
+ cg_core.vk_graphics_pipeline_3d_layout->pipeline, 0,
+ vk_descriptor_sets.size(), vk_descriptor_sets.data(), 0, nullptr);
+
+ vkCmdDrawIndexed(
+ draw_command_buffer, skeletal_mesh->index_count, 1, 0, 0, 0);
+
+ VK::UDOSkeletalModel udo_skeletal_model{};
+ instance->tick(cg_core.delta_time);
+ udo_skeletal_model.base_matrix = translation_matrix * rotation_matrix;
+ std::copy(instance->bone_transforms.begin(),
+ instance->bone_transforms.end(),
+ udo_skeletal_model.bone_matrices);
+ instance->uniform_buffers[image_index].copy_data(&udo_skeletal_model);
+ }
}
{ // Update view uniform buffers