|
|
@ -828,7 +828,6 @@ fn write_desc_sets(
|
|
|
|
desc_sets: &Vec<vk::DescriptorSet>,
|
|
|
|
desc_sets: &Vec<vk::DescriptorSet>,
|
|
|
|
mesh_buf: &vk::Buffer,
|
|
|
|
mesh_buf: &vk::Buffer,
|
|
|
|
image_view: vk::ImageView,
|
|
|
|
image_view: vk::ImageView,
|
|
|
|
skybox_sampler: vk::Sampler
|
|
|
|
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
let buf_info = vk::DescriptorBufferInfo::default()
|
|
|
|
let buf_info = vk::DescriptorBufferInfo::default()
|
|
|
|
.buffer(*mesh_buf)
|
|
|
|
.buffer(*mesh_buf)
|
|
|
@ -843,9 +842,8 @@ fn write_desc_sets(
|
|
|
|
.buffer_info(&buf_infos);
|
|
|
|
.buffer_info(&buf_infos);
|
|
|
|
|
|
|
|
|
|
|
|
let img_info = vk::DescriptorImageInfo::default()
|
|
|
|
let img_info = vk::DescriptorImageInfo::default()
|
|
|
|
.image_layout(vk::ImageLayout::GENERAL)
|
|
|
|
.image_layout(vk::ImageLayout::UNDEFINED)
|
|
|
|
.image_view(image_view)
|
|
|
|
.image_view(image_view);
|
|
|
|
.sampler(skybox_sampler);
|
|
|
|
|
|
|
|
let img_infos = &[img_info];
|
|
|
|
let img_infos = &[img_info];
|
|
|
|
let img_desc = vk::WriteDescriptorSet::default()
|
|
|
|
let img_desc = vk::WriteDescriptorSet::default()
|
|
|
|
.dst_set(desc_sets[0])
|
|
|
|
.dst_set(desc_sets[0])
|
|
|
@ -946,30 +944,6 @@ fn record_commands(
|
|
|
|
.clear_values(&clear_vals);
|
|
|
|
.clear_values(&clear_vals);
|
|
|
|
|
|
|
|
|
|
|
|
unsafe {
|
|
|
|
unsafe {
|
|
|
|
let regions = (0..6)
|
|
|
|
|
|
|
|
.map(|i| {
|
|
|
|
|
|
|
|
vk::BufferImageCopy::default()
|
|
|
|
|
|
|
|
.buffer_offset(3 * 2048 * 2048 * i)
|
|
|
|
|
|
|
|
.buffer_row_length(0)
|
|
|
|
|
|
|
|
.buffer_image_height(0)
|
|
|
|
|
|
|
|
.image_offset(vk::Offset3D::default())
|
|
|
|
|
|
|
|
.image_extent(vk::Extent3D::default().width(2048).height(2048).depth(1))
|
|
|
|
|
|
|
|
.image_subresource(
|
|
|
|
|
|
|
|
vk::ImageSubresourceLayers::default()
|
|
|
|
|
|
|
|
.aspect_mask(vk::ImageAspectFlags::COLOR)
|
|
|
|
|
|
|
|
.mip_level(0)
|
|
|
|
|
|
|
|
.layer_count(1)
|
|
|
|
|
|
|
|
.base_array_layer(i as u32),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.collect::<Vec<_>>();
|
|
|
|
|
|
|
|
dev.cmd_copy_buffer_to_image(
|
|
|
|
|
|
|
|
*cmd_buf,
|
|
|
|
|
|
|
|
*skybox_buffer,
|
|
|
|
|
|
|
|
*skybox_image,
|
|
|
|
|
|
|
|
vk::ImageLayout::GENERAL,
|
|
|
|
|
|
|
|
®ions,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
dev.cmd_begin_render_pass(*cmd_buf, &render_pass_info, vk::SubpassContents::INLINE);
|
|
|
|
dev.cmd_begin_render_pass(*cmd_buf, &render_pass_info, vk::SubpassContents::INLINE);
|
|
|
|
dev.cmd_bind_pipeline(*cmd_buf, vk::PipelineBindPoint::GRAPHICS, *pipe);
|
|
|
|
dev.cmd_bind_pipeline(*cmd_buf, vk::PipelineBindPoint::GRAPHICS, *pipe);
|
|
|
|
dev.cmd_bind_descriptor_sets(
|
|
|
|
dev.cmd_bind_descriptor_sets(
|
|
|
@ -1037,7 +1011,30 @@ fn record_commands(
|
|
|
|
base_color.as_ref(),
|
|
|
|
base_color.as_ref(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let regions = (0..6)
|
|
|
|
|
|
|
|
.map(|i| {
|
|
|
|
|
|
|
|
vk::BufferImageCopy::default()
|
|
|
|
|
|
|
|
.buffer_offset(3 * 2048 * 2048 * i)
|
|
|
|
|
|
|
|
.buffer_row_length(0)
|
|
|
|
|
|
|
|
.buffer_image_height(0)
|
|
|
|
|
|
|
|
.image_offset(vk::Offset3D::default())
|
|
|
|
|
|
|
|
.image_extent(vk::Extent3D::default().width(2048).height(2048).depth(1))
|
|
|
|
|
|
|
|
.image_subresource(
|
|
|
|
|
|
|
|
vk::ImageSubresourceLayers::default()
|
|
|
|
|
|
|
|
.aspect_mask(vk::ImageAspectFlags::COLOR)
|
|
|
|
|
|
|
|
.mip_level(0)
|
|
|
|
|
|
|
|
.layer_count(1)
|
|
|
|
|
|
|
|
.base_array_layer(i as u32),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.collect::<Vec<_>>();
|
|
|
|
|
|
|
|
dev.cmd_copy_buffer_to_image(
|
|
|
|
|
|
|
|
*cmd_buf,
|
|
|
|
|
|
|
|
*skybox_buffer,
|
|
|
|
|
|
|
|
*skybox_image,
|
|
|
|
|
|
|
|
vk::ImageLayout::GENERAL,
|
|
|
|
|
|
|
|
®ions,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
dev.cmd_draw(*cmd_buf, 36, 1, 0, 0);
|
|
|
|
dev.cmd_draw(*cmd_buf, 36, 1, 0, 0);
|
|
|
|
dev.cmd_end_render_pass(*cmd_buf);
|
|
|
|
dev.cmd_end_render_pass(*cmd_buf);
|
|
|
@ -1147,7 +1144,7 @@ fn handle_cont_key(keycode: Keycode, camera: &mut Camera, mouse: &MouseUtil) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn decode_rif(raw: &[u8]) -> &[u8] {
|
|
|
|
fn decode_rif(raw: &[u8]) -> &[u8] {
|
|
|
|
&raw[17..]
|
|
|
|
&raw[18..]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
fn main() {
|
|
|
@ -1239,16 +1236,10 @@ fn main() {
|
|
|
|
.tiling(vk::ImageTiling::OPTIMAL)
|
|
|
|
.tiling(vk::ImageTiling::OPTIMAL)
|
|
|
|
.usage(vk::ImageUsageFlags::TRANSFER_DST | vk::ImageUsageFlags::SAMPLED)
|
|
|
|
.usage(vk::ImageUsageFlags::TRANSFER_DST | vk::ImageUsageFlags::SAMPLED)
|
|
|
|
.sharing_mode(vk::SharingMode::EXCLUSIVE)
|
|
|
|
.sharing_mode(vk::SharingMode::EXCLUSIVE)
|
|
|
|
.initial_layout(vk::ImageLayout::UNDEFINED)
|
|
|
|
.initial_layout(vk::ImageLayout::GENERAL)
|
|
|
|
.queue_family_indices(&qf_idxs);
|
|
|
|
.queue_family_indices(&qf_idxs);
|
|
|
|
let image =
|
|
|
|
let image =
|
|
|
|
unsafe { dev.create_image(&create_info, None) }.expect("Failed to create image");
|
|
|
|
unsafe { dev.create_image(&create_info, None) }.expect("Failed to create image");
|
|
|
|
|
|
|
|
|
|
|
|
let skybox_mem_size: vk::MemoryRequirements = unsafe {dev.get_image_memory_requirements(image)};
|
|
|
|
|
|
|
|
let skybox_dev_mem = mem_alloc(&dev, host_invisible_inx, skybox_mem_size.size);
|
|
|
|
|
|
|
|
unsafe {
|
|
|
|
|
|
|
|
dev.bind_image_memory(image, skybox_dev_mem, 0).expect("Failed to bind image memory");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
let create_info = vk::ImageViewCreateInfo::default()
|
|
|
|
let create_info = vk::ImageViewCreateInfo::default()
|
|
|
|
.image(image)
|
|
|
|
.image(image)
|
|
|
|
.view_type(vk::ImageViewType::CUBE)
|
|
|
|
.view_type(vk::ImageViewType::CUBE)
|
|
|
@ -1277,7 +1268,6 @@ fn main() {
|
|
|
|
let sampler =
|
|
|
|
let sampler =
|
|
|
|
unsafe { dev.create_sampler(&create_info, None) }.expect("Failed to create sampler");
|
|
|
|
unsafe { dev.create_sampler(&create_info, None) }.expect("Failed to create sampler");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(image, image_view, sampler)
|
|
|
|
(image, image_view, sampler)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
@ -1353,7 +1343,7 @@ fn main() {
|
|
|
|
|
|
|
|
|
|
|
|
let desc_sets = make_desc_sets(&dev, &desc_pool);
|
|
|
|
let desc_sets = make_desc_sets(&dev, &desc_pool);
|
|
|
|
|
|
|
|
|
|
|
|
write_desc_sets(&dev, &desc_sets, &mesh_buf, skybox_image_view, skybox_sampler);
|
|
|
|
write_desc_sets(&dev, &desc_sets, &mesh_buf, skybox_image_view);
|
|
|
|
|
|
|
|
|
|
|
|
let sem_avail = make_sem(&dev);
|
|
|
|
let sem_avail = make_sem(&dev);
|
|
|
|
let sem_finish = make_sem(&dev);
|
|
|
|
let sem_finish = make_sem(&dev);
|
|
|
|