Refactor LowPassProcessor and HighPassProcessor#10381
Closed
Guilhem-Pech wants to merge 878 commits intoFacepunch:masterfrom
Closed
Refactor LowPassProcessor and HighPassProcessor#10381Guilhem-Pech wants to merge 878 commits intoFacepunch:masterfrom
Guilhem-Pech wants to merge 878 commits intoFacepunch:masterfrom
Conversation
Co-authored-by: Mahir Muratovic <73573263+Kaikenny@users.noreply.github.com>
fixes "Error calling event 'hotloaded' on 'Editor.ComponentSheet'
… same behaviour elsewhere (Facepunch#4152)
* Use command lists for UI rendering
So far we only had a way to get the Color buffer of a render target, this lets us use the depth target as well in commandlists.
* Use ToArray to avoid collection modified while iterated exception Not sure this ever actually happened but better to be save. * Remove ValidatePrefabLookup from SerializePrefabInstance ValidatePrefabLookup may have modified GUIDs incorrectly on undo/redo. Also Serialize should be read-only op. ValidatePrefabLookup is still called at enough other places.
* Add Json.Deserialize<T>( ref Utf8JsonReader reader ) * Add Json.Serialize<T>( Utf8JsonWriter writer, T target )
…of derived type - not always property type
May fixes some issues when enabling/disabling nav areas.
Keep temp list so we can sort in place Cache occlusion sort predicate in static to avoid action allocation
Fixes timing scopes to more accurately represent a per-frame main thread breakdown, and prevents spikes when GC is executed. - **GcPause** - New separate timing scope showing time spent in GC per frame - GC pause time is subtracted from all other scopes, so each scope now only tracks its own code execution and no longer includes GC overhead - e.g. when GC occurs during the audio scope, the audio scope no longer spikes to 20ms - **AudioMixingThread** removed from the main scopes - Runs on a separate thread, so its timings are effectively meaningless in the main thread view - All other scopes are main thread only - No longer relevant given the audio optimisation work done over the past months - **Scene** scope removed - Didn't make much sense as it was an aggregate wrapping many other timing scopes - Replaced with a finer `Update` scope that tracks `Component.FixedUpdate`/`Update` - **Editor** scope no longer shows in-game - Scopes reschuffled - e.g. verlet rope physics traces are now tracked under the physics scope - Audio occlusion queries are now tracked under the audio scope https://files.facepunch.com/lolleko/2026/March/02_12-59-QuixoticMarten.png
* Move duplicated ProjectInfo building to extension methods * Add moviemaker package reference to editor packages
- Fix last child not getting correct `:last-child` pseudo-class until a frame late - Run UpdateChildrenIndexes right away instead of deferring to next frame - Add some tests
…Facepunch#4180) * Make it easier to unit test movie compilation * Fix track compilation leading to invalid blocks
https://files.facepunch.com/lolleko/2026/March/02_19-27-PlushGalapagosalbatross.png Co-authored-by: darkfated <darkfated@icloud.com> Co-authored-by: Lorenz Junglas <4759511+lolleko@users.noreply.github.com>
* added commandlist at root panel level so we dont have 1 commandlist per panel * added codepath where panel renderer write to the panel roots commandlist instead of their one * added rcon to toggle between both at runtime * cache transform * Build flat commandlist for panels * added globalcommand list in UI system each rootpanel command list will be appended to this global commandlist so we reduce overhead while drawing. * removed debug Ui * gather children command lists * use Count instead of Count() - remove some other code * renamed FlatCommandList to PanelCommandlist removed more unused code * removed ref to cached transform * simply loop * remove useless line, remve unsafe keyword, remove should early cull * added separate profiling scope for building, gathering and executing command lists * forgot this * check if yoga layout rect has changed before setting is render dirty * dont need to draw this quad * Dont append scissor every frame as we cache them. * add seaprate scissor function that does append ot attributes only on rebuild * only update scissor attributes if it has changes, otherwise used cached commandlist * panel renderer check if panel has layer * only build transform commandlist if transform has changed, otherwise used the cached transforms * fixed some UI widgets not updating due to their opacity correctly. This is the bug where widgets wouldnt be visible until you hovered them * use span for iterating commandlists * dotnet format * async SVG and texture loading mark as dirty once loading is done * dont render UI panels flagged as render manually
…ture, let the CommandList handle our RTs for us
Adds left/right scroll buttons to content block rows as an alternative to drag scroll
* ! Remove dead code in HTTPImageLoader * ! Add test replicating hackerone 351932 Test checks that we properly handle redirects to forbidden URLs * ! Sandbox HttpHandler handles redirects and validates them Implements the relevant RFCs and follow .NET implementation. Filters out invalid URL redirects.
* ! Reimplement SharedArrayPool because it is internal in .net runtime * ! Expose PublicArrayPool that maps to our copy of SharedArrayPool * ! CodeGenerator that remaps System.Buffers.ArrayPool.Shared calls to Sandbox.PublicArrayPool * ! Don't run ArrayPoolUpgrader in full engine builds * ! Add tests that verifies ArrayPool.Shared replacements * ! Remove ArrayPool.Shared from whitelist * ! Build AST from nodes instead of parsing text * ! Use Reflection to grab Gen2GcCallback instead of event polling
…filters/masks work correctly (Facepunch#4198)
…d position, which was proving to be unstable along cluster boundaries
…al key names (Facepunch#4429) * InputRouter uses scan codes (make AZERTY not shit), UI related input remains key codes * Input.GetGlyph and Input.GetButtonOrigin return the local key name e.g if forward is bound to "W" it will show as "Z" on azerty layouts
…isbands while you're joining, fixes "Lobby Disbanded" spam, lingering socket, and getting stuck in a loading screen (Facepunch#4431)
* Menu: PartyMember hover over opens friend popup, so you can leave party again * Menu: Fix News component
…acepunch#4434) * RadiusDamage: batch and parallelize LOS traces, reduce allocations - Reduce LINQ usage - Deduplicate LOS traces per root GameObject (one trace instead of per-RB + per-damageable) - Run all LOS traces via Parallel.For - Rent temporary arrays from ArrayPool instead of heap allocating - Pass through Occlusion flag to skip traces entirely when disabled * Fix dmg fallof being inverted
* Add Component.DontExecuteOnServer to PanelComponent * Add more headless checks to input system to prevent native crashes trying to access inputsystem
…because Bodies and BodyTransforms are two independent syncs and one may arrive before the other (Facepunch#4439)
* add glass footsteps * add step launch * adjust volume
* Some dead config vars * ShadowMapper work directly with SceneLight, we can't reliably create derived light types from native because the lightdesc is modified later * Unused on light_environment
…re before (Facepunch#4447) * Remapped a few other inputs to fix their glyphs to match what they were before * whitespace fix
…punch#4435) Previously, we would call GPUBuffer.SetData many times through a loop. This is now replaced by a single call after all sprite groups have been processed. This reduces GPU fencing and CPU -> GPU transfer overhead.
Avoids System.Byte[] allocations
* Upload SpriteBatchSceneObject buffer inside render context * Bump particle pool size
…nually set `LoadingScreen.IsVisible` now (Facepunch#4412) This means games can pop up a LoadingScreen of their own without it getting stomped immediately.
Contributor
|
I knew something was off with them |
Member
|
hey, this PR got accidentally closed cause we fucked up the repo history. you'll have to rebase your branch on the current master and open a new PR. sorry for the inconvenience! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Thanks for contributing to s&box ❤️
Please fill out the sections below to help us review your change efficiently.
Summary
This PR refactors the
LowPassProcessorandHighPassProcessorcomponents to improve code readability and maintainability.Motivation & Context
Highpass and lowpass were not LowPass and HighPass so I implemented them.
Screenshots / Videos (if applicable)
Checklist