# 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 -