54 Commits
Author SHA1 Message Date
ElyTheCat 76e92e12de Merge branch 'main' into perf/entity-occlusion-culling-pipeline 2026-11-05 08:05:40 +03:30
ElyTheCat be4c480e9c Merge branch 'main' into perf/entity-occlusion-culling-pipeline
# Conflicts:
#	crates/horizon-client/src/game/item_draw.rs
2026-11-05 06:53:56 +03:30
ElyTheCatandCodex gpt-6.1-sol e62b4a1eae perf(entity-culling): hide entities in sections the graph never reached
Reject an entity whose padded render bounds lie entirely in terrain sections the renderer's visibility graph cannot reach, before any per-entity occlusion query runs; the graph must know the camera's own section, and unknown cells fail open to the existing paths. Add tests for the graph's answer and the bounds-to-section span, and tidy the fully-qualified occlusion calls in the culling tests.

Co-Authored-By: Codex gpt-6.1-sol <[email protected]>
2026-11-05 06:51:14 +03:30
ElyTheCatandOpenAI Codex 5e9c0a708f bench: add entity occlusion release captures
Add FPS-overlay captures from the release OpenGL benchmark for PR #8941. The measured source revision is d87992b.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-05 04:39:35 +03:30
ElyTheCatandOpenAI Codex d87992bdf3 perf(entity-culling): reduce occlusion query overhead
Skip doomed async work while the camera moves, reduce synchronous voxel-plane lookups, and cull dynamic block entities before generating their geometry. Reuse chest state and remove dye-prefix sorting from the block-entity hot path.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-05 03:23:26 +03:30
ElyTheCat 3ec390a6b8 Merge branch 'main' into perf/entity-occlusion-culling-pipeline 2026-11-04 21:14:37 +03:30
ElyTheCatandCodex gpt-6.1-sol 8f5ba77ab3 Fix entity culling review safety cases
Bind hidden proof reuse to the exact camera and use render-complete bounds for non-mob entities. Keep the async worker active independently of the mob precheck and preserve shader-pack shadow spans.

Co-Authored-By: Codex gpt-6.1-sol <[email protected]>
2026-11-04 16:22:39 +03:30
ElyTheCat c7d577e4c8 Optimize creature and projectile tick hot paths
Reuse the mob world snapshot without cloning per mob, skip unloaded work before nearest-player and difficulty queries, cache difficulty by chunk, and avoid guest-target allocations when no LAN guests exist. Empty projectile ticks now flush queued effects and return without scanning mobs or constructing projectile state.\n\nCo-Authored-By: OpenAI Codex <[email protected]>
2026-11-04 07:35:05 +03:30
ElyTheCat abb852a057 Merge branch 'main' into perf/entity-occlusion-culling-pipeline 2026-11-04 06:37:50 +03:30
ElyTheCat df94a9512f Change OpenGL version in README
Updated the OpenGL version in the README from 4.6 to 4.2.
2026-11-04 06:34:36 +03:30
ElyTheCatandOpenAI Codex 70411290d6 Optimize entity occlusion before model generation
Add conservative AABB prechecks, a non-blocking two-stage async ray and plane pipeline, and reusable voxel/proof caches for dense scenes. Keep synchronous culling on the exact mesh path, expose an async-only threshold, and add focused tests plus release/OpenGL benchmark evidence for issue #7549.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-04 05:54:46 +03:30
ElyTheCat 946bfb559c Merge origin/main into entity occlusion culling pipeline
Keep the latest main particle culling and graphics settings alongside the shared synchronous and asynchronous entity occlusion path.\n\nCo-Authored-By: OpenAI Codex <[email protected]>
2026-11-04 04:41:47 +03:30
ElyTheCatandOpenAI Codex f28e838da8 Invalidate worker voxel caches on snapshot refresh
Key retained ray and plane traversal grids by the snapshot lifetime, not only world revisions, so refreshed chunk visibility cannot reuse stale opaque cells. Add a regression test for a wall becoming transparent.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 20:34:24 +03:30
ElyTheCatandOpenAI Codex 2716f761c4 Remove obsolete occlusion test filename
The tests now live in occlusion_culling_tests.rs, matching the feature test naming convention.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 20:06:14 +03:30
ElyTheCatandOpenAI Codex d3ae3e9f46 Reuse async occlusion traversal buffers
Keep DDA worker scratch and result vectors across jobs, reset voxel state on snapshot changes, and move culling tests into standard feature test files.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 20:05:10 +03:30
ElyTheCatandOpenAI Codex 3ea5d68c2a Add configurable entity precheck slider
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 13:13:13 +03:30
ElyTheCatandOpenAI Codex d387eb8c3c Apply entity precheck threshold to both culling modes
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 13:03:52 +03:30
ElyTheCatandOpenAI Codex a38ef04585 Make entity precheck threshold configurable
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 13:02:30 +03:30
ElyTheCatandOpenAI Codex 7e22c998dd Split async occlusion into ray and plane workers
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 12:49:33 +03:30
ElyTheCatandOpenAI Codex d5abaf67c8 Fix async entity occlusion cache reuse
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-03 12:40:36 +03:30
ElyTheCat 6dca822e6a Merge remote-tracking branch 'origin/main' into perf/async-entity-occlusion-tuned 2026-11-02 22:37:03 +03:30
ElyTheCatandOpenAI Codex 37380065b7 Optimize async entity occlusion hot paths
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 22:34:15 +03:30
ElyTheCatandOpenAI Codex 4e069b1e21 Merge origin/main before occlusion performance follow-up
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 21:04:45 +03:30
ElyTheCatandOpenAI Codex c13e224a44 Merge origin/main into entity occlusion branch
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 20:10:58 +03:30
ElyTheCatandOpenAI Codex ae1a4ec23c Merge origin/main into particle culling branch
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 20:10:55 +03:30
ElyTheCatandOpenAI Codex 740b215a99 Fix particle culling Clippy findings
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 19:47:53 +03:30
ElyTheCatandOpenAI Codex 03ef18163d Format entity occlusion culling module
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 19:45:19 +03:30
ElyTheCat af73537958 Merge remote-tracking branch 'origin/main' into perf/particle-light-cache-main 2026-11-02 18:49:48 +03:30
ElyTheCat 32c30eb98f Merge remote-tracking branch 'origin/main' into review/particle-only 2026-11-02 18:49:44 +03:30
ElyTheCatandOpenAI Codex 1068905d3d Add entity occlusion benchmark evidence
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 18:49:10 +03:30
ElyTheCat 7bee9ec3cf Merge origin/main into entity occlusion branch 2026-11-02 18:47:38 +03:30
ElyTheCatandOpenAI Codex a9a08ef1a6 Separate async entity occlusion rewrite
Isolate the entity occlusion cache and worker from particle visibility. Keep entity modes in the existing settings, submit inflated entity AABBs before model generation, and refine visible entities with their emitted bounds. Preserve fail-open handling and add async culling telemetry.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 18:47:26 +03:30
ElyTheCatandOpenAI Codex 5d5dd03eb8 Add ordinary-scene particle culling measurements
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 18:37:35 +03:30
ElyTheCatandOpenAI Codex 79adacb982 Cache particle light lookups per block
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 18:35:15 +03:30
ElyTheCatandOpenAI Codex 7fc42e8269 Add standalone particle culling worker
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 18:25:52 +03:30
ElyTheCatandOpenAI Codex a71e1d0665 Translate particle culling graphics settings
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 13:57:47 +03:30
ElyTheCatandOpenAI Codex e6ce596144 Update mouse input fixture for trace logging
Stub the new input trace types and no-op recorder so the focused device-event fixture continues to compile when it extracts Game::device_event.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 13:09:26 +03:30
ElyTheCatandOpenAI Codex 8d603dc51f Refresh async culling benchmark evidence
Record both mode orders on the merged head and make the single-scene and cache-counter comparison limits explicit.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 11:55:38 +03:30
ElyTheCat 627309b80a Merge remote-tracking branch 'origin/main' into perf/async-occlusion-culling 2026-11-02 11:40:05 +03:30
ElyTheCatandOpenAI Codex 9c10104446 Optimize asynchronous entity and particle culling
Replace the collision-prone four-way visibility cache with a bounded sorted cache and validate repeated occlusion proofs through frame-local ordered lookup. Keep entity visibility conservative and off block entities, and add batched particle culling modes sharing the occlusion worker.

