Repository navigation
distant terrain - #873
Open
Purdze wants to merge 74 commits into
Open
distant terrain#873Purdze wants to merge 74 commits into
Purdze wants to merge 74 commits into
Conversation
…r meshes and give arenas their own memory
…ections and bench distant capture and meshing
…the player returns
…rom retaking freed room and test eviction and compaction in game
…offset, side light, cave fill and waterlogged colours
…o real chunks once they draw
…e anything is captured
…s and keep the renderer's floor current
… beside the column store
…d draw it indirect
…ter occlusion pass
…aces and the bound pass the far ones
…hunk renderer's fallbacks
… record uploads in the frame
…he nodes next frame
…ew findings - a column handed back to evict for holds the room until its mesh uploads, so free room split into small gaps can't bounce two columns forever - allocation takes the draining arena's room before evicting - the eviction frontier resets once nothing waits - empty arenas aren't freed while columns wait for room - a failed arena allocation caps the arena count instead of panicking - arena order cached per frame, compaction walks only the draining arena's columns, retry walks the loaded columns only when it would evict
…fragmented room for waiting columns and retry when an arena goes
…defragment drain once nothing needs it
… arena to allocation once drained
… room, and back off a failed arena add
…le the failed-add backoff, and settle only once nothing could still come back
…t only with two arenas, and check eviction under a cap
…ly where it can help, and test streaming against a model of the store
…e the frontier and retry code with the model
…ves after uploads, flush what an undrawn frame left, gate block entities on compiled faded-in sections, draw them all in the shadow pass, finish a sort before starting another
…s after a clear, barrier the shadow cull after the camera cull, report frame_times encode time
…split chunk burst, keep occlusion columns over a mesh rebuild, skip stale light reports, bound the distant section cache, keep unlit columns off lit terrain, order node uploads after their sections, clamp distant shader counters
…, shade distant faces by dimension, reuse node ids only once written, run the join tick before more packets, crash on a dead light or occlusion thread, flush distant terrain on suspend
…old parent is written, clear each test worker's distant cache before its first client
… slider pass 32 only for a larger one, and give a single-level texture's level 0 its whole view
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
terrain past the render distance. every chunk the client sees is kept as 32³ voxel sections at five levels of detail, saved to disk per server or world, meshed on a worker thread from models baked per block state, and drawn by the gpu which walks the section tree each frame, culls against a hi-z, picks the detail by screen size and asks for the meshes it lacks. pomme-only, under the distant terrain option
also in here from measuring the branch against master:
tests: unit tests for the sections, mesher, node tree, face rule, section cache, tick scheduling, occlusion walker and light worker. world/distant_terrain, world/render_distance, blocks/face_culling and blocks/grass_occlusion in game, the last three match the 26.2 client. the chunk packet budget changes when packets and ticks are handled within a frame, so it needs a peel capture before merging
known gaps as TODOs in the code: generation beyond what's been seen, shader packs, dimensions without sky light