use vulkanalia::prelude::v1_0::*; // The Vulkan handles and associated properties used by our Vulkan app. #[derive(Clone, Debug, Default)] pub struct AppData { pub surface: vk::SurfaceKHR, pub messenger: vk::DebugUtilsMessengerEXT, pub physical_device: vk::PhysicalDevice, pub graphics_queue: vk::Queue, pub present_queue: vk::Queue, pub swapchain_format: vk::Format, pub swapchain_extent: vk::Extent2D, pub swapchain: vk::SwapchainKHR, pub swapchain_images: Vec<vk::Image>, pub swapchain_image_views: Vec<vk::ImageView>, pub descriptor_set_layout: vk::DescriptorSetLayout, pub pipeline_layout: vk::PipelineLayout, pub render_pass: vk::RenderPass, pub pipeline_cube: vk::Pipeline, pub pipeline_cuboid: vk::Pipeline, pub pipeline_quad: vk::Pipeline, pub pipeline_compute: vk::Pipeline, pub framebuffers: Vec<vk::Framebuffer>, pub command_pool: vk::CommandPool, pub command_buffers: Vec<vk::CommandBuffer>, pub image_available_semaphores: Vec<vk::Semaphore>, pub render_finished_semaphores: Vec<vk::Semaphore>, pub in_flight_fences: Vec<vk::Fence>, pub images_in_flight: Vec<vk::Fence>, pub uniform_buffers: Vec<vk::Buffer>, pub uniform_buffers_memory: Vec<vk::DeviceMemory>, pub render_storage_buffers: Vec<vk::Buffer>, pub render_storage_buffers_memory: Vec<vk::DeviceMemory>, pub compute_in_storage_buffers: Vec<vk::Buffer>, pub compute_in_storage_buffers_memory: Vec<vk::DeviceMemory>, pub compute_out_storage_buffers: Vec<vk::Buffer>, pub compute_out_storage_buffers_memory: Vec<vk::DeviceMemory>, pub descriptor_pool: vk::DescriptorPool, pub descriptor_sets: Vec<vk::DescriptorSet>, pub mip_levels: u32, pub texture_image: vk::Image, pub texture_image_memory: vk::DeviceMemory, pub texture_image_view: vk::ImageView, pub texture_sampler: vk::Sampler, pub depth_image: vk::Image, pub depth_image_memory: vk::DeviceMemory, pub depth_image_view: vk::ImageView, pub msaa_samples: vk::SampleCountFlags, pub color_image: vk::Image, pub color_image_memory: vk::DeviceMemory, pub color_image_view: vk::ImageView, pub use_geometry_shader: bool, pub topology: vk::PrimitiveTopology, pub scene_rt_memory_size: u64, pub scene_rt_volumetric_size: u64, pub compute_task_one_size: usize, // values passed to shader pub num_lights_per_volume: u32, pub min_light_weight: f32, pub max_iterations_per_light: u32, pub diffuse_raster_steps: u32, pub diffuse_raster_size: f32, pub max_recursive_rays: u32, pub diffuse_rays_per_hit: u32, }