mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-24 00:00:33 +02:00
Every transparent thing a window draws is a group of its own: a model's transparent part (shields, plasma, glass), each particle system, contrail and light volume, a window's or water's surface. The Xbox had room for 384 (rasterizer_transparent_geometry_new_group); past that new_group returns NULL and the submitter drops the geometry, logging "### ERROR too many transparent geometry groups" once (rasterizer_xbox_models.c, rasterizer_xbox_widgets.c; environment and dynavobgeom drop it silently). render_window submits the objects first, then the structure's transparent geometry, weather, particles, particle systems and contrails, so in games of 30 and more players the late ones vanish: water and glass surfaces, explosions, muzzle flashes, smoke, plasma glows, contrails. The groups are a heap array (0xA0 each), a short array of sorted indices and a bit vector of pending flags, all sized by the constant; indices are shorts (sorted_index, presorted indices, the draw loop), good to 32767. Nothing else depends on the number (the debug view's "all groups" index 1000 only colours groups in a debug mode). Upstream (halo-ce-universal) still has 384. 2048 groups take 320 KB (61 KB before). A one-line log tells when a window passes 384 and every 128 beyond, for checking big games in the headset. In the emulator, a 36-player bot game on Blood Gulch had up to 134 groups a window from a standing player, using under 8 KB of the rasterizer's 768 KB memory pool (the models' queued matrices and lighting), so the pool is not the next limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>