Add a reproducible benchmark note and screenshots for Sync and Async modes.

Fixes #6684

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 11:40:02 +03:30
ElyTheCat b1fb827aff Merge branch 'main' into perf/static-block-entity-batching 2026-11-02 11:08:19 +03:30
ElyTheCat 00d205ee47 Merge branch 'main' into perf/static-block-entity-batching 2026-11-02 08:50:16 +03:30
ElyTheCatandCodex 1f420bfc12 Add block entity graphics text to English language table
Co-Authored-By: Codex <[email protected]>
2026-11-02 08:26:56 +03:30
ElyTheCatandOpenAI Codex 778dad1e4a Keep entity occlusion culling off block entities
Keep block entity frustum checks and section cache rendering independent of the ordinary entity occlusion culler. Show mode-specific culling help in the graphics UI.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 08:04:05 +03:30
ElyTheCatandCodex c13fcd609e Merge origin/main into perf/static-block-entity-batching
Co-Authored-By: Codex <[email protected]>
2026-11-02 08:02:32 +03:30
ElyTheCatandCodex 21098a3651 Regenerate mod API output
Co-Authored-By: Codex <[email protected]>
2026-11-02 06:14:45 +03:30
ElyTheCat 9b1b96779d Merge branch 'main' into perf/static-block-entity-batching 2026-11-02 05:54:45 +03:30
ElyTheCatandOpenAI Codex 6675c767e7 Keep entity occlusion culling off block entities
Keep block entity frustum checks and section cache rendering independent of the ordinary entity occlusion culler. Show mode-specific culling help in the graphics UI.

Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 04:43:52 +03:30
ElyTheCatandOpenAI Codex b90be5a701 Update matched block-entity benchmark evidence
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 03:31:28 +03:30
ElyTheCatandOpenAI Codex 29c042c74c Batch static block entity rendering by section
Co-Authored-By: OpenAI Codex <[email protected]>
2026-11-02 03:19:15 +03:30
ElyTheCat 4a9fc00315 Merge branch 'main' into feat/async-entity-culling 2026-11-01 19:19:58 +03:30
ElyTheCat d66271131c Merge branch 'main' into feat/leaf-culling 2026-11-01 18:55:12 +03:30
ElyTheCat 7ba8d7ee65 Merge branch 'main' into feat/quit-shortcuts 2026-10-30 18:27:01 +03:30
ElyTheCat 0239b3c97f Merge branch 'main' into fix/armor-rendering 2026-10-30 02:09:12 +03:30