14,092 Commits over 1,583 Days - 0.37cph!
Pass to shader pipeline if we're rendering on skybox, fix glass reprojection being fucked up on skybox
Fix glass not showing properly on tools view
Just set the max swapchain dimension to be the largest monitor dimension again, causes less problems while in tools mode, guarantees we won't have edge problems
Fix glass depth being fetched incorrectly in MSAA levels
Get the dimension of the biggest used axis for calculating swapchain dimensions, fixes FB copies having wrong dimensions on tools, allow texture downsamples to only downsample a region
Let decals do software-based culling, avoids slow copy of the depth buffer just to do redundant culling, that was also causing problems
Citizen/animgraph: improved sit_offset_height
The feet now pivot up and detach from the ground beyond +3 units, and the arms also follow correctly.
https://files.facepunch.com/maxlebled/1b1411b1/sbox_2023-04-14_21-11-48.mp4
Documentation pass
Update some packages
Code cleanups
Add Package.EditorReferences
Show compile errors when publishing and there are compile errors (!)
When we have multiple gamemanager classes, prioritize the one from the current game package
When publishing don't include package.base if we're referencing another game
When an API deserialization fails, provide some context in the error message
Allow projects to reference any package type
Keep more log files
NeedsLocalBasePackage return false if we're not a game or are referencing a game
Added failing test for changing the body of a lambda
Fixed not being able to resolve private nested types
Fixed #947
Failing test for async methods
#947
Fixed #947 for state machine types
Some safety if ILHotload AST processing throws during Parallel.ForEach
Only run ILHotload AST processing when hotload_fast >= 1
Use well known SCENE_RTSIZE_FRAMEBUFFER instead of manually fetching dimensions that seem to give us a 12k x 2k render target... This was flooding vram and causing errors
I'm not sure what we were trying to fix when changing this, but if SCENE_RTSIZE_FRAMEBUFFER is returning the wrong dimensions for a framebuffer copy, we should fix that instead.
Compilers can reference packages
Add Project/AddGameWithPackageBase unit test
TV
fixed missing face
Merge branch 'master' of sbox
Razor directive errors report the file + location properly in visual studio instead of showing CSC
Fixed access control unable to resolve System.Threading, System.Memory
Fix hardcoded refs path 🤦♂️
Documentation + typo pass
Add TargetFramework attribute to compiles
Add ref dlls for compile
Compiler uses ref dlls
Skip auto-referencing base addon if referencing a gamemode
Rebase fixes
TV
TV prop
Merge branch 'master' of sbox
Fall back to normal hotload if exception is thrown during FixReferences
Fast method body hotload (#931)
* 0ms hotload fast path poc when only method bodies change using MonoMod
* Print individual changes during compile, show node paths
* WIP check if all changes are in method bodies
* Add attributes to package assemblies describing changed methods
* SupportsILHotloadAttribute is added if only method bodies change
* MethodBodyChangeAttribute is added for each changed method
* ILHotload looks for SupportsILHotload and MethodBodyChange attributes
* Fixed methods with identical IL not being replaced by ILHotload
* ILHotload should never run with a debugger attached
* Clean up dead code
* Detour using a generated dynamic method copy from the replacing method
* Documentation for Compiler.SyntaxTree.cs
* Added CompilerSettings.SourcePathFilter predicate
* Boilerplate for writing ILHotload tests
* Fixed how file changes are emulated in FastPathTest
* A bit more flexibility in fast path test case code preprocessing
* Added failing fast path hotload test for changing method signatures
* ILHotload: changes must be specifically within a BlockSyntax of a method
* Added Compiler.UpdateParseOptions() for tests to use
* Don't use ILHotload if a preprocessor define changed
* Incremental syntax tree parsing
* Throw when trying to debug an ILHotload swap during a test
* Basic incremental compilation
* Make generated code more deterministic, nicer for incremental compile
* Keep track of which assembly types are actually loaded from
* Re-use compiler options where possible
* Changed fast hotload log to a trace
* Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file
* Failing test for property body changes
* Cleanup ILHotload tests, failing test for overloaded method
* Refactor AST processing for ILHotload
* Fixes after refactor, a bit ugly at the moment
* Support fast hotload for property accessors
* NoticeWidget shows ms if duration < 1s
* Call UISystem.OnHotload after an ILHotload
* ILHotload test for nested blocks
* Fixed ILHotload change detection for nested blocks
* Added hotload_fast engine convar to enable / disable IL hotload
* Added failing test of typeof(T) in method body hotloads
* Failing test for static references
* Fix references to members / types in fast-hotloaded method bodies
* Allow debugging ILHotload in Sandbox.Test
* Test for fast-hotloaded methods with parameter / return types defined in the changed module
* Added failing fast hotload test for compiler-generated type changes
* Don't attempt fast hotload if any compiler-generated type definitions change
* Record event when we ILHotload, matches naming of existing hotloads so we can derive % easily
* Remove defunct code about using cecil as the DMDType, not needed since we fix the references ourselves
---------
Co-authored-by: Matt Stevens <matt@mattstevens.co.uk>
Scene culling box (#889)
Scene culling boxes lets users control scene visibility, either everything inside the box is culled or everything outside the box is culled.
Fix framebuffer copies taking wrong dimensions
Revert "Don't dispose of temp rendertarget when trying to resolve it again", This needs more thought and was causing problems
This reverts commit 6ee43b38e629221c8b8faa2c43d6eb3fa81f6afb.
Citizen/animgraph: misc. small fixes
Fixed handling of some special movement transitions, move_style keeps cycle when switching modes, & some comment stuff
Whitelist UnreachableException constructors too
Remap parameters from deprecated shaders still referenced in cloud materials
Glass2 (#936)
* Start recoding the glass shader from scratch
* Apply FrameBufferCopyTexture to entire layer rather than batch, fixes some batches returning a null texture
* Let Material API handle translucency opacity properly and accounting for specular, still need to account for tint opacity
* Iterate on new glass
* Randomize shatterglass normals
https://i.imgur.com/8EKzZZ8.mp4
* Add overlay layer and cheap rough refraction
* Downsample framebuffercopytexture to be used when needed
* Translucent shadows for glass
https://i.imgur.com/6KYigbg.png
* Redo downsample shader to work properly without flickering, right now with just gaussian since we don't use any others right now
* Pass downsample method before ComputeRenderablePassesForContext
* Cleanup glass shader, fix VR and Tools preview
* glass.shader_c
* Update glass materials and glass blur range
* Don't dispose of temp rendertarget when trying to resolve it again, GetTemporary gets from dict, fixes multiple ui blur fetches, this solution was causing issues before but seems fine now we're hashing every parameter
* Do 1px feathering on CopyFrameBufferCached to avoid sampling without real intersection
* Remove hacks from GenerateMips, rewrite downsample_cs to support other mip generation methods
* Fix FBCopies showing incorrectly on tools
https://i.imgur.com/1MnEiWe.png
* Fix comment that slipped through experimentation, add more explaination to Cheap Glass and Overlay Layer
Lock call to SetNeedsPreLayout in thread to see if this is what's causing amd stuff
Re-organize boostrap to init editor addons before showing the window
New Outfit Piece! - Waistcoat and Shirt
https://files.facepunch.com/daniel/1b1211b1/sbox-dev_cF6L7g7l2e.png
LODs and skinning adjustments coming ASAP
Allow any Entity type to be a [ClientInput]
Merge branch 'master' of sbox
Ignore some other folders in NetworkAssetList
Don't include local packages in server required content
Fix not removing local packages when disabled
Add CitizenAnimationHelper.MoveStyle
Add System.Diagnostics.UnreachableException to whitelist
When client joining server - prioritize remote packages
Citizen/animgraph: added faster walk ring + added "move_style" enum. (See commit comments.)
The faster walk ring helps achieve a better blend between walking & running (the in-between strides are faster and look somewhat less awkward). The "move_style" enum lets you force walking only, or running only. Variations on upright movement could be hooked up there in the future.
Documentation pass
Minor cleanups
Add Editor.Application.SetStyles for consistency with Widget.SetStyles
Editor.Application.SetStyle is now obsolete
Foliage shader: Add standard vertex color based procedural animation based on http://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch16.html
Some additional changes here to Material API so we don't need to double sample for opacity & removal of dead code.
Documentation: https://wiki.facepunch.com/sbox/Foliage_Shader
https://files.facepunch.com/matt/1b1111b1/sbox-dev_3qi13Ck52s.mp4
Add support for declaring BindComponent properties that include disabled components w/ `[BindComponent( IncludeDisabled = true )]`
Editor: When adding a project from file, open editor preferences addon location
Tools: Internalize WidgetGallery static methods
Do not copy gigabytes of .tga files for Sandbox.Test
Documentation pass
Redo downsample shader to work properly without flickering, right now with just gaussian since we don't use any others right now
Don't dispose of temp rendertarget when trying to resolve it again, GetTemporary gets from dict, fixes multiple ui blur fetches, this solution was causing issues before but seems fine now we're hashing every parameter
Do 1px feathering on CopyFrameBufferCached to avoid sampling without real intersection
Remove hacks from GenerateMips, rewrite downsample_cs to support other mip generation methods
Update compiled skin shader with glow-in-dark fixes
Fix skybox tint, skybox expects color to be converted from srgb to linear
Remove collision group from particle collision via traces, this will need to be replaced with tags
Apply environment light ambient color when light isn't baked
Allow Sky.Skyname and Sky.TintColor to be changed after spawn