minosoft/doc/rendering/world_renderer.md

49 lines
1.6 KiB
Markdown

# World Renderer
- Frustum culling
- 2 algorithms
- Fast one (old one): Only tell if it could be in the frustum
- -> If yes (or no; depends on algo) use complex one to check
- extreme chunk section values (most east[…] block; highest block; lowest block)
- "Cave algorithm" (Occlusion culling)
- 3 Meshes per section (opaque; transparent; translucent)
- Preparing in nearer to further away order
- unload meshes if block changed and not in frustum
- only prepare if chunk is in frustum
- don't prepare empty chunks
- Light
- Client side light engine
- Lightmap
- Transparency
- Sort faces
- 2 render modes: Fast/Default
- No block translucency
- water logged & FluidFillable properties
- Force interrupt preparing if needed (e.g. new block change; light change; more important task in thread pool)
- "Resolving" of block models
- Chunk cache clearing (default F3 + A)
- Respawn
- texture animations
- require neighbour chunks loaded
- Also don't load if block changes in chunk (e.g. when movement is disabled and walking to chunk border and destroying block)
- View distance
- Server side
- Client side
- Rewrite renderers
- Check neighbour positions
- Cache biomes
- "Fast biome" in 19w36a+
- Improved biome blending
- Performance optimizations
- Don't render bedrock on y == dimension::minHeight
- Meshing
- Greedy meshing
- Model deciding (for pre flattening versions)
- Assets manager: Create file from jar with all models inside and load models from there (make them moddable)
- ToDo:
- Update neighbour chunks if needed
- Biomes: Check if chunk is single biome
-