Introduce user-controllable shader on/off, shadow mode (rotated Poisson disk, 3x3 grid, or off), light cull face, and discard transparent in depth pass. Expose all settings in new dev panel "shader" tab. Move ambient strength slider to the new tab.
Introduce shadow mapping using a dedicated depth framebuffer and shader. The block fragment shader now performs percentage-closer filtering (PCF) with Poisson disk sampling and random rotation for soft shadows. The vertex shader outputs light-space coordinates. A new depth shader pair handles rendering from the light's perspective, discarding transparent fragments. The renderer sets up the light projection based on the camera position and sun direction, and applies the shadow factor to diffuse lighting. Day/night cycle can now be toggled off in the world server thread.
* feat: add grass texture and update grass_block texture
* feat: add block data
* feat: add blocks_tool
* feat: add sync info and change function in blocks_tools
* feat: add check and new function
* refactor: make block texture loading data-driven
* feat: add rendering for grass
* feat: passable grass
* feat: random grass place
* fix: memory leak in TextureManager::load_cross_plane_texture