Add scene and renderer selection to egui

This commit is contained in:
hal8174 2024-11-28 17:59:46 +01:00
parent d4bf1845cb
commit 1bfef16afa
6 changed files with 200 additions and 100 deletions

View file

@ -1,5 +1,6 @@
use egui_winit_vulkano::{Gui, GuiConfig};
use render::render_thread;
use ray_tracing_scene::examples::example_scenes;
use render::{render_thread, RENDERER};
use setup::{get_compute_pipeline, get_framebuffers};
use std::sync::Arc;
use vulkano::{
@ -87,9 +88,13 @@ fn main() {
let (control_tx, control_rx) = std::sync::mpsc::channel();
let (data_tx, data_rx) = std::sync::mpsc::channel();
let scenes = example_scenes::<rand::rngs::SmallRng>();
let mut settings = render::RenderSettings {
width: window.inner_size().width,
height: window.inner_size().height,
scene: scenes.keys().next().unwrap(),
renderer_id: 0,
};
let send_settings = settings.clone();
@ -163,10 +168,28 @@ fn main() {
pipeline = get_compute_pipeline(device.clone(), cs.clone());
}
let mut settings_changed = false;
gui.immediate_ui(|gui| {
let ctx = gui.context();
egui::Window::new("panel").show(&ctx, |ui| {
ui.heading("fdjkslf");
ui.collapsing("Scene Settings:", |ui| {
egui::ComboBox::from_label("Scene")
.selected_text(settings.scene)
.show_ui(ui, |ui| {
for &label in scenes.keys() {
settings_changed |= ui
.selectable_value(&mut settings.scene, label, label)
.changed();
}
});
});
settings_changed |= egui::ComboBox::from_label("Renderer")
.selected_text(RENDERER[settings.renderer_id].0)
.show_index(ui, &mut settings.renderer_id, RENDERER.len(), |i| {
RENDERER[i].0
})
.changed();
ui.collapsing("Render Settings:", |ui| {
ui.label(format!("{:#?}", &settings));
@ -174,6 +197,10 @@ fn main() {
});
});
if settings_changed {
let _ = control_tx.send(settings.clone());
}
let (image_i, suboptimal, acquire_future) =
match swapchain::acquire_next_image(swapchain.clone(), None)
.map_err(Validated::unwrap)