14,872 Commits over 1,642 Days - 0.38cph!
Don't require prefab templates to have sources
Preferences toggle for drag drop placement at pivot vs offset by bounds
Resource finalizer queues dispose and unregisters on main thread. Assert ResourceLibrary.Unregister as main thread only
NavMesh only allocate debug draw buffers if we actually want to draw
Disable Navmesh generation on prefab scenes
Add NotCloned flag to prop procedural components. Rebuild prop components on IsStatic change
Bind all mips for QuarterResEffectsBloomInputTexture, fix bug with lighting on bloom layer
Bloom layer from managed
SetGlobal for all command list methods
Use ToColorHandle in DepthNormalPrepassLayer
Gaussian downsample this bloom layer
Remove unused materialsystem-owned static descriptor sets
This frees up slots 1 & 2, whilst external descriptor sets remain starting on 3
Support animated texture sheets on decals https://files.facepunch.com/layla/1b1711b1/sbox-dev_luiXru07Qa.mp4
Let's start trying to shut the game down properly so we can flush stuff like shader cache and Api activity / stats
Use explicit SampleLevel with Mip 0 for LTC lookup, fixes sampling on vertex shaders
ShaderCompiler returns failure so the build server can fail when we push shit shader changes
Don't log engine console output upside down
Try catch when accessing Console.BufferWidth, resolves #1854
Doubled reconnect timeout time (30 -> 60)
Added VoiceComponent.ShouldHearVoice( Connection ) - to change whether a voice can be heard on the receiving end
Dispose of PrefabFile's cached scene when unregistering, should fix memory leak when switching games
Add Bitmap.DrawArc with optional use center
Fix player controller show colliders
Don't recreate Inspector widget if the object is already inspected
Fixes sbox-issues/issues/7882
https://files.facepunch.com/lolleko/2025/March/17_09-35-SvelteMeerkat.mp4
Increase max string length to get from native
Add Bitmap.InvertColor
Add invert color effect to image file texture generator https://files.facepunch.com/layla/1b1511b1/sbox-dev_UgUB7PjkRg.mp4
Clear scene model anim parameter cache on model change, fixes crash on model change
Add 99.9 percentile to benchmark data collection to diagnose largest lag spikes
Also P5 and P95 while we are at it.
Use normal to calculate normal direction of capsule light, makes it non-bendy
Capsule and Sphere lights Staging
https://files.facepunch.com/sampavlovic/1b1411b1/KSdcCVtuz8.png
Increase default fov
Lock the network thread when connecting
Reapply "Interop string optimizations"
This reverts commit 362c6033843710cc6eefcd034da882257c3e7d17.
Reapply "Safe string length"
This reverts commit 66e223f10778abc5c4d15d4ac9f244fd33b9c696.
Fix AVX2 not supported
Fix Navmesh.DrawInEditor spawning 500 generation threads at the same time
Use Environment.ProcessorCount instead of ThreadPool.GetMaxThreads
Input.EnableVirtualCursor also affects Click/MouseWheel simulations
Added Input.EnableVirtualCursor which can be disabled to override Cursor movement when using a Controller
Replace CameraComponent.RenderUI with ScreenPanel.TargetCamera.
Restore previous behaviour of UI only drawing to the Main Camera by default instead of all Cameras by default. Also allows you to specify exactly which Camera a ScreenPanel should be drawn over. So you can easily handle splitscreen, ect.
Don't lock mixing thread when calling UpdateGlobals
Revert "Safe string length"
This reverts commit 8ecce2df6f6b822e55b51896146c380cae207a38.
Revert "Interop string optimizations"
This reverts commit 83d88ef7422b9867667034ba45124c6a477cf0ce.
Fix Frustum.GetBBox() excluding last corner
We are tracking frame time not FPS so we want to use P99 not P1
Add FloatSpan as an easy way to do SIMD/AVX2 math ops on a span of floats
MixBuffer uses FloatSpan instead of native (2x faster)
Fix mono sounds not getting mixed properly
Interop string optimizations
Hookup GCPause performance stat for benchmarks
Calculate P95, P1 and Stuttering metrics for our benchmark samples
Arealights2 Staging
Update shaders
Add RenderAttributes.Set for int vectors
Citizen/animgraph: similar to the first-person v_spaghellim4, here's a new way to handle shotgun reloads. b_reloading toggles the "reloading stance" (parameter does NOT auto-reset), then b_reloading_insert (parameter that DOES auto-reset) can be fired for every shell insertion.
https://files.facepunch.com/maxlebled/1b1411b1/2025-03-14%2001-26-30.mp4
Run deathmatch benchmark after regular benchmark (#1850)
https://files.facepunch.com/lolleko/2025/March/13_20-16-AdvancedOrangutan.mp4
Added CameraComponent.RenderUI
Obsolete PhysicsWorld.TimeScale, no longer used
Add Rect.ClosestPoint
I broke facepunch.hc1 and facepunch.sbdm, we should update them
Particle performance tweaks
ParticleControlPoint is obsolete
Curve is backed by a ImmutableArray instead of a ImmutableList
Simplify input pump
Tweaking some config vars, see how if they move the needle