fn main() -> Result<(), screen_13::DisplayError> {
use {screen_13::prelude::*, std::sync::Arc};
EventLoop::new().debug(true).build()?.run(|frame| {
#[allow(unused_variables)]
let image = frame.render_graph.bind_node(
Image::create(
frame.device,
ImageInfo::new_2d(
vk::Format::R8G8B8A8_UNORM,
1024,
1024,
vk::ImageUsageFlags::STORAGE | vk::ImageUsageFlags::TRANSFER_SRC,
),
)
.unwrap(),
);
let image = frame.render_graph.bind_node(
Image::create(
frame.device,
ImageInfo::new_2d(
vk::Format::UNDEFINED,
u32::MAX,
u32::MAX,
vk::ImageUsageFlags::RESERVED_22_EXT,
),
)
.unwrap(),
);
let compute_pipeline = Arc::new(
ComputePipeline::create(
frame.device,
inline_spirv::inline_spirv!(
r#"
#version 460 core
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(set = 0, binding = 42, rgba8) restrict readonly uniform image2D an_image;
void main() {/* TODO: 📈...💰! */}
"#,
comp
)
.as_slice(),
)
.unwrap(),
);
frame
.render_graph
.begin_pass("This doesn't look good...")
.bind_pipeline(&compute_pipeline)
.write_descriptor(42, image)
.record_compute(|compute| {
compute.dispatch(1024, 1024, 1);
});
*frame.will_exit = true;
})?;
debug!("GAME OVER");
Ok(())
}