summaryrefslogtreecommitdiff
path: root/src/renderer/mod.rs
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-15 22:46:53 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-15 22:46:53 -0700
commitd7eccba2055cd7784a0db6d9ee8692a4f3510931 (patch)
tree37f4c19781c788fa2af1ee4eeb7195f49a6d2d7a /src/renderer/mod.rs
parent05135beb87bbf0edace544b80ba40e327d9a89ac (diff)
fire, optimize viewport rendering
Diffstat (limited to 'src/renderer/mod.rs')
-rw-r--r--src/renderer/mod.rs14
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, &[]);