1 def draw_blit (blit_images : List<BlitImage>) = 2 let vulkan : Vulkan @auto 3 begin_label "Blit" 4 5 begin_for_swapchain Vector4.new 6 7 for blit_image in blit_images do 8 let image = blit_image.image 9 assert image <> null 10 11 if not vulkan.blit.image_descriptor_sets.contains image then 12 let descriptor_set = DescriptorSet.create 13 [(image, vulkan.blit.sampler).to_descriptor "source"] 14 vulkan.blit.pipeline_layout[0] 15 16 vulkan.blit.image_descriptor_sets.add image descriptor_set 17 18 let size = Vector2 x = vulkan.swapchain.width as f32 19 y = vulkan.swapchain.height as f32 20 21 bind_pipeline vulkan.blit.pipeline 22 bind_index_buffer vulkan.quad_index_buffer 0 6 23 bind_descriptor_set vulkan.blit.image_descriptor_sets[image] 0 24 25 let push_constant = BlitPushConstant 26 rect = [blit_image.offset.x as f32 / size.x 27 blit_image.offset.y as f32 / size.y 28 blit_image.image.width as f32 / size.x 29 blit_image.image.height as f32 / size.y] 30 31 set_push_constant push_constant@ptr 32 draw 33 34 end 35 36 end_label 37 38 endmodule 39