- Clutter system — the clutter/scatter tool and system has been moved in-engine
- CSS outline property — outline draws outside a panel's border without affecting layout, matching web standards
- Multithreaded UI rendering — UI can now render off the main thread
- New main menu front page — redesigned around flatgrass, refreshed navbar and footer
- ContentBlock row scroll buttons — left/right scroll arrows appear on hover as an alternative to drag-scrolling
- DepthTextureRef on RenderTargetHandle — lets you access the depth buffer of a render target in command lists, not just the colour buffer
- Improved UI drag & drop — new OnDragEnter, OnDragLeave, and OnDrop panel events matching standard web behaviour
- AdvancedDropdown — ComponentTypeSelector abstracted into a reusable dropdown that supports foldered menus
- SerializedProperty.GetCustomizable() — creates a customisable copy of a property with an overridable display name and other metadata
- MemberDescription.DeclaringType — exposes the type that declared the member
- Json.Serialize / Json.Deserialize — low-level methods plus object/Type overloads for use with IJsonConvert
- Package.MountAsync() — public API equivalent of the internal PackageManager.InstallAsync
- Json.Patch, Json.CalculateDifferences, Json.ApplyPatch and related types are now public, along with GameObject.DiffObjectDefinitions and Scene.SerializeProperties()
- TestAppSystem exposed to user unit test projects, replacing the old Application.InitUnitTest flow
- Vector2Int and Vector3Int added to TryToType
- Mirror tool now supports mirroring any selected object type, not just meshes
- UI rendering now uses command lists — panels only rebuild their command lists when something actually changes, reducing per-frame work
- Performance timing scopes — GC pauses now tracked separately and subtracted from other scopes, so GC spikes no longer bleed into unrelated categories. New Update scope tracks FixedUpdate/Update specifically.
- Audio mixing allocations reduced — temp lists are reused in-place and the occlusion sort predicate is cached as a static
- CommandList attribute access — switched from ConcurrentDictionary to a regular dictionary, cheaper and avoids expensive clears
- Cluster lighting — Cluster::Query now takes a screen-space position instead of world-space, which was unstable near cluster boundaries
- Razor incremental processing — only re-runs RazorProcessor on changed files and reuses SyntaxTree instances, speeding up hot reloads
- Debug overlay visual clarity — render stats grouped into categories, timing fixed to CPU/GPU order, new metrics added, low-signal rows removed. Thanks @darkfated
- SerializedProperty.TryGetAsObject now returns a SerializedObject of the actual runtime derived type, not just the declared property type
- Close game if Steam is not running — instead of cryptic errors, the game now exits cleanly with a clear message
- Error reports now correctly embed user information
- Editor unit tests can now reference built-in tool packages (Shader Graph, Action Graph, Hammer, Movie Maker)
- DetermineHuman not checking the base model first, breaking dresser clothing for characters with a base model
- PropertySignal.Compile(timeRange) not clamping the first/last blocks to the requested time range, causing "blocks must not overlap" errors when compiling Movie Maker recordings
- :last-child pseudo-class updating a frame late when adding child panels
- Cancelling a purchase incorrectly showing "You purchased X!" after the 20-second timeout
- DefaultMaterialGroup not working for .vmdl files exported from MeshComponent
- Clothing properties not serializing to JSON when marked internal — free clothes referenced by resource ID now save correctly
- ScenePanel — render scenes are now kicked off during Tick, decoupling them from the render texture step.
- CBaseFileSystem::AddSymLink overwriting the target path of an existing symlink
- NavArea toggling behaving incorrectly due to stale MakeDirty usage
- The M key resetting the active mapping subtool when merging vertices
- Editor splash screen losing its taskbar window icon
- Minor prefab serialisation and instance ID edge cases
- An array pool use-after-free exploit — game code's ArrayPool.Shared usages are remapped to Sandbox.PublicArrayPool to prevent reading memory from other sandboxed games
- Missing HTTP redirect URL validation — redirects are now manually followed so blacklisted local URLs cannot be reached through redirect chains
- Hammer entity placement always inserting info_player_start instead of the selected entity type. Thanks @Kaikenny
- Gizmo.Hitbox.Sphere behaving differently from all other hitbox functions, causing rotation gizmo priority and clickability issues. Thanks @nixxquality
- Editor splash screen has a progress bar, no longer spews console, is customizable
- Editor Welcome Guide
- Time.NowDouble
- Incremental compiles: smarter processing, syntax tree reuse
- Games can have a dedicated server only launch mode
- If a party leader is downloading a game, party members download it async in the menu
- Mapping vertex paint selection modes
- Updated Scene & Prefab Previews
- Scene.BatchGroup disposable method obsoleting SceneUtility.RunInBatchGroup, also batches network spawns
- Physics out of bounds event
- Selectable abstract AnyOfType<T>
- Gizmo.Control.Rotate now outputs Rotation instead of Angle, added trackball and view based rotation @DrakeFruit
- Mapping: Vertex paint traces only on selected surface
- Mapping: Vertex paint shows verts with paint information
- Mapping: Vertex paint can paint backfaces
- mat_toolvis button in in-game console
- mat_toolvis converted to managed from native
- Minor menu style tweaks: use actual logo svg, hide LiveLobbyCard whilst loading, tweak notification badge styles
- Startup background is smaller, lighter and uncompressed UI image
- Several verbose logs moved to trace channel
- Cleaned up main menu assets and transient files
- Dedicated server no longer does unnecessary transform interpolation
- rendersystemvulkan: use SDL_Vulkan_GetInstanceExtensions for surface extensions
- Update Vulkan headers and volk (w/ valve mods)
- rendersystemvulkan: use VK_EXT_surface_maintenance1 make swapchain recreation a bit better
- SceneUtility.RenderToBitmap uses a normal scene instead of an editor scene so components execute normally
- Improve allocation overlay (#4121)
- Allocation overlay
- Avoid StringToken boxing causing unnecessary allocations
- Reduced Trace.WithCollisionRules allocations
- Reduced Action allocations from Component.ExceptionWrap
- Avoid per-frame KeyValuePair[] allocations when using Parallel.ForEach
- Avoid allocations when creating and iterating CommandList
- Remove need for second lightbinner for fog, just do it all on shader, we do classification on the shader itself, edge cases like fog disable are rare to require doing it with an entire new collection of lights
- LoadAllGameResource only loads new resources
- Make sure SeverPackages.InstallAll only reloads packages once
- Close existing project settings window when opening new one
- Use InvariantCulture in various places when parsing floats @MrSoup678
- Don't show Max Player slider if Min players == Max players @nixxquality
- Dynamic splash screen height to avoid stretching @boxrocket
- Verify CreateGameResults cookie before usage @nixxquality
- mat_toolvis convar doing nothing
- Duplicated r_3d_skybox convars
- BlitMode.WithBackbuffer actually respects WithMips setting (#4096)
- physicalDeviceVulkan12Features.bufferDeviceAddress only enabled if hardware supports it (#4095)
- addon type not having ProjectPage
- Shadergraph: Don't generate TextureAttributes for albedo if its dynamic
- Native Resource networking
- PostProcessSystem does not run under dedicated servers
- Custom loading screen not showing when joining to an existing session (#4124)
- Envmaps, particles and light cookies not being marked as used, meaning they can end up evicted out of VRAM
- GameObjectSystem configuration supports collections properly
- Native resource reference networking
- DirectionalLight gizmo line spacing @boxrocket6803
- Tags not being applied to particle sceneobjects @LeDernierPoisson
- Guard null button origin if none set in action @peter-r-g
- list reorder not updating inspector for class types @Ardivaba
- Enforce FriendsOnly lobby privacy during handshake @trende2001
- Physics: Buoyancy Support
- Mapping: Vertex Paint
- Mapping: Shear Mode
- Mapping: Mirror Tool
- Mapping: Object Selection
- Screen recording can now record the editor viewport
- Fade-in support for Sound.Play
- ParticleFloat support for ParticleEmitter properties
- New image/rendertarget formats: RGB32_UINT, RG32_UINT, R32G32B32A32_UINT
- Paint.Draw overload for pixmap with border radius
- Bone physics catchup
- SHIFT+RMB and CTRL+RMB can now be used outside of the Texture Tool
- Save Play in Game Mode with cookie project
- Indirect Light Volumes improvements, nicer bounds for "Fit to Scene Bounds" button
- Menu server list improvements
- Lazy prefab cache loading for prefab dependencies
- Make ParticleFloat widget descriptions context-neutral
- Make slnx/csproj always use relative paths
- Humans: eyelid morphs are now affected by aim_eyes
- Particle DieOnCollisionChance works more intuitively
- Resize support on GameObjects with IHasBounds
- Load cached asset info for new mods in AssetSystem::UpdateMods
- Destroy menu scene when entering a game to free resources
- Track dynamic states in Vulkan render system to remove redundant vkCmdSetPrimitiveTopologyEXT/vkCmdSetPolygonModeEXT calls per draw call
- Upgraded DXCompiler to latest from Vulkan SDK 1.4.341.1
- Signed Qt binaries, these were causing Windows Smart App Control to not launch the game
- Defer descriptor set deletion to avoid use-after-free on render thread
- Confirm GameObject/Component selection on double-clicking a node
- Scale baked into physics shape geometry — strip it from the target body when calculating local offset
- "Texture manager doesn't know about texture" log spam
- Descriptor set layout ref counting leak in RegisterDescriptorSetLayout
- NRE in Terrain deserialization when TerrainBuffer is not yet created
- Navmesh bake corruption when EditorAutoUpdate is enabled
- ResourceIndex holding strong references to native resources
- EdgeArchTool going the wrong direction
- CompletionQueue assert during shutdown
- GTAO depth dispatch size and missing UAV barriers
- W and E hotkeys not switching gizmo tools
- Crash when ParticleEffect has PushStrength
- WorldPanelInput NRE
- Incorrect property summaries
- Pause modal NREs when no available package (unpublished second instance)
- net_debug assertion spam by calling SetDebugFunction with DebugOutputType.None when disabled
- When reparenting a SkinnedModelRenderer, clear out new skinned parent
- Only create/update nav mesh area when active
- Linux: Non-small struct args (>8 bytes) passed as ptr in managed but not received as ptr in native (InteropGen)
- Linux: Added missing libdxcompiler.so and libswscale.so dependencies
- Linux: Stop trying to load resourcecompiler when in non-tools builds
- Linux: Enable VK_KHR_wayland_surface for Wayland
- Linux: Plat_CreateWindow creates an SDL_WINDOW_VULKAN
- Humans: prevent skeleton from blowing up when wearing jar head
- Defer sentry close to after native AppSystem shutdown
- Mapping snapping
- Mapping: flip mesh
- Mapping: box select & lasso selection
- LengthOverride property @ubre
- GPU Profiler overlay
- TreeView extras
- Navmesh baking
- Navmesh memory optimizations: improved by at least 5 times
- Hi-res screenshots use global anti-aliasing setting
- Mapping Tool "Save As Model" uses the model origin & supports more collision types
- Swapchain creation now uses SDL to handle surface creation, try to be more sane about format
- Swapchain depth format is simplified as always being D32FS8, with additional required flags
- DDGI uses RG1616F instead of BC6H because block compression caused too many artifacts
- Navmesh polygon mesh generation is 20-30% faster
- DDGI gizmo probes load relocation positions from relocation texture
- Use native C implementation for LZ4 managed compression API, used by networking
- Error handling for nested prefabs when a prefab is missing
- Foliage uses alpha to coverage for MSAA
- Steam callbacks run in network thread to prevent disconnects whilst main thread is busy (loading resources)
- Indirect light volumes use two passes bounce by default for higher quality
- Keep MainThread responsive when loading navmesh in editor
- Big VR cleanup
- DDGI: Stability improvement for ComputeVisibility @RedPixel
- Logs now archive when old or go over 512MB @766974616c79
- Crash: CLoadingResource::FinalizeLoadRequest with cyclical dependencies
- Crash: ResourceType overflow (too many GameResources) causing a buffer overrun and resource system corruption
- PlayerController animation events not reenabling when component is reenabled
- Navmesh CalculatePath giving up early on complex paths
- Not being able to frame to objects while in ejected viewport
- Nudge direction being inverted
- Auto-closing restore scene tabs on startup
- Terrain buffer leaking if disabled or deleted
- Terrain buffer reading has a HasTerrain check now
- Memory usage is measured with WorkingSet instead of PrivateMemorySize
- Vulkan robustness correctly uses pipeline robustness alongside now
- Null GPU buffer descriptors are now "bound" correctly with VK_WHOLE_SIZE range
- Error shader had mismatched descriptor set layouts between the vertex and pixel shader, potential GPU crash
- Editor swapchains matching screen resolution forcing exclusive fullscreen on Nvidia
- Titlebar switching back to fallback thumbnail after publshing
- Screen recording failing with ScenePanels
- MovieMaker: Session nav widgets not always being visible
- MovieMaker: Additive keyframe editing when source block starts at T=0
- MovieMaker: Timeline vibrating when trying to pan too far left
- MovieMaker: When dragging in timeline, scrub if we drag off the edge
- Indirect light volumes copy depth to color using compute, a Graphics.CopyTexture was not suitable because of different image formats
- CookieContainer not auto saving properly
- Renaming assets causing duplicate AssetListEntry selection
- GameObjectSystems not serializing on global systems, and deserialization failing for non-trivial types
- Glass shader not supporting orthographic projection properly for refaction
- StickyPopup height being awful
- Quad overdraw not working
- Occasional double context menu on searchable menus
- CodeGen compiler warnings related to [Sync] when using nullable @Remscar
- Indirect Baked Lighting - DDGI
- Project settings window, accessible from project bar in the top right of the editor window
- GameObjectSystems can have confgiurable properties, accessible in the project settings window
- Networked local instances now have a unique SteamID for testing persistence
- Networked objects can now be "detached" meaning they're no longer networked
- Snap To Frame option for particle sheet sequences
- Popup.PositionModel.Right
- Binaries (exes, dlls) are now code signed by Facepunch - makes Windows trust them more
- Foliage shader has been improved in many ways, adding new options, fixing dithering, and more
- Mapping tool hotspot matches Hammer's hotspot
- Mapping selection enhancements
- Mapping face selections
- Active material is remembered with a cookie when you restart the editor
- Profiler post processing removes dead threads
- Console output gets forwarded to attached debuggers
- Unspawned networked objects do nothing when Network.Refresh() is called
- Lots of micro optimizations for networking CPU performance
- Dedicated servers use Steam Networking's SendMessages API
- Codegen lambdas are cached
- Optimize Json.Diff.ReorderAddedObjects
- Vector3 micro optimizations
- Reduce smoothdamp usage in audio components
- GroupButtonControlWidget Enabled/ReadOnly handling
- Movie Maker Maintenance
- BlobDataSerializer is now stack based
- Enabled VK_EXT_robustness2, adding extra safety and allowing null
- When creating a new asset, it is named before being created instead of renamed
- GenericControlWidget will pick the parameterless ToString method @766974616c79
- Potential crash with PoseContext::TryTakePose and PoseContext::GetPose
- Potential crash with AsyncResourceLoader accessing the resource system during shutdown
- Crash on shutdown when the main loop throws an exception
- Crash when rendering envmaps during an active render pass
- Crash when closing dock tabs by the context menu
- Crash with Qt widgets getting deleted too soon in event callbacks
- Crash with exclusive fullscreen in editor mode (disabled it)
- Error with ReferenceMaterial not being found when loading the fast texture tool
- Error when using dump_scene command
- Trying to ConVarSystem.AddAssembly the same game assembly twice
- Video generation for batch upload by making sure ScreenSize is set
- ScreenRecorder not respecting framerate cvar
- Rubber surface being way too bouncy
- Certain tools eating shortcuts because the ViewportToolbar was taking focus
- Fast texture tool UV's not being frames to the preview
- Fast texture tool world scale having confusing extra options
- Missing large network files on local networked instances
- GameObjectSystems not existing on clients (older version) erroring when connecting to servers
- ConsoleWidget trying to parse arg: anchor as uri
- Cloud assets not persisting between sessions @trende2001
- SceneTrace.UseRenderMeshes are now editor only
- GPU crash diagnostics which had some performance overhead
- Clustered Culling
- EnvmapProbe baking
- SCSS Mixin Support
- GameObject/Component Tree Picker
- Editor gizmo selection
- BlobData API which will serialize as a binary file blob
- IPressable Tooltips
- Added Copy+Paste to Mapping Face Tool
- Mapping tools apply hotspot
- Edge arch tool
- Expose MinImpactDamageSpeed, ImpactDamage in ModelPropData
- Added "thrill" parameter to the player animgraphs
- Added "eyes_closed" override to the "face_override" list in the player animgraphs
- Add custom texture filtering/address mode to line renderer @wheatleymf
- Allow for getting and setting of static properties and fields in TypeLibrary @Kicks
- CodeGen supports C# 14's `field` keyword @badandbest
- Restrict client object destroying option (Networking) @jusvit
- Custom filtering/address mode for line renderers @wheatleymf
- Add custom texture filtering to BeamEffect too
- Editor: Better widget feedback
- Launcher & project creation window styling fixes
- GameObjectSystem can now serialize properties
- Managed Skybox Pipeline + Skybox Tiled Rendering
- Fast Texture Tool preview update
- Vertex, Edge, and Face tools all save their last Selection
- Mapping gizmo & helpers
- Crash reporting reports C# stacks when C++ crashes
- Edge cut tool & pivot picker updates
- Dedicated Server Improvements
- Audio Optimizations
- Reduce Some Network Allocations
- Humans now blink the same as citizens
- Updated mimalloc to 3-rc2
- Show resource generator descriptions as menu option tooltips @Zontax
- Node Editor API changes @QuackCola
- Having to restart after purchasing a new Clothing Item
- Crash in video recorder with double mutex unlock
- Crash when closing ModelDoc Shutdown called before hide
- Crash when joining via New Instance
- Crash when rendering lines with an invalid LPV
- Crash in animation code out of bounds
- Crash catching EnqueueResourceManifest in managed
- Crash with managed exceptions in Qt callbacks crashing native engine
- Crash with IES being disposed at end of function
- Assets recompiling just because of search path changes (menu assets primarily)
- "Discard Changes" option not working, make sure we're updating the scene source when saving a session
- Editor Viewport Fixes (DPI scale, multiple viewport box select)
- Cubemaps messed up in scenemaps with 3D Skyboxes
- UpdateActivity Exceptions
- Selection breaking after model reloads (recompiles)
- OnNavigationOpen not being called on panel you switch to
- Editor tools not being ticked if mouse is not focusing a viewport
- Press events on child GameObjects being sent to the parent if it has a rigidbody
- WorldPanels `overflow: hidden` not working
- Hammer block tool exceptions
- Hammer GameObject components being unable to be edited
- DropDown initial display when using Value:bind with Options
- Clean up editor tools when entering play mode, notably camera preview doesn't stick around in play mode anymore @boxrocket
- NRE when clearing graph on GraphView @fishy
- ActiveScene.Name @766974616c79
- CheckValidationAttributes call within ReviewWizardPage not outputting all error messages @TrvsF
- Broken hover styles, add missing tooltip & relevant localization files for "Notifications" @matt944
- update model drop object gizmo scenemodel, no longer gets stuck @boxrocket
- UseInputControls disabling lookat controls on PlayerController @LeDernierPoisson
- Localized Particle Velocity Fixes @Fortune
- Asset Browser clearing on asset recompile @trende2001
- Workshop items can now have a category
- Nvidia Aftermath is now enabled by default and uploads GPU crash dumps to Sentry
- Shader sources that were in our open source repo are now pushed to Steam too
- Editor console links can open files (like videos)
- Rubber Surface Type
- Mapping: Fast Bevel Tool
- Mapping: Fast Texturing Tool Undo/Redo
- Mapping: Select Faces/Objects using Material
- Mapping: Merge Meshes By Edge
- Joint has an advanced AnchorBody property
- GameObjectSystem supports INetworkSnapshot
- AssetTypeAttribute.FindTypeByExtension
- SpriteRenderer: Alpha Cutoff is allowed in all circumstances
- ModelPhysics behaves better when enabling and disabling
- Many IDisposable objects are now disposed properly with a using scope, reducing GC pressure
- Many materials and shader references have been statically cached, reducing GC pressure
- Dont break prefabs on networkspawn
- GameResourceEditor windows are child of main editor (they no longer hide behind it)
- Inspector now resolves SceneEditorSession from it's target
- ByteStream now uses ArrayPool as it's backing storage
- Mapping: Double click faces selects contiguous faces, not all of them
- Mapping: Compute vertex tangents the same way hammer does
- Mapping: Gizmos no longer eat inputs when double-clicking
- Make DEBUG define constant controlled by ReleaseMode
- Duplicate files when publishing a package, preventing publishing
- Texture.Load and other media loads now obey the same rules as Http.Get
- Terrain texture streaming not working
- SkinnedRenderer add null check when accessing go parent
- GlobalContext getting dropped in async tasks causing naked avatars in the main menu
- Corrupt shader cache preventing the game from opening
- VSCode workspace files failing to write when projects contained unittests
- VSCode workspace sets slang.workspaceFlavor to vfx enabling shader intellisense
- Texture Cube Fixes
- Wheel suspension gizmo goes along Y
- Handle HttpRequestException on package get
- Label IsRich not applying font size, scaling properly
- Game Controller Vendor Fix
- BuiltIn game projects (menu) aren't dependent on libraries
- Inspector selection lag
- ComponentEditorWidget ignoring derived types @badandbest
- CrashReporter still reports even if Sentry fails
- Mapping: Bevel tool steps match closer to Hammer, added smooth normals
- Scope last selected SceneViewportWidget to SceneViewWidget
- Video recording: pass the muxer options
- UI/Panel Eyedropper tool works with recent changes
- Wheel joint steering axis
- Fallback to shortcut without modifier if the shortcut doesn't exist with modifier (allows things like tool switching while modifier is down) (#3653)
- Sound previews start at playhead position
- Editor camera sticking in place at very low speeds
- Sprite editor origin
- Opaque & non-opaque sprite sorting
- Unduck headroom check failing
- Don't discard normal in line compute shader when there's 2 points - fixes not being able to rotate points of line when there's only 2 objects
- Physics aggregate data causing crashes
- Only draw meshes in highest lod for Graphics.DrawModel etc.
- Mapping move mode gizmos initial state
- Actiongraph editor regressions
- ByteStream memory leaks
- Editor shortcuts
- LargeNetworkFiles requesting non-existant files would crash the server
- Crashing connections by sending invalid data or JSON
- WorldInput state being stomped
- Gizmo selection crash when TypeLibrary lacks a component type
- Transition background-image-tint
- Editor command line argument parsing
- SceneLineObject loading Materials & ComputeShaders on non main thread causing a crash
- "Apply to Scene" shortcut
- ALT input not working in the editor
- CodeGen Preprocessor Defines Fix
- Compiler: get rid of "library" assembly prefix when publishing
- Obsolete vertex attribute array
- Obsolete WorldInput class (Use the component)
- Scene Mapping: Edge Cut
- Scene Mapping: Fast Texture Tool
- Scene Mapping: Polygon Tool
- Scene Mapping: Resize Mode
- Scene Mapping: Material Palettes
- Scene Mapping: Merge meshes operation
- UI: Allow scss variables to be used in `@keyframes`
- Networking: Added callbacks to NetList and NetDictionary when entries are added/removed
- Shaders: Added g_vSelfIllumOffset for scrolling self illumination texture
- NavMesh: Collision Rules to NavMeshAgent Ground Trace
- Shutdown scene early (#3576)
- Brush settings control widgets (#3598)
- popup/dropdown stylesheets
- Add formatting to indicate state of sound preview toggle buttons @boxrocket6803
- Reset Game.IsPaused when the scene is stopped. Tint pause button blue when the game is paused @Matt9440
- Call SceneLoaded listeners for clients @andy013
- Do not focus LastSelected when switching tools @aidencurtis
- Crash: When writing descriptor sets, some buffers could become freed whilst in use
- Terrain: Create buffers early to avoid rendering unbound leading to a potential crash
- Terrain: Brush preview follows cursor when held down
- Map.CreateAsync not working properly because of a missing ServiceWorldRequests
- Sandbox.Compiler.config not being initialized by default
- Nametags showing above menu for humans on main menu
- Editor: Orbit Camera
- Editor: Preferences keybind modifier
- DropDown control struggling with empty/null values
- exceptions in ParticleModelEmitter when model is null
- Make sure MovieResource.EditorData is set when saving
- Prevent INetworkListener OnDisconnected being called on clients @andy013
- package visibility overlay @Drakefruit
- overload of Gizmo.Draw.Model @Nolankicks
- DebugOverlay.Text being culled when looking away from the scene origin @andy013
- GameObjects in GameObjectSystem NetLists being null on clients @andy013
- UI not being resized to screenshot_highres dimensions, contributed by @trende
- Terrain: Can now support up to 64 materials, changed to a 2 layer blend (base/overlay) instead of a 4 layer blend
- New mapping editor tool interface
- High resolution screenshots with screenshot_highres command
- Dresser component now has a randomize button
- Human Visemes
- PhysicsFilter component which allows collision to be disabled between two rigidbodies
- VolumetricFogVolumeTool editor tool to edit volume bounds @Nolankicks
- API: Panel.GameObject
- API: Make public SceneModel.GetBoneVelocity() and SceneModel.HasBoneOverrides @yuberee
- API: Add SkinnedModelRenderer.GetBoneVelocity() @yuberee
- API: Allow DecimalConstantAttribute @766974616c79
- Crash Reporter is now a C# app, and calls to our API
- Multi-viewport in play mode
- Update meshoptimizer to v1
- Make MSAA setting work on editor SceneRenderingWidgets
- enforce gameobject order and form groups whilst duplicating @johncosfm
- Various crash fixes when shutting down engine
- unfuck the ordering of rebuilding in mesh component so mesh is built before collider, also don't use gameobject scale to scale geometry
- suspension disabled just limits the suspension to zero internally so it doesn't fly off into space, also set suspension and steering spring defaults to 10 hertz, 1 damping
- Don't double present the game in editor, which was incrementing completed frames too far and freeing used resources too early
- Avoid doing LoadAllGameResource multiple times on editor startup (and before we've setup some search paths)
- AgX tonemapping being washed out
- Networking: Performance Regression
- DebugOverlay.Text not rendering @andy013
- Mesh Tool - Shortcut Fixes
- Cache (De)SerializeOptions in hot paths
- Check if native SteamUser is valid before trying to access it
- Fix clamped does nothing @766974616c79
- Fixed additive scenes (such as the system scene) applying its NavMesh properties on the main scene
- Fixed terrain UV rotation giving wrong normalsa @wheatleymf
- Handle profiler cancel @766974616c79
- Categorize uncategorized base components @Nolankicks
- change "games" to "maps" @chesiren
- Fix: Properly destroy Scene in MapWorld to prevent memory leak @PatrickJnr
- ControlSheetRow hides property based on ShowIf etc
- Fix broken grass texture in menu
- Wheel joint support
- MovieMaker: Bone tracks, IK controls, character animation tools
- Connection Input / User Commands
- ModelDoc: Gravity scale to physics body markup (supports negative gravity)
- GraphicsView: Min/Max zoom
- Text effects drawing for underline/strikethrough styles
- NetList: AddRange
- Sandbox.Mounting.InitializeContext.IsDlcInstalled
- Support for Nullable<> as ConCmd argument
- r_max_anisotropy convar automatically set by Texture Quality settings
- Sandbox.ISceneLoadingEvents.AfterLoad default implementation
- Allowed System.Collections.Frozen.*
- Implemented Game.IsClosing
- Reimplement impact damage system for Rigidbody
- Tweaked editor styles
- Display s&box version in editor
- SceneEditorSession: stop setting window icon on frame; use editor title
- Fix AssetBrowser view mode persistence and icon update
- PathWidget: update visibility on resize instead of rebuilding
- Updated menu cloud assets
- Updated button styles and nested hover rules
- Transform child panels relative to parent space
- Improved Sandbox.ISceneLoadingEvents.AfterLoad with default implementation
- Switched Dresser's initialization from OnAwake to OnStart
- VR fixes
- Use TensorPrimitives in FloatSpan
- Update MapInstance to support scene maps
- ParticleEmitters aren’t finished until at least one emission
- Clear Bitmap PathEffect
- Fixed Dresser component failing to dress players in their own clothing
- Editor: Fixed re-possessing not getting saved viewport size
- Fix Outline Stencil Tests
- Fix Parenting Networked Transform Issues and Interpolation Bug
- Fix audio playback and waveform rendering for vsnd preview widget
- Engine swapchain validation error fixes
- "QMenu was null when calling clear" error
- Impact gib velocity
- Fix atmosphere_sky shader
- Model highlights showing when gizmos block selection
- Handle QueryServers cancellation without throwing
- 'Open in Editor' not working on hierarchy prefabs
- Pasting properties with invalid JSON
- Delayed heartbeat and host stats sending every frame
- Ducking modifying body height, stomping over user changes
- SoundscapeTrigger error if source or SoundFile is invalid
- SSR fixes
- Gibs being network spawned twice
- AssetList: fix label clipping, proper text eliding
- Voice.LaughterScore not being hooked up
- Only delay FakeLagProcess if no packets were handled
- Spell checked various public-facing XML comments
- Animgraphs not downloaded for local-only projects
- Clicking within ContentBlockHero now correctly opens create game modal
- Removed IsUnitTest check in Material Load functions
- Remove legacy native networking code
- Remove unused native coroutines
- Open Source
- Terrain anti tiling
- Gibs networking
- Editor tool widget
- UI EnumControl
- UI Label.Tokenize (turn off automatic conversion of strings starting with #)
- UI TextEntry has tokenize turned off, strings can start with #
- UI ColorControl
- UI Color mixer popup
- Native memory management rewrite, switched from jemalloc to mimalloc
- Refactor TreeNode.OnRename, it's not up to the node to create the popup anymore, just react to what the text is.
- Stopped a lot of the editor recreating itself during hotloads
- Networked Children Replication When Parent Is Disabled
- Make indirect lighting from skybox actually be infinite rather than a big volume
- Updated Box3D
- UI happens after OverlayWithDepth (Scene.DebugOverlay, Physics Debug, etc.)
- Animgraph sort condition list
- Prevent Camera Preview LookAt mode from exiting immediately
- ControlSheetRow.Property is a [Parameter]
- VR not rendering
- Terrain no longer has LOD seams
- MixerTreeNode inline rename not working
- Update PlayerController docs link
- Abort video threads early on stop
- Storage.Query not sorting properly
- Hammer crash from invalid CUtlScalarHash usage in mapdoclib
- ShadingModel shows wireframe color correctly
- Play mode not focusing, setting correct cursor, weird inputs, ime not working
- Play button playing the wrong scene
- Using Movie Maker in play mode
- Ejected scene camera not being at game camera's location, NRE when no camera
- ViewportOptions button being visible while ejected
- Toggle eject button highlight + tooltip
- Input: release pressed buttons when losing focus
- Toggle Fullscreen toggles the current scene view
- Game view resolution/ratio dropdown functionality
- Restored GameEditorSessions
- Fix nullref when right-clicking Inspector property name
- Remote Spawn Child Transform Fix
- "Render Backface" toggle not working in Material made from ShaderGraph shaders
- Not being able to "Paste as New Component" on prefab instances
- SceneTrace uses the passed scene.PhysicsWorld instead of Game.ActiveScene.PhysicsWorld
- Skip menu editor code outside of the menu project
- Asset Browser: skip menu project assets in Everything and Recents
- Blendable materials can use tint color
- Deleted old softbody nodes
- Deleted old thirdpartylegalnotices.txt
- Multi-select support for material groups
- Multi-select support for body groups
- Razor syntax highlight in VS2026
- Razor intellisense in VS2026
- Sprite Control Widget enhancements
- Cloud asset cleanup
- Network time sync improvements
- Prop / ModelPhysics network refresh is granular instead of the whole hierarchy
- Only create bone physics if the model has joints
- Editor: Dedicated server uses local project path, instead of cloud project path
- Movie Maker: serialization safety, better string support
- Physics rules caching
- Friends List overlay improvements
- Several security exploits allowing RCE
- Error sometimes when framing objects in the editor
- Terrain not streaming textures and using the lowest mip
- Physics spring serialization fixes
- Warning/error in AddPanelEventAttribute
- box3d: Hull bugs
- SSR and SSAO not working
- Highlight not working
- Hammer Static Overlays not projecting on world only properly
- A bunch of unused native libraries
- ModelDoc: Unused jiggle/cloth/softbody nodes
- ModelDoc: Cloth preview (hasn't been functional for a while)
- Scene.AllActive
- Game.Overlay.Close and Game.OverlayCloseAll
- Optimization: ByteStream optimized much faster
- Optimization: Switch DeltaSnapshotSystem to use ByteStream
- Optimization: Reduced interpolation allocations
- Optimization: Convert CommandList from Action += to struct list (#3325)
- Box3D updated
- Input router now uses floats for mouse deltas
- Editor: Inline widget can copy, paste, reset
- PlayerController: only scale anim-driven footstep volume by WishVel
- Don't fire OnEnabled on child components if the GameObject is being destroyed
- Fixed time in Update being 1 frame old
- Clean up FixedUpdate lerping, fix weirdness
- Security: Fix unrestricted TypeLibrary property setting
- Security: Sealed Bitmap
- Security: TypeLibrary.MakeGenericType obeys constraints at runtime
- Buffer Overrun in SpriteSystem
- Movie Maker: Fix not being able to scrub by dragging on scrub bar
- CreateGameModal not passing thru selected privacy
- EnterChair Not Being Exposed
- Don't flush in SwapChain destructor during shutdown
- Fix wrong logic in OOBChecks.ThrowIfBoneOutOfBounds
- Fix divide by zero in MathX.LerpInverse
- Fix SelectionSystem.OnItemRemoved being called with the wrong object
- Fix Plane.Equals always returning true
- Fix BBox.Contains when the box is the same size
- Fix PanelTransform equals operators
- Fix string.TrimQuoted could throw on empty strings
- Fix logic in Spline's CheckPointIndex
- Fix divide by zero in Spline
- In Rotation.Pitch - add clamp to prevent NaN
- Fix incorrect calculation in Vector3.TcbSpline
- Fix possible divide by zero in MathX.Remap
- BaseFileSystem.Mount will ignore double mount
- Fix launcher being in the wrong directory
- Fix Collection was modified in ExecuteEnabledInSelfAndDescendants
- Avoid throwing OperationCanceledException when querying servers
- Protect against NREs in Mixer.ApplyProcessors
- Fix asserts in ClothingContainer.ApplyAsync - just return if body becomes invalid
- Fix NRE in NetworkSystem.OnSceneLoaded
- Fix NRE in GameInstanceDll.CreateGameNetworking
- Fix NRE in MoveModeLadder.ScanForLadders
- Fix NRE in MoveModeSwim.UpdateWaterLevel
- Tweak MenuUI\FrontPage.razor to fail less spectacularly
- More packages to the GameCache
- Editor can use menu overlays in games
- Add references to editor libraries from editor compiler/csproj
- Movie Maker: Image Sequence Export
- Physics: Rigidbody.GravityScale
- SpriteRenderer `OverlayColor` property
- Added TextBlock.SelectionColor
- MoveMode.CalculateEyeTransform()
- MoveMode.UpdateCamera( CameraComponent cam )
- PlayerController .IEvents.PreInput
- Collider.ColliderFlags
- SitMoveMode - a MoveMode for PlayerController that enables sitting
- ISitTarget - used by SitMoveMode to allow sitting on a component
- BaseChair component
- Terrain displacement
- Sandbox Entity Template
- Dev staging builds are now versioned date-commit e.g 25.11.04-e3cd948
- Fail to launch if !Avx.IsSupported, it's a sane requirement of any CPU made after 2011.
- Movie Maker: Snapping / dragging / resizing rewrite
- Gizmo.Draw.Model can be animated
- Optimization: Avoid ComponentList.GetAll usage in hot paths
- Update VSCode editor integration
- RenderAttributes pooling reduces GC pressure
- Crash: ModelDoc using the RemoveBoneAndChildren node
- Crash: CreateMixer audio crash
- Application.Version being stripped early
- AssetList: fix context menu not showing "Open in Visual Studio" for code files
- fix PlayerController.Step getting stuck on edges when under low ceiling (#3247)
- Physics: Fix collider offset bug
- Physics: Clamp physics material density to zero not FLT_MIN, zero density is allowed because it can be used to skip mass calculation
- fix model collider scale
- clamp convar value setter to min max
- CreateObjectMenu NRE fix
- Mesh Editor: Undo Fixes
- Nav: Fix Pathing A* heuristic by removing cost normalization
- Nav: Force Agent Position Validation after Agent.SetPosition
- Storage UGC API
- Movie Maker: Looping Sequences
- VideoPlayer: Readded HTTP live streaming support (hls/m3u8)
- NavMeshAreaDefintion Resource
- NavMeshArea.Area
- NavMeshLink.Area
- NavMeshAgent.IsNavigating
- NavMeshAgent.GetPath()
- NavMeshAgent.AllowedAreas/ForbiddenAreas
- bool NavMeshAgent.AllowDefaultArea
- Capsule properties are marked with [JsonInclude]
- Game.Overlay.WorkshopPublish
- FileSystem.CreateMemoryFileSystem()
- Cloud.IsInstalled( package )
- Cloud.Load( package )
- Cloud.ResolvePrimaryAsset( path )
- Cloud.ResolvePrimaryAssetsFromJson( string )
- TextEntry.HasClearButton property
- ResourceLoader.Name (filename without extension)
- InputFocus.Clear()
- Version overlay tweaked
- Live games tweaked
- Store items display when they're leaving
- Upgraded to FFmpeg 8.0
- TriggerHurt assigns DamageInfo.Damage
- SceneTree: enable drag/drop anywhere
- ProjectSettingsInspector now opens a single popup when forcing the Inspector
- Materials & models store their referenced cloud packages
- Only group selection for convert to prefab if it has more than one element
- Re-initialize the editor camera whenever a new scene is loaded in a SceneViewportWidget
- Bias nav agent ground detection to prefer bottom trace
- BaseFileSystem creates the directory structure when writing a file
- TextEntry is :empty when it has no value set
- Tool materials used by Hammer/ModelDoc not rendering properly due to dynamic expression reliance
- Crash when attempting to duplicate a scene root
- Crash when trying to mix an invalid sound handle
- Crash when GenerateMipmaps was used from multiple threads
- Whitelist errors when verifying multiple assemblies at once
- High Acceleration NavMeshAgent Getting Stuck on Edges
- Restore IPressable.StartPressing behaviour so it can work with GetUsableComponent again
- Restore Eye Dropper for InterfaceControlWidget
- Load NRE when EditorOnly flag is set on a prefab root
- "Merge Edges" not undoing to it's original state properly
- MeshComponent's SceneObject being rebuilt whilst disabled
- Modelphysics trying to drive physics from animation when motion is still enabled, we only want to apply this feature if the modelphysics is in kinematic mode
- Sandbox.Mounting.ResourceFlags not actually being flags
- Fixed held down keys repeating when input goes into UI mode instead of ignoring until up
- Fix ColorAdjustments PP running in the wrong place
- Obsolete NavMeshArea.LinkedCollider use SceneVolumes instead
- Preloaded content in initial Steam download
- Crashing now opens a crash report
- Support for selecting resources for interface properties in the editor
- VR toggle button to editor titlebar (if vr enabled)
- Group game objects before converting selection to prefab
- Sprite Editor: Multi-Select support. CTRL to add to current selection, SHIFT to select all between last selection
- Sprite Editor: Added DEL and CTRL+D shortcuts for Delete and Duplicate
- Sprite Editor: Deleting, Duplicating, and even Drag-and-Drop actions now work when performing a Multi-Select
- Sprite Editor: Right Click -> Edit Frames can edit multiple frames at once with a Multi-Select
- Sprite Broadcast Events
- Sprite Broadcast Event Types
- SpriteRenderer.PlayAnimation() no longer resets the playback when calling on the animation that's already playing
- ParticleSpriteRenderer now has a PlaybackSpeed property for Sprites with animation
- Ability to edit HashSet<T> properties in inspector
- Material: Material.Set( ... ) actually works to set any parameters
- Material: Added Material.SetFeature( .. )
- Material: Added Material.GetFeature( .. )
- Material: Added Shader.Schema (but don't use it yet because it's all gonna change)
- Material: Refactored internal material system, so we understand it more
- Sprite Editor: Made room for the scrollbar in the Timeline
- Refactored SceneSpriteSystem.AdvanceFrame -> Sprite.AnimationState
- Clears clamp properly to the render area
- All resources support IsValid
- BBox.Transform() now works correctly for asymmetric boxes and scale
- PlayerController press trace can hit triggers, but drops if a solid fails press
- ToolsVis Quality of Life Improvements
- Allow PlayerController unducking while swimming or climbing
- net_fakelag and net_fakepacketloss are cheat convars
- Model reload crash
- Physics: FindClosestPoint on overlaps
- Glass now always uses the correct framebuffer, fixes it when multiple tools are open
- Depth of Field Fixes - Edge Vignetting & Quality Scaling
- Clear connections from local snapshot states for networked objects on host change
- Update main camera when a camera priority changes
- Fixed [KeyProperty] properties not respecting [ShowIf] and [HideIf] attributes
- GenericControlWidget now checks for visibility updates properly
- NativeRenderingWidget: Replacement is SceneRenderingWidget
- Material: Dynamic Expressions
- Remove native unused WellKnownRenderTargets
- vr_vulkan_wait_fence_between_eyes dead convar
- Networking Compression: LZ4 is used on larger packets (> 128 bytes)
- Decals: Emission Texture Input
- RenderTexture Asset
- Sprite Resource Editor
- Rope Component
- RigidBody: Added InertiaTensor, InertiaTensorRotation, ResetInertiaTensor
- Mounts: Added flags and tags and a directory system to make it easier to browse
- Third party attributions for: VMA, Vulkan Headers, Box3D, MonoMod
- Move Sandbox Verlet Ropes to Engine (#3150)
- Networking: Optimized Sync Vars and Delta Snapshots
- Networking: Remove allocations from NetworkObject.GetPropertySlot
- Menu Settings Improvements
- Managed navmesh generation
- Don't run post process effects if we're in ToolsVis, other command lists should still run eg SSR and GTAO
- Directly forward Sandbox.Vector index access to System.Numerics.Vector.Item[int32]
- Cloud Assets: use non-recursive vmap ref collection, better version conflict handling
- MeshTrace now has ignore GameObject support
- Default decals have a tighter attentuation angle
- Adjusted main menu particles to be way less intense
- Line Renderer now applies tags
- GPU Crashes go through our crash reporter
- Movie Maker: Video export correctly switches camera based on priority
- Santa Hat and Skater Helmet Camo being unusable
- Bloom "Firefles", Fix Subsurface in Ambient Baked Lighting
- Apply missing attributes to 3d skybox attributes
- Kinematic ModelPhysics lagging behind
- Child collider update on transform change
- Physics heightfield triangulation not being clipped before navmesh generation
- Update decal sort layer on change
- Edge case for loading nested prefabs
- NRE when applying added objects to a prefab
- BBox control gizmo tweaks
- Screen recorder stops when ending editor play session
- Ambient Occlusion: Restored spatial denoise mode
- Ambient Occlusion: Support non-standard projections and fix haloing around edges by calculating fov from projection matrix
- Updated Box3D: Wind force & mesh vertex weld options
- BaseItemWidget has more explicit callback handling and improved undo integration
- Refactored SceneCamera.RenderToCubeTexture to use command lists
- ModelPhysics bodies set a GameObject source so collision event system can look for listeners
- Scene Viewport: Only show black background in 2d views with ShowSky disabled
- Downsampled SSR producing artifacts and crashing Intel Graphics
- SpriteRenderer having an unbound unused buffer leading to a potential crash
- GPU Resource Barriers having completely wrong flags in many cases, leading to potential crashes or undefined behaviour
- Rare crash in ModelDoc physics sim
- Crash when loading invalid VPKs
- Crash when binding invalid render targets
- Speculative editor crash with destroying widgets
- SnapToGrid dividing by zero
- Updating PanelRealTime twice in editor, resulting in 2x faster UI transitions and animations
- Standalone not booting because of missing quality profiles and expecting a download cache
- Movie Maker: Not being able to drag time selection fade in
- Movie Maker: Video exports have correct field of view and warm up ray tracing
- Console styles
- Scene Viewport: Fix FOV not respecting editor preferences
- GameObjectSystems not running in PrefabScenes in editor, they will only not run in PrefabCacheScenes now
- ModelPhysics Destroy
- Profiler not launching from missing dependency Microsoft.Diagnostics.Tracing.TraceEvent
- Editor TintAttribute and HelpUrlAttribute not working
- Left-click inconsistency when select/deselect GameObject gizmos
- Gamepad Cursor Issues
- InputContext: CTRL + C queues a copy event, not cut
- Hierarchy right-click context menu creation at root
- First person models, moved to workshop
- "Include Source Files" option temporarily while we figure out a more solid solution
- BaseItemWidget.ItemsSelected and BaseItemWidget.ItemsDeselected are obsolete in favour of BaseItemWidget.SelectionChanged
- ResourceState.VertexAndConstantBuffer and ResourceState.IndexBuffer are obsolete, use ResourceState.VertexOrIndexBuffer
- Third party dependency: Template Numerical Toolkit (TNT)
- Third party dependency: org.json
- Unused parts of native recast
- Workshop Cosmetics
- Cloud Addons
- Embedded Resources
- Server .csproj
- Natural Selection 2 Mount
- UI: VirtualGrid Panel
- Add "Replace With Prefab" Context Menu Option for GameObjects
- Add warning popup when opening KV .vtex with Texture Editor
- Pirate outfit human version
- Add FindMode to ISceneEvent.PostToGameObject
- Add `nav_debug_draw_distance` ConVar
- Add NavMesh.CalculatePath
- Add NavMeshAgent.SetPath
- Pirate outfit human version
- Cylinder Hitbox API
- Renderer Component LOD Override
- Added Cloud.Load<T>(ident) for fetching Cloud Assets at Runtime
- ModelBuilder attachments
- ModelBuilder body groups
- ModelBuilder material groups
- Model body & joint builder
- DDS texture loader
- Editor: Asset browser side tabs
- Granular Network Refresh
- Added privacy modes to Create a Game Modal
- Added Subgraph Input nodes to ShaderGraph
- Package.IRevision now includes a Summary property
- Cached Packages no longer have Summary = null even when a summary is present
- Library Manager: Added "Category" and "Sort By" dropdowns in the Browse tab
- Library Manager: Added "Package Details" section to the selected package
- Updated Box3D
- Reactive EnvmapProbe (#2634)
- Minor Editor Visual Cleanup
- Networking CPU Optimizations (#2683)
- Editor Selections are now correctly ordered according to what was selected first/last
- Support convert to prefab when multiple game objects are selected
- Ensure a prefabs RootObject name always matches the file name
- Inspector prefab instance override context menu.
- Can drag-and-drop files to WildcardPathWidget
- Don't create Texture Asset when dragging an Image into the Scene
- Constrain Editor Flyouts/Popups
- Rework Impact Sound Networking
- Support empty selection in SequenceControlWidget
- Flag open prefab editors as unsaved when applying instance changes.
- Make project's launchSettings.json actually useful and launch the editor with -project
- Navmesh Debug Draw transparency
- Movie Maker: Curve painting optimizations, recording fixes
- Menu Server List fixes #2687
- Shadergraph: always serialize default values
- Hotload: support compiler-generated readonly collection types
- WorldInput uses cursor ray when mouse is active
- Fix text renderer bounds not respecting alignment
- Text render point filtering
- Asset browser shows folder paths when searching/recursive
- Batched Sprite Renderer
- Particle Optimizations
- Can now use the [Order] attribute for tabs in the Widget Gallery
- SubgraphInput and FunctionResult nodes now have unique colours in ShaderGraph
- Library Manager Visual Improvements
- Library Manager: The left and right sides can now be resized using the splitter
- Library Manager: Hovering over a version in the dropdown displays the version's changes/summary in a tooltip
- UI: CSS property image-rendering is now inherited properly
- UI: Samplers are now bindless
- Razor: RenderFragment now uses the correct context
- Replaced [GameResource] with [AssetType]
- TypeLibrary cache system
- Hammer static overlays being batched incorrectly making them not appear
- CameraComponent.RenderToTexture not applying post processing
- Editor startup hanging on package downloads
- Networking: Exploit where you could impersonate other users
- Memory leak on managed layers causing high memory usage and poor hotload performance
- Release branch sentry uploads not getting tagged with version
- TreeNode OnHashChanged triggering node rebuild twice
- Fixing a bunch of .Clothing files
- Sliders not working in avatar screen
- Bring back terrain brush overlay
- Janky SceneViewport input with DPI scaling
- Sandbox.Compiler blacklist running under editor or standalone code
- "Preprocessor directives must appear as the first non-whitespace character on a line" error in codegen
- SERVER define constant not getting set for libraries
- ActionGraph: fix return trip node serialization, type selector widget
- Color multiselect (while using ColorUsage.HasAlpha) stomping values
- Managed ConVars not showing default values
- New prefab system producing large diffs, for Bone/Attachment GameObjects
- Various event handler and FileWatch leaks
- EngineOverlay never drawing (UI inspector)
- fix multi-select for hierarchy treeview
- simplify dof code, clamp to avoid NaN on overbrightened areas
- RectControlWidget and ParticleVector3ControlWidget now use correct capitalization
- InputActionPanel now uses one font everywhere and no longer resizes improperly on hover
- Removed the gap between the options and the scrollbar in EnumControlWidget dropdown. Fit to full-width when no scrollbar is present.
- Fixed the faulty TreeView example in the Widget Gallery
- Fixed the broken RenderToWidget examples in the Widget Gallery
- Fixed NRE when searching in the Library Manager and no packages are found
- Fixed Library Manager displaying some older descriptions as raw JSON
- Fixed search not working in the Installed tab of the Library Manager
- Obsolete NavMesh.GetSimplePath
- Remove S_SPECULAR and ENABLE_NORMAL_MAPS (#2635)
- MovieMaker
- Serverside Code
- Wizard Outfit
- Mounts API
- Water Shader
- LineRenderer: PBR Material support
- LineRenderer: Face Mode Cylinder
- SamplerStates API
- Renderer.Attributes - set attributes are now deferred when the renderer is disabled and will persist when re-enabled
- ModelPhysics GameObjects
- Ragdoll Networking
- Network Graph Overlay
- Rigidbody networking kinematic proxy
- GameObject.Network.RootGameObject
- NetworkTable<T> and NetworkTransforms
- NetworkSpawn accepts options to specifcy NetworkOrphaned and OwnerTransfer settings
- Component.DontExecuteOnServer
- Game.ChangeScene
- Sequence Animation Events
- SprintJoint.RestLength
- DebugOverlay.Trace
- TextRenderer.VerticalAlignment - the vertical alignment of the rendered text.
- ImageFileGenerator.Cropping (useful for importing spritesheets or images with whitespace)
- Perlin and Simplex noise types to RandomTextureGenerator
- Offset, Scale and Octaves properties to RandomTextureGenerator (only for Perlin and Simplex noise types)
- Bitmap.Tint and ImageFileGenerator.Tint
- Bitmap.SetPixels(Color[])
- [Step] attribute, allows you to specify step amount of a value in an inspector without specifying the range
- [Range] (and [Step]) attribute support to types Angles, Rotation, Margin, BBox, and Sphere
- Editor viewport now has a context menu
- Projects can now be editor only
- Application.RenderSettings for standalone
- ITintable to ParticleEffect
- Audio: Support FLAC 24 bit
- Hotspot Editor - Position and Size properties are now shown when any Rectangle(s) are selected
- Hotspot Editor - Added "Grid Size" option for entering exact values that are not a power of 2
- Hotspot Editor - Added "Normalized Values" option, which shows Min and Max properties in place of Position and Size
- ConVar properties now support decimal type
- New surface types: plaster, plastic, cardboard, ceramic, fabric
- Whitelist: ITuple
- SerializedProperty: Added OnPreChange, OnChanged, OnStartEdit, OnFinishEdit events
- Validate Attribute for Properties
- Editor Apperance
- More Vulkan Validation Fixes
- Materials made with shaders created with ShaderGraph will automatically populate any textures used in samplers instead of the color white.
- Made SceneViewportWidget editor shortcuts consistent with one-another so they need viewport focus.
- Pressing a ViewportTools-related editor shortcut will update the related button visually without having to hover/click it.
- Added missing XML summaries to TextRenderer.
- Added missing XML summaries to ImageFileGenerator and re-categorized properties
- Removed "Null or empty audio data" warning.
- Physics: Box3D now uses the thread pool improving
- Stepped increments with new [Step] attribute (or previous [Range] attribute uses) now work without the need for a slider
- Inspector handles inspecting [ null ] better instead of erroring
- Allow suppressing SB3000 with [SkipHotload], add a CodeFixProvider
- Networking: Optimize prefab instance NetworkSpawn
- Networking: Break prefabs before network spawning
- Networking: Unify GameObject refresh logic
- Networking: Fonts load over local instances
- Networking: Deterministic map ids
- Dedicated Server: Cvar fixes, cheats
- Dedicated Server: clear command
- Scene.Source is no longer set when loading an additive scene
- Vignette renders before bloom
- Derived GameResources are pickable
- Removed SceneTree splitter and hotload event
- FileSystem.Data is no longer resets with every game version
- Ambient occlusion has more sane defaults
- AssetPreview uses proper Scenes now
- AssetPreview on small objects
- Reduce allocations in Json.Diff
- Misc Asset Browser fixes:
- Only do FolderContextMenu for disk locations. Prevents trying to pin paths that aren't real etc.
- Wait for the browser to populate after navigation before trying to highlight an asset.
- When renaming non-assets, only auto-select the region up to the last '.' so you can just start typing without accidentally changing the extension, but still change it if needed. (Like windows does)
- Editor shortcut consistency
- ImageFile TextureGenerator Improvements
- RandomTextureGenerator Optimizations
- Texture.Load() no longer requires BaseFileSystem to load files
- Texture.LoadAvatar() now takes an optional argument for the avatar size
- Hotspot Editor - Can now hold CTRL or SHIFT to multi-select rectangles and edit multiple at once
- Hotspot Editor - Editor now remembers the Grid Size and Reference Material for each .rect asset
- Hotspot Editor - Can right click on a rectangle to quickly delete them
- Hotspot Editor - Can now click-and-drag to move or resize rectangles
- Vector2.Up is now ( 0, -1 )
- Vector2.Down is now ( 0, 1 )
- Vector2.Left is now ( -1, 0 )
- Vector2.Right is now ( 1, 0 )
- Vector2 now implements IInterpolator
- Added Vector2.IsNan, Vector2.IsInfinity, Vector2.IsNearlyZero, Vector2.SmoothDamp, Vector2.SpringDamp, Vector2.ClampLength, Vector2.AddClamped, Vector2.Reflect, Vector2.Approach, Vector2.SubtractDirection, Vector2.Angle and Vector2.GetAngle
- Vector2 and Vector4 now have an index accessor
- Matrix.Transform now accepts Vector2 and Vector4
- Many APIs now take Vector2 instead of Vector3 where it makes sense
- Vector3.IsNearZeroLength actually checks if the length is near zero instead of checking if each axis near zero (which is how Vector2 and Vector4 work)
- Added == and != operators to Vector4 along with Vector4.Equals and Vector4.GetHashCode
- Added Vector4.WithX, Vector4.WithY, Vector4.WithZ, Vector4.WithW, Vector4.SnapToGrid, Vector4.Clamp, Vector4.Min, Vector4.Max and Vector4.Lerp
- Added implicit operators for int -> Vector2Int and int -> Vector3Int
- Added explicit operators for Vector2 -> Vector2Int and Vector3 -> Vector3Int
- Make use of MethodImplOptions.AggressiveInlining across all Vector structs
- Standalone: Now launches exported games fully
- VR: Scaling fixed
- VR: Main menu inputs work again
- In-game debug wireframe rendering
- Interpolation seams in lightmaps
- LineRenderer not receiving baked lighting
- TextRenderers now update immediately upon making a change in the editor instead of having to disable and re-enable component.
- Panel.MousePosition for world panels
- Can no longer delete the scene root
- Decals: DecalDefinition.Tint is now used
- Decals: Preview updates when properties change
- Decals: Fix texture streaming requesting only lowest mips
- Terrain: Only create terrain when active
- Terrain: Fixed terrain "Fucked" error causing storage resource not to link to component
- Update parent panel
- Fix reparenting and cloning parts of prefab instances
- Fix text area control multi edit
- Fix Map Load Warning Spam + Unnecessary Creation of GameObjects
- Folder Metadata now loads properly
- Fix editor only prefab instances not getting destroyed on load
- Physics aggregate surfaces
- Fixed regression when calling NetworkRefresh on a GameObject hierarchy that contains child networked objects.
- Fixed several asset load problems when running a dedicated server with a local project.
- Server local project asset fixes
- Input.Keyboard erroring on dedicated server
- PostProcess running on dedicated server
- Networking: unidentified RPCs no longer crash the dedicated server
- Bytepack TypePacker respect [JsonIgnore]
- NavMeshLink Start/End Local <-> World space transformation
- NavMeshLinks sometimes lingering wen moving from one tile to another
- Player controller reground
- DragData.OfType includes value types when T is object
- Incorrect nav areas offset when BoxCollider.Center is set
- Plane.Trace returning hits behind ray
- Fixed support for .flac sound files
- ShaderGraph now tells you when you are using invalid parameter names to prevent conflicts
- Margin struct now serializes/deserializes properly
- Hotspot Editor no longer resets the Grid Size and Material Reference upon hotload
- Blendable material preview
- 3D Skybox applies proper rotation from the Hammer sky entity
- SerializedDictionary: set parent, formatting fixes
- Fix inspector widgets duplicating after editing a property
- Fix mono mixing
- Fix ModelPhysics not using mass and mass center overrides
- Fix PolygonMesh not clearing out unused materials
- Mouse4/Mouse5 glyphs
- RangeAttribute.Step obsoleted - Use [Step] attribute now
- Citizen gibs - Now available on the workshop
- Core cleanup
- Shader cull: black_only, combine_colorcorrection_lut, cables, cs_mipgen, decal, downsample, general_filter, hair, projected_decals, projected_sheet_decal, sampletexture_bicubic, screen_texture_with_depth, tools_encode_environment_map, tools_modelviewer_wireframe, visualize_depth, visualize_physics
- Various HL:Alyx particle textures
- Unused thirdparty libs
- Box3D Physics
- Editor: Added new startup errors dialog for resolving code errors
- Editor: Component Selector now supports nested sub-categories separated by "/"
- Editor: Added Flat View option to Component Selector
- Editor: Missing Undo Steps to ControlSheet and certain ControlWidgets
- Curve Editor: Added "Move Range When Panning" button, which moves the entire curve when panning or zooming
- Curve Editor: Added "Retain Values When Changing Min/Max" button, which doesn't resize the curve's values when resizing ranges
- Curve Editor: Added "Fit to Screen" button, which fits the viewport to the curve's current range
- Curve Editor: Added [TimeRange] and [ValueRange] attributes to specify default range min/max and whether or not it's clamped
- ShaderGraph: Added Scene Color node (with UV address modes)
- ShaderGraph: Is Front Face node
- ShaderGraph: Normal Blend node
- ShaderGraph: Reflection node
- ShaderGraph: Tangent View Vector node
- ShaderGraph: Added GraphCompiler.RegisterGlobal
- Shaders: Automatically append mode combo to mode if no arguments are set
- Decals: Gizmos for the size
- Decals: Color Mix option for normal/rmo only decals
- Decals: Parallax Occlusion
- Decals: Color Tint is HDR enabling blooming effects
- Decals: Added decal resources
- Decals: Added transient properties
- New default surfaces
- Networking: Ability to specify port to use when hosting a dedicated server - defaulting to 27015
- Added AgX Tonemapper
- Enabled sc_visualize_batches publicly
- ParticleEffect.LocalSpace - float, allows sliding between local and world space
- ParticleEffect.InitialVelocity - velocity to start with
- Particle.ConstantMovement - apply movement without velocity
- Particles: ParticleModelRenderer.RotateWithGameObject
- BeamEffect component
- API: BaseControl.CreateFor - allows creating Panel based controls for specific property
- API: ViewSetup
- API: ReflectionSetup + RefractionSetup
- API: Pixmap.UpdateFromPixels( Bitmap )
- API: VideoWriter.AddFrame( Bitmap )
- API: SoundHandle.Time setter
- API: System.Random.FloatDeterministic( int seed )
- API: Color.WithColorMultiplied( float )
- API: [InfoBox] - allows adding inline help to inspector properties
- API: Scene.FindAllWithTag & Scene.FindAllWithTags
- Add FogStrength to TextRenderer
- Hammer: Map builder produces maps with significantly less draw calls, hugely improving performance
- Audio mixing crackling resolved by switching to a request based system
- Curve Editor: Dragging a Curve Handle outside the bounds of the Curve will automatically update the range(s)
- Curve Editor: Grid lines now have nice value increments and change with range instead of being static
- Curve Editor: Can now Pan/Zoom around the Viewport with Mouse3/MWheel
- Curve Editor: Clicking on a Curve Preset will reset the Viewport to fit the Curve
- Curve Editor: Added X-Range Inputs so you can modify the TimeRange of the Curve
- Curve Editor: Holding CTRL while dragging a Curve Handle will snap the Handle's position to the grid
- Curve Editor: Now draws a light grey rectangle with a dashed line to denote the min/max ranges of the Curve
- GameTransform.World is now cached instead of recalculating every access
- ShaderGraph: Can no longer delete Result nodes (the final output nodes)
- Editor: Simplified the Filter Menu in the Component Selector
- Editor: Component selector improvements
- Networking: Stop breaking prefabs during NetworkSpawn
- API: Re-categorize PlayerController.RotateWithGround and remove PlayerController.GroundYaw
- Bloom (quarter depth, fix rendering behind walls)
- Display default property values in editor inspector tooltips
- Clamp alpha on ParticleSpriteRenderer, fixes negative alpha rendering black
- RenderTarget.GetTemporary thread safety
- CommandList state is scoped allowing recursive command lists
- Nav Agent path invalidation behaviour
- Highlights: More accurate depth testing on outlines
- Highlights: Can target other renderers explicitly
- Don't render ScreenPanel if it's excluded by a camera's RenderExclude tags
- GameOverlay layer is split into opaque/transparent
- Material Overrides
- Curves use Binary Search for better performance
- Bail out of SoundHandle.Stop if already finished or fading out
- Prefab instance context menu: edit shortcut, tidy
- Startup crash on GTX 900 series cards
- Tooltips were recreating every frame
- Hotload errors when encountering anonymous types
- VideoPlayer: Unable to play VP8 (webm) videos
- Native editor tools (Hammer, ModelDoc) stylings
- Launcher showing added projects as launching when they weren't
- Curve Editor: Fixed grid numbers disappearing when increasing the range
- Curve Editor: Popup no longer opens between two monitors when opened near the edge of the screen
- ShaderGraph: "Render Backfaces" setting getting reset on recompiles
- ShaderGraph: shaders not rendering backfaces in Material Editor
- Fix [CallerLineNumber] not being properly whitelisted
- RenderTarget.GetTemporary: Don't try to UAV bind or create mips for depth formats
- Decals: Poor culling at edges for rotated decals
- Decals: Normal maps not decoding or transforming to world space correctly
- Decals: Not inheriting their GameObject tags
- Decals: Fix Decals in Valve's Shading Model
- Game Tick/Update running for one frame after ending the game
- [ColorUsage] HasAlpha issues
- Tint, Tags, Shadow Flags, and Source not getting reset on MeshComponent when disabling "Hide In Game"
- Standalone exports showing black screen
- Editor: Enum selectors showing a horizontal scrollbar instead of wrapping
- Editor: Cloud code assets failing to resolve on project initial launch
- Editor: Disabled text theme color
- VR: Duplicate floor in main menu
- Undefined nav agent behaviour if nav link traversal is not implemented
- Navmesh links worldstart/end position not taking rotation into accont
- WebM video playback for UI and VideoPlayer
- Fixed nested prefab issues related to undo/redi
- Fixed GameObject Transform not transfering to Prefab when Converting a GameObject to a prefab
- Fixed an issue when converting a GameObject (that is part of a prefab instance) to a prefab.
- Fixed prefab changes not propagating correctly to all their dependencies and open editors
- Fixed unlinking a nested prefab not correctly propagating to instances in open editor scenes
- Fixed GameObject to prefab conversion for sub hierarchies that contain nested prefabs
- Fixed reparenting parts of a prefab instance to another GameObject
- Fixed cloning parts of a prefab instance
- Fixed Gameobject ordering not updating when reverting instance to prefab state and applying instance state to prefabs
- Fixed Component order not being restored in some cases after undo/redo
- Fixed NavMeshLink.OnLinkExited not getting called if the link is completed on the frame the agent enters
- Fix drag/drop material preview not resetting in some cases
- Hotload: Fix NRE in DelegateUpgrader
- Hotload: Don't let DefaultUpgrader process delegates
- Fixed connection crash when trying to join via new instance to editor lobby with no game running
- Fixes [Property] properties from a Component's base class not being serialized when sent to other clients
- Fix network owner being unset in OnAwake when doing NetworkSpawn
- Fixed css gap property creating ugly uneven gaps
- Fixed white viewport when opening the editor
- Fixed terrain still being enabled on disabled GameObjects
- Fixed ListViews holding onto stale items
- Ensure ReflectionQueryCache.ClearTypeCache is called on hotload for game instance
- Fix faulty logic for in-place static field hotload upgrading
- Input Editor Fixes
- Inspector history/locking fixes
- Fix DressPrefabScene
- DebugTextSceneObject uses Graphics.DrawText in worldspace
- Fix HashSetEx Remove() being O(N)
- Shaders: Depth-Aware Mask Fix - Fixes objects in front of glass looking aliased
- Renderer: Multiple Vulkan Validation Fixes
- Renderer: Fix native legacy 2D debug overlays not rendering
- Renderer: Fix prefab thumbnails rendering with black background due to opaque bloom
- Renderer: Fix Alpha Test not clipping on non-MSAA
- Renderer: Fix MSAA alpha-to-coverage on depth prepass
- Obsoleted CameraComponent.AddHookBeforeOverlay - Use CommandLists instead
- Obsoleted CameraComponent.AddHookAfterTransparent - Use CommandLists instead
- Spritecard shader - Was only used by legacy particles
- Sandbox.Game.dll - Merged everything into Sandbox.Engine.dll
- Panel.Bind
- Projected Decals
- ::before and ::after to UI
- New Prefab Instance System
- Screen Space Reflections component
- Dresser component - makes dressing avatars easier
- Scene.FindInPhysics( Frustum )
- Scene.Get<T>()
- SequenceAccessor.Blending
- ITagSet.GetDefaults
- ParticleEffect.RealTime
- Panel.SetRect
- Plane.ReflectPoint
- Plane.ReflectDirection
- CameraComponent.BBoxToScreenPixels
- Bitmap.Size
- DebugOverlaySystem.Texture (draw texture on the screen)
- Transform.Mirror
- Application.OnWidgetClicked
- Graphics.CameraTransform
- Graphics.CameraRotation
- Graphics.FieldOfView
- Renderer CommandList wrappers
- Renderer.ExecuteBefore (command list, executes before rendering object)
- Renderer.ExecuteAfter (command list, executes after rendering object)
- CommandList.DrawReflection
- CommandList.DrawRefraction
- CommandList.DrawRenderer
- CommandList.DrawView
- CommandList.Attributes.Set( bool )
- CommandList.Attributes.SetCombo( bool )
- CommandList.GlobalAttributes
- Texture.Clear( Color )
- TextureBuilder.WithInitialColor( Color )
- Vector3.Dot( a, b )
- [FilePath] attribute for string properties
- accessors and constructor to Matrix class
- Matrix.CreateObliqueProjection
- Input.Suppressed
- Gizmo.Draw.Sprite angle parameter added
- Editor theme improved - new font, color scheme and many tweaks
- Shader memory layout changed to drastically reduce stuttering
- Time classes internally use doubles for improved precision
- Video Recording has been greatly improved for stability and speed
- Human female🙍♀️ models look a lot more female
- GPU -> CPU readbacks use cached memory improving speed
- VR gets it's projection matrix from the headset directly
- Updated Roslyn - your games will generate more optimized code now
- GameObjectReference serialization for prefab properties
- Create GameResource Save button when using a customer inspector
- Improved aspect ratio in asset browser thumbnails
- Select prefab/network root when selecting object in viewport
- Prefab instance UX improvements
- Rebuild model hitboxes on renderer model change
- Optimized NetworkTable causing excessive delta snapshot GC
- Cameras rendering to textures use a HDR texture and matching MSAA
- Make sure Screen.Size is correct on scene startup
- Component Eye Dropper can be used directly on Components in the inspector
- GameObject Eye Dropper can be used on Prefabs in the Asset Browser
- GameObject & Component Eye Droppers can be used on other GameObject/Component properties
- Load system scenes on any non-additive scene load
- Creating a new project or opening a Sample Project will now correctly show the "LAUNCHING" text
- Sample Projects no longer create duplicate entries in the Launcher when opened manually
- NetworkFiles includes stuff on resource paths
- Mixer Handles now support multi-edit
- Can now unlink multiple prefabs at once with multi-select
- Can apply/revert prefab instance changes with multi-select
- Unsaved changes dialog prompt for resources
- Update Skin shader with tint and age sliders
- Steam Audio update (4.5.2 -> 4.6.1) and static linked
- RenderTextures are cleared to magenta by default (to spot errors more easily)
- Updated to SDL3 and gamecontrollerdb.txt
- UI textures are mipbiased to avoid being blurry
- Allow modifying the transform of the prefab root
- Project settings UX improvements
- Whitelist JsonStringEnumMemberNameAttribute
- CameraComponent.RenderToTexture takes a ViewSetup allowing overrides
- Yoga config uses UseWebDefaults
- HudPainter.DrawLine uses SDF shape for much smoother lines
- Exposed and documented ImageFormat
- Whitelisted many requested types including BigInteger, Complex, Task.Is*, ReadFromJsonAsync and more..
- GameOverlays use a viewport z-slice instead of an additional depth buffer
- Intel Integrated Graphics no longer crash on startup, device limitations are checked on startup now
- SpriteRenderer crashing trying to render on dedicated servers
- UI no longer renders over the Scene tab in the editor while in play mode
- Various security exploits reported on HackerOne
- MusicPlayer crashes
- Razor elements now play :outro properly
- WantsFrameBufferCopy doing nothing outside of regular models
- Navmesh links triggering when not active
- SceneCamera.GetFrustum returning nonsense on ortho cameras
- Scene not being pushed before several prefab related editor actions
- Scratch depth buffer not matching scratch color dimensions
- UI corners being misaligned
- UI sometimes getting 1 pixel gaps between panels
- SetMaterialOverride( null ) not clearing any overrides
- Prefab Root context menu giving options that resulted in error
- TreeView not completing a SHIFT+CLICK action when the first item was selected outside of the tree
- Locate Prefab option now always appearing when you'd expect it to
- Depth-aware mask NaNs
- Label scissoring with WorldPanels
- Model renderer local bounds being wrong
- Fix rotated off-center box trace
- Null GameResource icons preventing editor start-up
- Blending mode on translucent objects, default alpha blending mode additive
- Missing project settings button on asset projects
- Input binds not saving
- Dedicated server crashes when trying to use lobby methods
- Error when in Eye Dropper tool of a list entry and the entry in the list is removed
- Fixes a discrepancy between the hashed identity of TypeLibrary methods and MethodIdentity in WrappedMethod from CodeGen when the method is on a class contained within another class
- BytePack struct serialization
- TypeLibrary is disabled during cctors / package load
- Context menu on normal files in the Asset Browser
- Error when multi-selecting an asset and a normal file in the Asset Browser
- Flickering when dragging material on to scene mesh
- Tooltips linger when mousing out of a tooltipped pannel
- Depth Linearization in Oblique Matrices
- Crash in CSceneAnimatableObject::MergeFrom
- [Button] not showing if not returning void
- Fixed menu addon not loading in editor (due to whitelist)
- ISceneStage spans the wraps the entire scene update, not just OnUpdate
- Prevent EditorUtility.RenameDirectory making a directory a subdirectory of itself
- Legacy particle system - legacy particles will no longer render
- Prefab variables
- Deleted many unused DLLs reducing the game size
- Removed unstable GPU shadow culling
- NativeRenderingWidget now doesn't render without a scene
- Graphics.RenderToTexture (use CameraComponent.RenderToTexture)
- Added Keyboard Api
- Added follower Prefab option to ParticleEffect
- Added create prefab on collision option to ParticleEffect
- Added TemporaryEffect component
- Added SequenceAccessor.Looping
- Added Mouse.Visibility
- Added Decal Sheet Sequence
- Added Compute dispatch indirect
- Added EditorEvent.ISceneView.DrawGizmos
- CommandList: Added Draw, DrawIndexed, DrawInstancedIndirect, DrawIndexedInstancedIndirect
- CommandList: Added DispatchComputeIndirect & ResourceBarrierTransition
- CommandList: Added GrabDepthTexture & Clear
- ShaderGraph: Preview Post-Processing & Lighting Settings
- ShaderGraph: Added GraphCompiler.RegisterInclude for Custom C# Nodes
- Editor: Added Copy/Paste/Reset options to Group Headers and add Reset option to Feature Tab
- Sound Event Default Mixer
- Project settings are now shown in inspector
- Cloud assets are read-only and can not be recompiled
- WorldPanel sounds now play from the correct position and mixer
- Servers now show across versions if the versions are compatible
- Improved hotload speed
- Asset Browser now listens for external file changes and refreshes automatically
- Sprite and Line shaders use compute shaders instead of geometry shaders
- Cubemaps now render directly to cubemap instead of copying to each face
- Depth-Aware Mask For Framebuffer Copy
- ShaderGraph cleanup, usability, and fixes
- Re-Ordering a ListControlWidget no longer displays all values as the previously dragged value
- Decal prefabs are staged when previewed
- Panel.PlaySound and sound-in/sound-out now plays sounds in 3D if in WorldPanel
- Most weapon animgraph 'components' have been turned into reusable subgraphs
- CSS @keyframes not order properly
- Sequence and direct playback accessors list sequences instead of animations
- Networking: Fixed outdated snapshot when downloading maps
- Terrain: Fixed errors on dedicated servers
- Terrain: Splatmap now default fills the first channel fixing blending
- ShaderGraph: Fixed "Render Backfaces" option
- ShaderGraph: Fixed "Open Generated Shader" button icon not displaying
- ShaderGraph: Fixed named connections getting severed upon re-opening graph when name includes space
- ShaderGraph: Fixed properties not clearing when you cut/delete nodes
- ShaderGraph: Fixed DefaultOpacity on ShaderGraph Result Node (in Unlit/Post-Processing Shaders)
- Material.IsTranslucent properly checks for "translucent" now
- Fixed Generating envmaps infinitely when an envmap probe was disabled
- Fixed MusicPlayer crashes
- Fixed compute skinning for morphs with no skeleton
- Fixed Component.OnAwake not getting called on disabled components during deserialization
- Fixed case where resource compiler can fail with embedded resources
- Fixed DisplayInfo.ForEnumValues name conflicts
- Fixed Inspector Multi-Edit not resetting when leaving selection
- Fixed EditorToolManager.SetSubTool not always working
- Fixed RotationEditorTool handle position not always updating
- Fixed very poor EventSystem performance
- Fixed some FBXs crashing
- Fixed navmesh division by zero on dual core PCs
- Fixed skybox env probe updating when not active