diff options
Diffstat (limited to 'engine/src/renderer/opengl.rs')
-rw-r--r-- | engine/src/renderer/opengl.rs | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index 00ce2f8..858a899 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -65,7 +65,7 @@ use crate::projection::{ClipVolume, Projection}; use crate::renderer::opengl::vertex::{AttributeComponentType, Vertex}; use crate::renderer::RENDER_PHASE; use crate::texture::{Id as TextureId, Texture}; -use crate::transform::{Position, Scale}; +use crate::transform::{Scale, WorldPosition}; use crate::util::{defer, Defer, RefOrValue}; use crate::vector::{Vec2, Vec3}; use crate::window::Window; @@ -76,7 +76,7 @@ type RenderableEntity<'a> = ( &'a Mesh, &'a Material, Option<&'a MaterialFlags>, - Option<&'a Position>, + Option<&'a WorldPosition>, Option<&'a Scale>, Option<&'a DrawFlags>, Option<&'a GlObjects>, @@ -137,16 +137,16 @@ fn initialize(window: Single<Window>) #[allow(clippy::too_many_arguments)] fn render( query: Query<RenderableEntity<'_>, (Without<NoDraw>,)>, - point_light_query: Query<(&PointLight, &Position)>, + point_light_query: Query<(&PointLight, &WorldPosition)>, directional_lights: Query<(&DirectionalLight,)>, - camera_query: Query<(&Camera, &Position, &ActiveCamera)>, + camera_query: Query<(&Camera, &WorldPosition, &ActiveCamera)>, window: Single<Window>, global_light: Single<GlobalLight>, mut gl_objects: Local<GlobalGlObjects>, mut actions: Actions, ) { - let Some((camera, camera_pos, _)) = camera_query.iter().next() else { + let Some((camera, camera_world_pos, _)) = camera_query.iter().next() else { tracing::warn!("No current camera. Nothing will be rendered"); return; }; @@ -190,7 +190,7 @@ fn render( }, shader_program, &camera, - &camera_pos, + &camera_world_pos, window.size().expect("Failed to get window size"), ); @@ -205,7 +205,7 @@ fn render( .map(|(dir_light,)| &**dir_light) .collect::<Vec<_>>() .as_slice(), - &camera_pos, + &camera_world_pos, ); for (index, texture) in material.textures.iter().enumerate() { @@ -442,14 +442,14 @@ fn apply_transformation_matrices( transformation: Transformation, gl_shader_program: &mut GlShaderProgram, camera: &Camera, - camera_pos: &Position, + camera_world_pos: &WorldPosition, window_size: Dimens<u32>, ) { gl_shader_program .set_uniform(c"model", &create_transformation_matrix(transformation)); - let view_matrix = create_view_matrix(camera, &camera_pos.position); + let view_matrix = create_view_matrix(camera, &camera_world_pos.position); gl_shader_program.set_uniform(c"view", &view_matrix); @@ -459,9 +459,8 @@ fn apply_transformation_matrices( window_size.width as f32 / window_size.height as f32, ClipVolume::NegOneToOne, ), - Projection::Orthographic(orthographic_proj) => { - orthographic_proj.to_matrix_rh(&camera_pos.position, ClipVolume::NegOneToOne) - } + Projection::Orthographic(orthographic_proj) => orthographic_proj + .to_matrix_rh(&camera_world_pos.position, ClipVolume::NegOneToOne), }; gl_shader_program.set_uniform(c"projection", &proj_matrix); @@ -476,13 +475,13 @@ fn apply_light<'point_light>( impl Iterator< Item = ( ComponentHandle<'point_light, PointLight>, - ComponentHandle<'point_light, Position>, + ComponentHandle<'point_light, WorldPosition>, ), >, usize, ), directional_lights: &[&DirectionalLight], - camera_pos: &Position, + camera_world_pos: &WorldPosition, ) { debug_assert!( @@ -588,7 +587,7 @@ fn apply_light<'point_light>( gl_shader_program.set_uniform(c"material.shininess", &material.shininess); - gl_shader_program.set_uniform(c"view_pos", &camera_pos.position); + gl_shader_program.set_uniform(c"view_pos", &camera_world_pos.position); } fn set_light_attenuation_uniforms( |