diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2026-08-15 22:46:53 -0700 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2026-08-15 22:46:53 -0700 |
| commit | d7eccba2055cd7784a0db6d9ee8692a4f3510931 (patch) | |
| tree | 37f4c19781c788fa2af1ee4eeb7195f49a6d2d7a /src/renderer/mod.rs | |
| parent | 05135beb87bbf0edace544b80ba40e327d9a89ac (diff) | |
fire, optimize viewport rendering
Diffstat (limited to 'src/renderer/mod.rs')
| -rw-r--r-- | src/renderer/mod.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index fcc5d36..4499688 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -212,8 +212,8 @@ impl RendererState { let mut renderer_chunks: Vec<RendererChunk> = Vec::new(); // match number of world chunks // TODO refactor so that this implicit - for _ in -10..10 { - for _ in -10..10 { + for _ in -10..1 { + for _ in -100..100 { let texture = device.create_texture(&wgpu::TextureDescriptor { label: None, mip_level_count: 1, @@ -336,7 +336,7 @@ impl RendererState { .resizable(false) // TODO collapse button .show_collapsible(ui, &mut true, |panel_ui| { - draw_egui(panel_ui, config, camera, diagnostics, input) + draw_egui(panel_ui, config, camera, diagnostics, input, world) }); }); @@ -449,9 +449,13 @@ impl RendererState { render_pass.set_bind_group(0, &self.camera_uniform_bind_group, &[]); + let (xl, xu, yl, yu) = camera.viewport_bounds_world(); + let ((cxl, cyl), _) = World::split_game_position(xl.floor() as i32, yl.floor() as i32); + let ((cxu, cyu), _) = World::split_game_position(xu.floor() as i32, yu.floor() as i32); + // TODO only visible chunks - for cx in -10..10 { - for cy in -10..10 { + for cx in cxl..=cxu { + for cy in cyl..=cyu { if let Some(idx) = world.chunk_position_to_chunk_idx.get(&(cx, cy)) { let render_chunk = &self.renderer_chunks[*idx]; render_pass.set_bind_group(1, &render_chunk.bind_group, &[]); |
