Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void vk_cmd_buffers_compute_record(VkPipeline compute, VkPipelineLayout compute_layout, VkCommandBuffer compute_cmds, VkDescriptorSet *sets)
- {
- VkCommandBufferBeginInfo compute_cmds_begin_info = vk_cmd_buffers_begin_info_init(0);
- if (vkBeginCommandBuffer(compute_cmds, &compute_cmds_begin_info)!= VK_SUCCESS)
- {
- printf("Failed to begin recording compute command buffer\n");
- }
- vkCmdBindPipeline(compute_cmds, VK_PIPELINE_BIND_POINT_COMPUTE, compute);
- galaxy_params g =
- {
- .star_count = STAR_COUNT,
- .max_rad = 3500.0,
- .bulge_rad = 1250.0,
- .angle = 6.28,
- .eccentricity = 0.85,
- .base_height = 300.0,
- .height = 250.0,
- .dust_temp = 4000.0,
- .min_temp = 1900.0,
- .max_temp = 50000.0,
- .min_star_opacity = 0.1,
- .max_star_opacity = 0.5,
- .min_dust_opacity = 0.01,
- .max_dust_opacity = 0.05,
- .speed = 10.0
- };
- /*
- VkMemoryBarrier memory =
- {
- .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
- .pNext = NULL,
- .srcAccessMask = VK_ACCESS_HOST_WRITE_BIT,
- .dstAccessMask = VK_ACCESS_SHADER_READ_BIT
- };
- vkCmdPipelineBarrier(compute_cmds, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, 0, 1, &memory, 0, NULL, 0, NULL);*/
- uint32_t offsets[3] = {0, 0, 0};
- vkCmdBindDescriptorSets(compute_cmds, VK_PIPELINE_BIND_POINT_COMPUTE, compute_layout, 0, 1, sets, 3, offsets);
- vkCmdPushConstants(compute_cmds, compute_layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(g), &g);
- vkCmdDispatch(compute_cmds, PARTICLE_COUNT / PARTICLE_DISPATCH_SIZE, 1, 1);
- /*
- VkMemoryBarrier barrier =
- {
- .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
- .pNext = NULL,
- .srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT,
- .dstAccessMask = VK_ACCESS_SHADER_READ_BIT
- };
- vkCmdPipelineBarrier(compute_cmds, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 1, &barrier, 0, NULL, 0, NULL);*/
- if (vkEndCommandBuffer(compute_cmds) != VK_SUCCESS)
- {
- printf("Failed to record compute command buffer\n");
- }
- }
- static void vk_cmd_buffers_galaxy_record(VkPipeline galaxy, VkPipelineLayout galaxy_layout, VkCommandBuffer cmd_buffers, VkBuffer indirect_cmds, VkBuffer compute_count, VkDescriptorSet *sets)
- {
- uint32_t offset = 0;
- vkCmdBindPipeline(cmd_buffers, VK_PIPELINE_BIND_POINT_GRAPHICS, galaxy);
- vkCmdBindDescriptorSets(cmd_buffers, VK_PIPELINE_BIND_POINT_GRAPHICS, galaxy_layout, 0, 1, sets, 1, &offset);
- galaxy_info info =
- {
- .star_count = STAR_COUNT,
- .time = glfwGetTime(),
- .min_temp = 1900.0,
- .max_temp = 50000.0,
- .star_size = 10.0,
- .dust_size = 500.0,
- .h2size = 150.0,
- .h2dist = 300.0
- };
- vkCmdPushConstants(cmd_buffers, galaxy_layout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(info), &info);
- //vkCmdDraw(cmd_buffers, 6 * PARTICLE_COUNT, 1, 0, 0);
- vkCmdDrawIndirectCount(cmd_buffers, indirect_cmds, 0, compute_count, 0, 6 * PARTICLE_COUNT, sizeof(VkDrawIndirectCommand));
- }
Advertisement
Add Comment
Please, Sign In to add comment