1,420 Commits over 943 Days - 0.06cph!
rendersystem_vulkan: get this compilable again with a flag, easier to work on instead of one massive branch with all the vfx changes too
* strip all glsl support, added dxc hlsl -> spirv, and convert any built in shaders to hlsl
* backport new texture manager to match the new dx11 texture manager
* various backports to match our dx11: barriers, fences, gpu buffers, descriptor sets, etc.
* only use VK_EXT_debug_utils instead of VK_EXT_debug_marker
* strip multi-gpu
Hammer gamedata: only need to grab the package once per assembly, fixes race condition from doing it concurrently which was causing multiple entries
Hammer: fix entity tool sidebar not collapsing properly
ui: box-shadow blur bloats the rect and renders properly
Restore required texture size bindings, should've only been removed from descriptor sets
Kill legacy Fade Scale dx7/dx8/360 render property on models that's not hooked up to anything
UI: Software culling accounts for transforms too, fixes them disappearing randomly sometimes
UI: When early culling account for shadows so if we're scrolling and should only be able to see shadows it'll still render
ci: doesn't matter if git stash has nothing to stash, carry on with the build
delete more dx9 shit
Nested main thread render layers work better with texturemanager, fix potential case where some hookup jobs weren't being fulfilled properly in main thread render layers
Backport new base/dx11 rendersystem changes so other backports are easier; removes obsolete dx9 stuff, better barriers, finalize RenderTtextureDetail replaced with required mipsize
Fix nvwgf2umx crashes - these were being caused by blocking resource loads within managed render blocks; these would run the texture manager's hookup jobs, which would include async hookup jobs for texture streaming, but also the textures we wanted immediately. The problem with fulfiling these texture streaming hookup jobs is the render thread is already executing and a texture streaming hookup job is going to invalidate them by replacing the contents. This would happen more frequently for slow pcs where their texture streaming can't be fulfiled fast enough. I've hooked up a simple system to only fulfil the hookup jobs of the textures that have been requested during the render block.
tier0 GetGameInfo accessors
Delete unused RenderTextureDetail
Stop trying to bind invalid reflection texture for water since it all got stubbed, can't debug other issues with this shit spamming constantly
Don't upload core/base shaders to asset.party
Don't mount any shaders in manifest that already exist in base or core
Hunch crash fix, wait for rendering to complete before force reloading resident resources (if this resolves it, then it's probably shader resources need some extra love)
ci: only reset tracked files before pulling, keep our build artifacts so builds aren't slow as shit (hopefully)
ci: can't build-addons until test-game is run, otherwise s&box.sln isn't created
Delete orphan vmat build breaker
Fix bottom to top scrolling being inverted with flex-direction: *-reverse or justify-content: flex-end
https://drafts.csswg.org/css-align/#overflow-scroll-position
Fix Popup PositionMode.AboveLeft not working on different screen scales
Tidy up Lobby class code
Remake PartyDeck in Razor, split out Party logic to static class, move party deck along bottom social bar
Party chatbox
Style adjustments to PartyDeck, give a crown to the current party owner, add horizontal padding to player-info
Style tweaks
Add a lobby chat channel to chatbox instead of in lobby screen. Add unread messages counter, and show latest message over the chat entry
Reimplement friend list in Razor, use it for both joining games and inviting to party instead of the seperate flows. Move friend list from top nav to social nav
Simplify chat code, better styles (bigger text) + sounds, add party / lobby kicking
Caching for Steamworks Friend so we can innocently use this in Razor without worrying about performance ( was eating 2-3ms on 30 friends from a simple Linq count - and a lot lot more on more friends )
Merge pull request #721 from Facepunch/social
Fix bottom to top scrolling being inverted with flex-direction: *-reverse or justify-content: flex-end
https://drafts.csswg.org/css-align/#overflow-scroll-position
Fix Popup PositionMode.AboveLeft not working on different screen scales
Tidy up Lobby class code
Remake PartyDeck in Razor, split out Party logic to static class, move party deck along bottom social bar
Party chatbox
Style adjustments to PartyDeck, give a crown to the current party owner, add horizontal padding to player-info
Style tweaks
Add a lobby chat channel to chatbox instead of in lobby screen. Add unread messages counter, and show latest message over the chat entry
Reimplement friend list in Razor, use it for both joining games and inviting to party instead of the seperate flows. Move friend list from top nav to social nav
Simplify chat code, better styles (bigger text) + sounds, add party / lobby kicking
Caching for Steamworks Friend so we can innocently use this in Razor without worrying about performance ( was eating 2-3ms on 30 friends from a simple Linq count - and a lot lot more on more friends )
Chat responsible for storing it's own messages, makes code simpler and lets us keep history when leaving party/lobby
Add a bunch of caching to Friend, invalidate cache on PersonaStateChange callbacks - lets us use this more innocently without worrying about performance everywhere - e.g Friend.GetAll().Where( x => x.IsOnline ).Count() was eating 3-4ms with only ~20 steam friends, much worse with more pals
Chat new messages update the hash properly for the unread messages counter
Lobby ready up state + kick button for lobby owner
Larger chat text, my eyes were feeling strained
Add sounds to chat & party deck
Fix ChatEntries BuildHash not reacting to new messages
Make the silly emoji button add to message in a less jarring way
Add lobby / party kicking
Fix bottom to top scrolling being inverted with flex-direction: *-reverse or justify-content: flex-end
https://drafts.csswg.org/css-align/#overflow-scroll-position
Fix Popup PositionMode.AboveLeft not working on different screen scales
Tidy up Lobby class code
Remake PartyDeck in Razor, split out Party logic to static class, move party deck along bottom social bar
Party chatbox
Style adjustments to PartyDeck, give a crown to the current party owner, add horizontal padding to player-info
Style tweaks
Add a lobby chat channel to chatbox instead of in lobby screen. Add unread messages counter, and show latest message over the chat entry
Reimplement friend list in Razor, use it for both joining games and inviting to party instead of the seperate flows. Move friend list from top nav to social nav
Fix recent typo in CManagedRenderLayer::Render setting MSAA level to invalid instead of none, causing a shit load of crashes
Fix bottom to top scrolling being inverted with flex-direction: *-reverse or justify-content: flex-end
https://drafts.csswg.org/css-align/#overflow-scroll-position
Tidy up Lobby class
Add a social bar along the bottom of the menu, put the party deck here
Make PartyDeck suit the bottom left a bit better
PartyDeck razor only view, split logic into static Party class that wraps the lobby
Messed around with PartyDeck some more
Party chatbox
Fix missing using from rebase
Style adjustments to PartyDeck, give a crown to the current party owner, add horizontal padding to player-info
Move Lobby chat to menu chatbox, swap chat type with tab
Style tweaks
Chat channels merge together but display their colour
Simple chat entry style I'm happy enough with for now
When create/join lobby, switch chat channel to lobby. On leave switch back to party automatically
Open Steam profiles in overlay when clicking name in chatbox (will likely put behind a context menu)
Make avatar smaller, more margins, don't shit self on overflow, don't overlay on everything all the time (I'll code something better)
Align chat messages with user info better
Add an unread messages indicator and system messages
Show the latest message over the chat box, dismiss on hover
Fix Popup PositionMode.AboveLeft not working on different screen scales
Stop abusing BuildHash, only need to rebuild the chat messages on new message
Fix showing latest message, add some system messages to test it + unread
Silly hover thing
Fix Popup PositionMode.AboveLeft not working on different screen scales
Stop abusing BuildHash, only need to rebuild the chat messages on new message
Align chat messages with user info better
Add an unread messages indicator and system messages
Show the latest message over the chat box, dismiss on hover
Tidy up Lobby class
Add a social bar along the bottom of the menu, put the party deck here
Make PartyDeck suit the bottom left a bit better
PartyDeck razor only view, split logic into static Party class that wraps the lobby
Messed around with PartyDeck some more
Party chatbox
Fix missing using from rebase
Style adjustments to PartyDeck, give a crown to the current party owner, add horizontal padding to player-info
Move Lobby chat to menu chatbox, swap chat type with tab
Style tweaks
Chat channels merge together but display their colour
Simple chat entry style I'm happy enough with for now
When create/join lobby, switch chat channel to lobby. On leave switch back to party automatically
Open Steam profiles in overlay when clicking name in chatbox (will likely put behind a context menu)
Make avatar smaller, more margins, don't shit self on overflow, don't overlay on everything all the time (I'll code something better)
Recompile ui_text shader so it uses new scissoring, fixes them clipping badly with transforms
Move Lobby chat to menu chatbox, swap chat type with tab
Fix missing using from rebase
Tidy up Lobby class
Add a social bar along the bottom of the menu, put the party deck here
Make PartyDeck suit the bottom left a bit better
PartyDeck razor only view, split logic into static Party class that wraps the lobby
Messed around with PartyDeck some more
Party chatbox
Enable Yoga fixes for absolute position percentages not accounting for padding edges, and trailing column margin
Update yoga src to latest HEAD (adds gap support and some opt-in experimental fixes for making absolute positioning behave more like web)
Get rid of old nuget yoga 1.5.0-pre1, replace with latest .net6 binary built from yoga#1207
Update yoga.vpc to build a DLL + build with /fp:precise otherwise the NaNs Yoga uses won't work
Compile yoga with $NO_STANDARD_VALVE_CODE so we can use our yoga.dll in tests without tier0 dependency
Fix Sandbox.UI.Test native dependency yoga.dll
Yoga sanity unit test
Fix Sandbox.UI.PositionMode not matching new YogaPositionType which has Static at the start now
Might as well support `position: static`
Default position is static and not relative, might break some ui where left/right/top/bottom have been misused w/o position: relative/absolute
Hook up row-gap, column-gap and gap css properties
Fix partydeck styles
glass styles can use gap !
Delete yoga.dll now it's compiled
Move Managed Tests to after native build - because we likely want some of the dlls to test
Build native before managed
Edited the wrong yaml
Merge pull request #716 from Facepunch/update-yoga
Update yoga src to latest HEAD (adds gap support and some opt-in experimental fixes for making absolute positioning behave more like web)
Get rid of old nuget yoga 1.5.0-pre1, replace with latest .net6 binary built from yoga#1207
Update yoga.vpc to build a DLL + build with /fp:precise otherwise the NaNs Yoga uses won't work
Compile yoga with $NO_STANDARD_VALVE_CODE so we can use our yoga.dll in tests without tier0 dependency
Fix Sandbox.UI.Test native dependency yoga.dll
Yoga sanity unit test
Fix Sandbox.UI.PositionMode not matching new YogaPositionType which has Static at the start now
Might as well support `position: static`
Default position is static and not relative, might break some ui where left/right/top/bottom have been misused w/o position: relative/absolute
Hook up row-gap, column-gap and gap css properties
Update yoga src to latest HEAD (adds gap support and some opt-in experimental fixes for making absolute positioning behave more like web)
Get rid of old nuget yoga 1.5.0-pre1, replace with latest .net6 binary built from yoga#1207
Update yoga.vpc to build a DLL + build with /fp:precise otherwise the NaNs Yoga uses won't work
Hook up row-gap, column-gap and gap css properties
Whitelist `System.Type.Equals( System.Type )`
Whitelist compiler attributes required for C#11 required modifier
Keep box-shadow within the original scissor so it doesn't overflow
ui test: transform rotated + border-radius scissor test
ui: when rendering box-shadow never render under the box itself (using an inverse scissor rect) so transparent backgrounds look as they should
before: https://files.facepunch.com/matt/1b0811b1/sbox_l0kQbIIJ1c.png
after: https://files.facepunch.com/matt/1b0811b1/sbox_jVYco6DRg8.png
ui: scissor rects can have a transform matrix, scissor panels post transform position too - fixes lots of oddities with overflow: hidden and transforms
before: https://files.facepunch.com/matt/1b0811b1/sbox_6te0egX6cg.png
after: https://files.facepunch.com/matt/1b0811b1/sbox_BMeWLJ6w79.png
ui: add rounded corner scissoring (border-radius works with overflow: hidden)
https://files.facepunch.com/matt/1b0811b1/sbox_gnbMdfYYuJ.png
ClothingContainer.DressEntity disable trace and queries on clothing entities
Make sure symlink reload queue actually gets cleared, accidentally returned ref instead of ptr
Reload symlinked resident resources after loading runtime packages too
Fix Material ResourceId not being set so it networks properly
Never try to precache procedural models
Fix bad race on procedural models invoking OnModelLoaded without being properly set to procedural yet
Do standard weakref cache for each native resource class (repeated code isn't really avoidable here sadly), seal these classes, private constructors so you have to use e.g Model.FromNative( IModel )
Garbage collect on Client LoopEnd, eligable Resource classes were never getting collected and leaking their native handles
fix NRE on map uploads when the map addon contains skyboxes or prefabs
Force a reload of any resident resources that are or were symlinked, this is especially required for streamed resources to avoid a mismatch between header and file data
Store GameResources in ResourceLibrary instead of all Resources in Sandbox.Engine so resources get released properly on game shutdown
Every native resource (model, material, textures...) was getting held indefinitely even after game shutdown, this commit solves that by:
* ResourceLibrary will only hold strong references to GameResource, native resources will only have a weak reference internally this way they get unloaded properly.
* Sandbox.Tools gets it's own ResourceLibrary, doesn't piggy back from GameHost.Menu anymore
* Get rid of GameHost from Resources
Cleanup dupe code, add some docs
Decouple the system that holds references from base Resource class to ResourceLibrary. ResourceLibrary is only for GameResource, this was the only way it was being used and it makes no sense for normal Resource to be there.
Precaching keeps strong handles of native resources( mainly so we can NetRead them.. ), never add GameResource to precache stringtable (they're always loaded)
Texture.Load behaves better and doesn't try to cache a not found file
Comment these out, need to figure out ResourceJsonConvert (this is just for GameResources again?) w/ ResourceLibrary, and probably make another ResourceLibrary for Sandbox.Tools
ResourceJsonConvert uses given ResourceLibrary
Promises assign ResourceId again
Oops ResourceLibrary dictionary shouldn't be static no wonder it was fucked
Resource.Load doesn't need GameHost
Tools gets it's own ResourceLibrary, doesn't use GameHost.Menu anymore
NetRead.ReadResource can handle non-GameResource again
Replace optional GameHost virtuals GameResource.PostLoad/PostReload with simply passing ResourceLibrary
Replace Resource.Update in memory system with ResourceLibrary.UpdateGameResource, only used from tool asset inspector to propagate live changes of GameResource to game / menu
Decouple the system that holds references from base Resource class to ResourceLibrary. ResourceLibrary is only for GameResource, this was the only way it was being used and it makes no sense for normal Resource to be there.
Precaching keeps strong handles of native resources( mainly so we can NetRead them.. ), never add GameResource to precache stringtable (they're always loaded)
Texture.Load behaves better and doesn't try to cache a not found file
Comment these out, need to figure out ResourceJsonConvert (this is just for GameResources again?) w/ ResourceLibrary, and probably make another ResourceLibrary for Sandbox.Tools
ResourceJsonConvert uses given ResourceLibrary
Promises assign ResourceId again
Oops ResourceLibrary dictionary shouldn't be static no wonder it was fucked
Resource.Load doesn't need GameHost
Tools gets it's own ResourceLibrary, doesn't use GameHost.Menu anymore
Quick play around to see if a static API for HTTP is good