diff options
| -rw-r--r-- | engine/src/rendering/backend/opengl.rs | 31 | ||||
| -rw-r--r-- | engine/src/rendering/object.rs | 8 | ||||
| -rw-r--r-- | engine/src/shader/cursor.rs | 9 | ||||
| -rw-r--r-- | engine/src/shader/default.rs | 12 | ||||
| -rw-r--r-- | engine/src/ui/imgui.rs | 13 |
5 files changed, 45 insertions, 28 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs index f8be5b4..fbb402c 100644 --- a/engine/src/rendering/backend/opengl.rs +++ b/engine/src/rendering/backend/opengl.rs @@ -101,9 +101,9 @@ use crate::rendering::{ GraphicsProperties, SurfaceId, SurfaceSpec, + TargetWindow, POST_RENDER_PHASE, RENDER_PHASE, - TargetWindow }; use crate::shader::cursor::BindingValue as ShaderBindingValue; use crate::shader::{ @@ -265,7 +265,7 @@ fn prepare_windows( fn init_window_graphics( window_query: Query< (&Window, &WindowGlConfig), - (With<TargetWindow>, Without<SurfaceSpec>,) + (With<TargetWindow>, Without<SurfaceSpec>), >, windowing_context: Single<WindowingContext>, graphics_props: Single<GraphicsProperties>, @@ -301,7 +301,9 @@ fn init_window_graphics( } }; - let Ok(window_inner_size) = PhysicalSize::<NonZero<u32>>::try_convert_from(window.inner_size.clone()) else { + let Ok(window_inner_size) = + PhysicalSize::<NonZero<u32>>::try_convert_from(window.inner_size.clone()) + else { tracing::error!( "Cannot create a surface for a window with a width/height of 0", ); @@ -353,8 +355,8 @@ fn init_window_graphics( &Vec2 { x: 0, y: 0 }.into(), &opengl_bindings::data_types::Dimens { width: window.inner_size.width, - height: window.inner_size.height - } + height: window.inner_size.height, + }, ) { tracing::error!("Failed to set viewport: {err}"); } @@ -474,8 +476,8 @@ fn handle_commands( &Vec2 { x: 0, y: 0 }.into(), &opengl_bindings::data_types::Dimens { width: surface.size.width, - height: surface.size.height - } + height: surface.size.height, + }, ) { tracing::error!("Failed to set viewport: {err}"); } @@ -497,8 +499,8 @@ fn handle_commands( &Vec2 { x: 0, y: 0 }.into(), &opengl_bindings::data_types::Dimens { width: surface.size.width, - height: surface.size.height - } + height: surface.size.height, + }, ) { tracing::error!("Failed to set viewport: {err}"); } @@ -588,14 +590,15 @@ fn handle_commands( continue; }; - if let ShaderBindingValue::Texture(texture_asset) = &binding_value { - let Some(texture_obj) = object_store - .get_texture_obj(&ObjectId::Asset(texture_asset.id())) + if let ShaderBindingValue::Texture(texture_object_id) = &binding_value { + let Some(texture_obj) = + object_store.get_texture_obj(texture_object_id) else { tracing::error!( - "Texture {:?} does not exist in rendering object store", - assets.get_label(texture_asset) + texture_object_id = ?texture_object_id, + "Texture does not exist in rendering object store", ); + continue; }; diff --git a/engine/src/rendering/object.rs b/engine/src/rendering/object.rs index ead20e6..3fcb461 100644 --- a/engine/src/rendering/object.rs +++ b/engine/src/rendering/object.rs @@ -34,6 +34,14 @@ impl Id } } +impl From<AssetId> for Id +{ + fn from(asset_id: AssetId) -> Self + { + Self::Asset(asset_id) + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct SequentialId(u64); diff --git a/engine/src/shader/cursor.rs b/engine/src/shader/cursor.rs index 0522858..8011012 100644 --- a/engine/src/shader/cursor.rs +++ b/engine/src/shader/cursor.rs @@ -1,8 +1,7 @@ -use crate::asset::Handle as AssetHandle; -use crate::matrix::Matrix; +use crate::data_types::matrix::Matrix; +use crate::data_types::vector::Vec3; +use crate::rendering::object::Id as RenderingObjectId; use crate::shader::{TypeKind, TypeLayout, VariableLayout}; -use crate::texture::Texture; -use crate::vector::Vec3; /// Shader cursor #[derive(Clone)] @@ -116,7 +115,7 @@ pub enum BindingValue Float(f32), FVec3(Vec3<f32>), FMat4x4(Matrix<f32, 4, 4>), - Texture(AssetHandle<Texture>), + Texture(RenderingObjectId), } impl From<u32> for BindingValue diff --git a/engine/src/shader/default.rs b/engine/src/shader/default.rs index 27a38b6..c174e8b 100644 --- a/engine/src/shader/default.rs +++ b/engine/src/shader/default.rs @@ -282,7 +282,9 @@ pub fn enqueue_set_shader_bindings( assets .get_handle_to_loaded(TEXTURE_WHITE_1X1_ASSET_LABEL.clone()) .expect("Not possible") - }), + }) + .id() + .into(), ), )); @@ -297,7 +299,9 @@ pub fn enqueue_set_shader_bindings( assets .get_handle_to_loaded(TEXTURE_WHITE_1X1_ASSET_LABEL.clone()) .expect("Not possible") - }), + }) + .id() + .into(), ), )); @@ -312,7 +316,9 @@ pub fn enqueue_set_shader_bindings( assets .get_handle_to_loaded(TEXTURE_WHITE_1X1_ASSET_LABEL.clone()) .expect("Not possible") - }), + }) + .id() + .into(), ), )); diff --git a/engine/src/ui/imgui.rs b/engine/src/ui/imgui.rs index daf8494..5565455 100644 --- a/engine/src/ui/imgui.rs +++ b/engine/src/ui/imgui.rs @@ -186,12 +186,13 @@ fn handle_window_changed( let window_size_logical = PhysicalSize { width: window.inner_size.width as f64, height: window.inner_size.height as f64, - }.to_logical::<f64>(hidpi_factor); + } + .to_logical::<f64>(hidpi_factor); - context - .ctx - .get_io_mut() - .set_display_size([window_size_logical.width as f32, window_size_logical.height as f32]); + context.ctx.get_io_mut().set_display_size([ + window_size_logical.width as f32, + window_size_logical.height as f32, + ]); } fn update( @@ -580,7 +581,7 @@ fn add_drawing_render_pass( ), RenderingCommand::SetShaderBinding( shader_cursor.field("main_texture").into_binding_location(), - ShaderBindingValue::Texture(font_texture_asset), + ShaderBindingValue::Texture(font_texture_asset.id().into()), ), ]); |
