From 76b84cc648ff2bcb2bf2f504e4c5b36d47e72684 Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 1 Jun 2026 17:00:40 +0200 Subject: refactor(engine): rename 'renderer' module to 'rendering' --- engine/src/renderer/main_render_pass.rs | 247 -------------------------------- 1 file changed, 247 deletions(-) delete mode 100644 engine/src/renderer/main_render_pass.rs (limited to 'engine/src/renderer/main_render_pass.rs') diff --git a/engine/src/renderer/main_render_pass.rs b/engine/src/renderer/main_render_pass.rs deleted file mode 100644 index 0926d85..0000000 --- a/engine/src/renderer/main_render_pass.rs +++ /dev/null @@ -1,247 +0,0 @@ -use crate::asset::Assets; -use crate::draw_flags::{DrawFlags, NoDraw, PolygonModeConfig}; -use crate::ecs::query::term::{With, Without}; -use crate::ecs::sole::Single; -use crate::ecs::Query; -use crate::model::{MaterialSearchResult, Model}; -use crate::renderer::object::{Id as RendererObjectId, Store as RendererObjectStore}; -use crate::renderer::{ - BufferClearMask as RendererBufferClearMask, - Command as RendererCommand, - DrawMeshOptions as RendererDrawMeshOptions, - DrawProperties as RendererDrawProperties, - DrawPropertiesUpdateFlags as RendererDrawPropertiesUpdateFlags, - MeshUsage as RendererMeshUsage, - PendingShaderBindings, - RenderPass, - RenderPasses as RendererRenderPasses, - SurfaceSpec, -}; -use crate::shader::default::ASSET_LABEL as DEFAULT_SHADER_ASSET_LABEL; -use crate::shader::{ - Context as ShaderContext, - ModuleSource as ShaderModuleSource, - Shader, -}; -use crate::texture::{Texture, WHITE_1X1_ASSET_LABEL as TEXTURE_WHITE_1X1_ASSET_LABEL}; -use crate::windowing::window::Window; - -type RenderableEntity<'a> = ( - &'a Model, - Option<&'a DrawFlags>, - Option<&'a Shader>, - Option<&'a mut PendingShaderBindings>, -); - -#[tracing::instrument(skip_all)] -pub fn add_main_render_passes( - renderable_query: Query, (Without,)>, - window_surface_spec_query: Query<(&SurfaceSpec,), (With,)>, - assets: Single, - shader_context: Single, - mut render_passes: Single, - mut object_store: Single, -) -{ - let Some(default_shader_asset) = assets - .get_handle_to_loaded::(DEFAULT_SHADER_ASSET_LABEL.clone()) - else { - tracing::error!("Default shader asset is not loaded"); - return; - }; - - let render_pass = render_passes.passes.push_front_mut(RenderPass { - commands: Vec::with_capacity(30), - draw_properties: RendererDrawProperties::default(), - }); - - for (surface_spec,) in &window_surface_spec_query { - render_pass - .commands - .push(RendererCommand::MakeCurrent(surface_spec.id)); - - let default_texture_asset = assets - .get_handle_to_loaded::(TEXTURE_WHITE_1X1_ASSET_LABEL.clone()) - .expect("Not possible"); - - if !object_store.contains_maybe_pending_with_id(&RendererObjectId::Asset( - default_texture_asset.id(), - )) { - object_store - .insert_pending(RendererObjectId::Asset(default_texture_asset.id())); - - render_pass - .commands - .push(RendererCommand::CreateTexture(default_texture_asset)); - } - - render_pass.commands.push(RendererCommand::ClearBuffers( - RendererBufferClearMask::COLOR | RendererBufferClearMask::DEPTH, - )); - - for (model, draw_flags, shader, mut pending_shader_bindings) in &renderable_query - { - let shader_asset = match &shader { - Some(shader) => &shader.asset_handle, - None => &default_shader_asset, - }; - - let Some(pending_shader_bindings) = pending_shader_bindings.as_mut() else { - continue; - }; - - if pending_shader_bindings.bindings.is_empty() - && pending_shader_bindings.surface_specific_bindings.is_empty() - { - continue; - } - - let Some(model_spec) = assets.get(&model.spec_asset) else { - continue; - }; - - let Some(mesh_asset) = &model_spec.mesh_asset else { - continue; - }; - - if assets.get(mesh_asset).is_none() { - continue; - } - - debug_assert!(model_spec.material_names.len() <= 1); - - let model_material_asset = match model_spec.find_first_material(&assets) { - MaterialSearchResult::Found(model_material_asset) => { - model_material_asset.clone() - // Some(model_material_asset.clone()) - } - MaterialSearchResult::NotFound | MaterialSearchResult::NoMaterials => { - // MaterialSearchResult::NotFound => { - continue; - } // MaterialSearchResult::NoMaterials => None, - }; - - if !object_store.contains_maybe_pending_with_id(&RendererObjectId::Asset( - shader_asset.id(), - )) { - let Some(shader_program) = shader_context.get_program(&shader_asset.id()) - else { - tracing::error!( - "Shader context doesn't have a program for shader asset {:?}", - assets.get_label(&shader_asset) - ); - continue; - }; - - object_store.insert_pending(RendererObjectId::Asset(shader_asset.id())); - - render_pass - .commands - .push(RendererCommand::CreateShaderProgram( - RendererObjectId::Asset(shader_asset.id()), - shader_program.clone(), - )); - } - - render_pass.commands.push(RendererCommand::ActivateShader( - RendererObjectId::Asset(shader_asset.id()), - )); - - let Some(model_material) = assets.get(&model_material_asset) else { - // TODO: Handle this case since it may occur - unreachable!(); - }; - - for texture_asset in [ - &model_material.ambient_map, - &model_material.diffuse_map, - &model_material.specular_map, - ] - .into_iter() - .flatten() - { - if !object_store.contains_maybe_pending_with_id(&RendererObjectId::Asset( - texture_asset.id(), - )) { - object_store - .insert_pending(RendererObjectId::Asset(texture_asset.id())); - - render_pass - .commands - .push(RendererCommand::CreateTexture(texture_asset.clone())); - } - } - - for (shader_binding_loc, shader_binding_val) in - &pending_shader_bindings.bindings - { - render_pass.commands.push(RendererCommand::SetShaderBinding( - shader_binding_loc.clone(), - shader_binding_val.clone(), - )); - } - - for (shader_binding_surface_id, shader_binding_loc, shader_binding_val) in - &pending_shader_bindings.surface_specific_bindings - { - if *shader_binding_surface_id != surface_spec.id { - continue; - } - - render_pass.commands.push(RendererCommand::SetShaderBinding( - shader_binding_loc.clone(), - shader_binding_val.clone(), - )); - } - - if let Some(draw_flags) = draw_flags.as_deref().and_then(|draw_flags| { - if draw_flags.polygon_mode_config != PolygonModeConfig::default() { - Some(draw_flags) - } else { - None - } - }) { - render_pass - .commands - .push(RendererCommand::UpdateDrawProperties( - RendererDrawProperties { - polygon_mode_config: draw_flags.polygon_mode_config.clone(), - ..Default::default() - }, - RendererDrawPropertiesUpdateFlags::POLYGON_MODE_CONFIG, - )); - } - - if !object_store - .contains_maybe_pending_with_id(&RendererObjectId::Asset(mesh_asset.id())) - { - object_store.insert_pending(RendererObjectId::Asset(mesh_asset.id())); - - render_pass.commands.push(RendererCommand::CreateMesh { - obj_id: RendererObjectId::Asset(mesh_asset.id()), - mesh: None, - usage: RendererMeshUsage::Static, - }); - } - - render_pass.commands.push(RendererCommand::DrawMesh( - RendererObjectId::Asset(mesh_asset.id()), - RendererDrawMeshOptions::default(), - )); - - if draw_flags.as_deref().is_some_and(|draw_flags| { - draw_flags.polygon_mode_config != PolygonModeConfig::default() - }) { - render_pass - .commands - .push(RendererCommand::UpdateDrawProperties( - RendererDrawProperties { - polygon_mode_config: PolygonModeConfig::default(), - ..Default::default() - }, - RendererDrawPropertiesUpdateFlags::POLYGON_MODE_CONFIG, - )); - } - } - } -} -- cgit v1.2.3-18-g5258