141,800 Commits over 4,505 Days - 1.31cph!
Clothing AO pass: capped 57 maps 2048 -> 512/1024, ~120MB VRAM saved with no visual difference
also hooked up Cocoknight legs/torso AO which was never bound to its materials
merge from automated_testing
Reduce network range of glass ak
Delete unused anim event
Switch drop mag particle to use LOD1 (already has RW enabled)
Enable custom local folder on the animation events so the build doesnt change the path, mag drop works
Testlist, all tests pass
Split MinidumpUploader into multiple .cs files as it got a little unwieldy
Made the pipe hole mesh smaller and tweaked anchor setup to prevent terrain gaps
Medieval AK gem material tweak: fixed refraction scale 75cm -> 2cm, corundum IOR, proper transmittance - reads as gemstone instead of grey glass
https://files.facepunch.com/pilgrim/2026/August/30_10-00-InsubstantialManta.mp4
Medieval AK worldmodel: baked 6 materials / 3 texture sets down to one 1024 atlas material
6 draws -> 1 per LOD; re-UV'd mesh, rebuilt LOD chain, gems baked opaque
arguably looks better than before for the gems especially as i can't justify 6 materials just for a world model of this scale.
https://files.facepunch.com/pilgrim/2026/August/30_09-27-CoralBighornedsheep.mp4
flamethrower world model optimisation
combined the two parts into one mesh per LOD in engine, converted to a MeshLOD
renderers 6 -> 1, highlight draws 2 -> 1, culls at 35m, triangles unchanged
assault rifle world model optimisation
- combined the 4 part FBXs into one model and converted the LOD group to a MeshLOD
- renderers 12 -> 1, highlight draws 4 -> 1, triangles unchanged, culls at 35m
- combined the ak47u's 4 part FBXs and the medieval's rifle+mag into single models
- converted the ak47u, medieval and jungle world models from LOD groups to MeshLODs
- removed the medieval's 23.6k tri LOD0 - its chain is now 13k/5.3k/2.1k
- renderers: ak47u 12 -> 1, medieval 8 -> 1, jungle 3 -> 1; highlight draws all down to 1
boat building station optimisation
its 7 buoys were embedded pre-merge copies of the ocean wreck buoy optimisation i did on changeset
162514 - replaced their 280 seaweed/mussel renderers with the buoy merge's existing combined meshes
combined the remaining seaweed clumps in the station and platform prefabs (6 -> 1 and 5 -> 1) with wind origins baked into UV2
none of the seaweed was ever batching at runtime
renderers 340 -> 65, prefab 1.4mb -> 296kb, seaweed is now 9 draw calls instead of 263!
satellite crash remains optimisation
combined the 32 loose debris pieces into a single mesh with a MeshLOD - shadows now turn off past 25m for these, and it culls at 100m (previously it drew at every distance)
converted the dish from a LODGroup to a RendererLOD with the same switch distances, and zeroed the LOD child offsets so it collapses to a single renderer at runtime
both the dish and debris now register as occludees, so terrain and buildings can occlusion cull them - the LODGroup never could
renderers 44 -> 13, debris draw calls 32 -> 1
Improve navmesh doors perf, doors now remember which polys are theirs instead of searching the
navmesh on every open/close
Reduce network overhead of powered igniter, tesla coil and strobe lights
Every Hurt broadcasts a full entity update, self damage is now applied every so often to reduce overhead (time to die unchanged)
merge from improved_event_saveloading
Fix all non-puzzle crate and barrels spawns being set to never respawn on both oil rigs (happened because "Process" context menu messes them up)
S2P
Standardize navmesh door benchmark to follow same conventions as agent path following benchmark
merge from monument_blocker_explosive_ammo_fix
Fix explosive ammo not dealing any damage to monument blockers
merge from skin_pooling_fix
Fix pooling bug causing random skins to appear on deployables
Fix siege towers doors, better behaviour for NPCs when door is slammed on them
fix annoying high freq metal clink in one heavy plate footstep
tweak gib phys materials on some monument blockers so they play better destruction sounds
add thin metal destruction sound for trolley and vent cage gib stages
flashlight refresh sounds
heavy plate armor movement sounds
loot crate refresh gib sounds
slightly improved the quality of the vending machine texture & improved the cable faceting.
Re-implemented the internal shadow box to fake the interior depth but this time merged it to the vending machine geometry, reducing a draw, and also allows me to change the culling mode on the vending machine material from 'off' to 'Back'. This means that the Vending machine no longer renders every triangle twice. This would have also affected the gibs too that inherit the same material.
Rewrite some navmesh door bug repro test that passed even without its fix
some additonal settings to carry over
chinook locked crate optimisation
crates + cage combined into one mesh with a single MeshLOD (1/5/15/25, cull 150) chainlink merged into one mesh
renderers 16 > 9
LOD components 11 > 4
objects 48 > 40
draw calls 10 > 4 up close, 3 past 20m
fence tris 1,000 > 10
tris at 25m 4,064 > 1,032
merge from render_pipeline_testing
Fixes
- fix typo in URL
- indicate when client is on the main menu (crashing ingame vs disconnecting from server then crashing)
- cleanup modded framework check, just read the server tags instead of looking for Oxide.dll loaded
merge from render_pipeline_testing
fix black player eyes in BRP in bandit camp (leaking spatial env volume shader props between cams), add pass to clear env volume shader props in RRP as well
Fixed mags not dropping in 3p for abyss ak, ice ak & space lr300
Upload the crash dumps to our backend now that the crash handler is fixed
- uploads client & server crashes, modded or vanilla then we filter on backend
- write state of session every 30s and on scene changes: when the crash actually happens we won't have a chance to write the latest state
Pull Request: Fix spawnmenu search icons sometimes not having images
Fixed spawning NPCs too early breaking all NPCs until level change
Merged Pull Requests
* Enable localization for Information/Purpose/Instructions fields in spawnmenu tooltips on SWEPs/SENTs/etc
* Leafblower improvements
* TTT: restore original arctic playermodel color while in "serious mode"
* TTT: handle failed entity creations
* TTT: Add localization to "FIRE! IT BURNS" text effect
Update medic rebels player models to be colorable (Community Contrib)
merge from main -> optimize_json_garbage
Big ass pass on all IO electricity tests:
- Consistency, new tests and fixes
- Added ScopedSky
- Moved the save and restart utils to RustTestFixture, started using it for other tests