1,025 Commits over 1,127 Days - 0.04cph!
Add Graphics.ResourceBarrierTransition supports transitioning Textures and ComputeBuffers states currently, e.g if you wanted to signal a resource should be readable in fragment after a compute write to it
Add Graphics.DrawModelInstanced with count for procedural instancing, document other instanced methods
Add DrawModelInstanced methods to CommandList
Add CommandList.Set for ComputeBuffer<T>
Can DrawInstanced a number of instances without uploading data
Need to download cloud asset references after we've imported resources not before
Fix GameResource assets not registering before loading startup scenes (and also compile assets), remove stupid Task.Delay hack?
Fixes Facepunch/sbox-issues#6942
Prebuild the menu package
Load fonts in parallel
Open the game window in SourceEnginePreInit instead so there's not that awkward 1-2 second of nothing
EventRecord uses correct Version sha
Json warmup can be a background task. (-500ms) Make logging initialization more predictable to avoid double configuration waste
Menu doesn't need access control (-100ms)
Only initialize ILHotload in editor as that's the only context it's useful in (-100ms)
We can await on account information until after menu is loaded, otherwise we're usually hanging here for a second or more doing fuck all
ResourceLoader.LoadAllGameResource: FindFile `*` more optimized than `*.*` (150ms -> 75ms)
Update Superluminal PerformanceAPI (Stop nagging)
Update AMSI patch for .net9 so we're not wasting 100ms+ every full hotload / package load
Some additional troublesome Vulkan layer disables
Hotload ignore Refit Fixes Facepunch/sbox-issues#6843
Categorize Create Asset menu, can create code files, add templates for compute, material, unlit shaders
Use GameResource.Category in New Asset menu
Give built in resources categories too, merge with gameresources
Create templates for c# empty, component, razor code files and compute, material, unlit shaders
Create assets/folders from sidebar folder nodes
EntityTreeModel::mimeData calls base again so native interactions still work
Hammer GameObjects can have children
https://files.facepunch.com/matt/1b0611b1/sbox-dev_icF9jl1PDP.png
Suppress native transform change callbacks too which were causing angles & scale changes to not execute
Transform changes on managed execute EventPropertyEditorCoreAttributeChange_t so gizmos follow properly
Ensure GUID is saved all the time. And some validation: delete CMapGameObjects that have no GUIDs on load & create CMapGameObjects for scene gameobjects that don't have a match
Hammer: Can hover and select managed scene render meshes (ModelRenderer) as well as gizmo render bounds, whilst working alongside native traces
Hammer can paste gameobjects copied from scene editor
Resolves Facepunch/sbox-issues#6762
Copying, shift transforms & undoing all work on hammer game objects. Only had to change all the callbacks to a new system again
If no [Inspector] found keep falling back on [CanEdit]
Fixes Facepunch/sbox-issues#6784
Can drag scene prefabs into Hammer map view
mapbuilder: don't try to parse empty scene json
fixes Facepunch/sbox-issues#6777
Hammer GameObjects (#1675)
* Hammer Scene is serialized in MapWorld and gets written into VPK as world.scene_c
* MapInstance additive loads the SceneFile from inside the VPK
Tie Meshes to GameObject:
* Replaces Entity
* GameObjects with meshes tied have a HammerMesh component which procedurally creates a ModelRenderer and ModelCollider
* HammerMesh is setup at map compile time with generated models.
Editor:
* Add HammerManagedInspector which can take over native inspector if it likes the MapNode type
* Add HammerSceneEditorSession for handling saving properly
* Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority)
* Clean up MapView loop: run Scene.EditorDraw() for gizmos, remove old Entity.DrawGizmos
Hammer Outliner:
* Managed sets DragData of map nodes in Hammer outliner
* Defer selection until mouse release so it acts like our managed treeview, allows dragging without selecting instantly
* Removed duplicate entity list
* Add "Create Game Object" button
ActionGraph:
* Add MapSourceLocation for editing action graphs in .vmap files
* Open source map when inspecting graph from .vmap
* Parent action graph editor to hammer window if editing map graph
---------
Co-authored-by: James King <james.king@facepunchstudios.com>
Properties with [Hide] don't contribute to features tabs
Don't need these Hammer prefab templates anymore
InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject )
Remove baked cubemaps code from Hammer
Fix Hammer default layout. Also add Cloud Browser by default
Fixes Facepunch/sbox-issues#6708
Fix crash in CDMXLoader::LoadMesh when there's no position attribute.. unsure why, the offending models need to be looked at
▅▇▇▋▅▅ ▊▍▄█▍▊ ▆▉▉ ▉▌▌▅▇▋█▅▊ ▉▇▌█▊█▅▊▍██ ▊▅██
Clamp dirty regions within terrain bounds
Explicit updates for Terrain material buffers since we're not uploading this every frame like a mad man now
TerrainMaterial.Metalness range 0.0f - 1.0f
Terrain: Make texture paint & holes also work with new undo
RectInt: your favourite Rect struct but with integers
Texture.GetPixels: Able to specify dstRect fully
Terrain optimizations, better undo/redo, clean up
* Implement new undo/redo system, track delta changes instead of full snapshots (faster, more reliable)
* Don't upload buffers every frame in OnPreRender
* Stop using MakeDirty, each property only updates what it needs to
* Only create SceneObject when we can actually use it
* Don't over expose public methods & properties, remove dead methods
Optimize TerrainStorage.GetDominantControlMapIndices 400ms -> 1ms
Pass in a buffer we get from ArrayPool instead of allocating and returning, also preresolve some getters
Vector3: Aggressive inlining on aggressively inlined System.Numerics.Vector3 methods
TerrainClipmap mesh gen optimize 266ms -> 26ms
Don't recreate Edit menu, just update the undo options - fixes Facepunch/sbox-issues#6539
steamApiDll wasn't being populated properly, so it'd never free
Dynamic edit menu, show top undo/redo entry name, disable if nothing on stack
https://files.facepunch.com/matt/1b0111b1/0jX7JegPIJ.png
Revert "If Graphics.RenderTarget is not overriden, let it return the actual output rendertarget so you can fetch MSAA textures without copy ( you're going to shoot your own balls using this if you dont know what you're doing )"
This reverts commit 3d84d6b56d8d948c5212e13e69ab82a2fc4af264.
Let's not have 2 KeyBind razor components, use same styling as settings for BindModal, fixes not being able to bind properly
Fixes Facepunch/sbox-issues#6421
Use PackageManager to LoadAllGameResource from active packages instead of explicitly calling it everytime we need to after Package.MountAsync()
Fixes Facepunch/sbox-issues#6206
RenderTarget.From throws an exception if the passed textures were not created as render targets. This then fixes crashes when you're trying to use these invalid RenderTargets.
Fixes Facepunch/sbox-issues#6463
Avoid cyclic library references when publishing libraries
Fixes Facepunch/sbox-issues#6414
Fixes Facepunch/sbox-issues#6410
MeshComponent updates meshsystem & sceneobject flags when setting a new model, this is usually automatic but it's a semi-procedural workflow
TreeView nodes do not call OnItemActivate when double clicking the expand/collapse button
Fixes Facepunch/sbox-issues#6487
Use EditorTypeLibrary for Hammer PrimitiveBuilders (bonus: you can define these in your own editor libraries too)
Fixes Facepunch/sbox-issues#6499
-allowlocalhttp works for WebSurface in editor only. Also limit Http local http to editor and headless (dedicated server), players should never be able to accidentally opt in
Facepunch/sbox-issues#5774
Handle WebSurface.Url null, remove duplicate private url check
Fixes Facepunch/sbox-issues#6380
Optimize TextureBuilder creations with no initial data
* Use vkCmdClearColorImage instead of allocating a big empty buffer in
managed
* Texture.CreateInternal also passes a nullptr if the span is empty, so we
don't do additional unnecessary setdata
It's weird all of this stuff has an API of Span<T> & int length, but hard
to fix without API breaking changes
DrawIndirectArguments should be LayoutKind.Sequential
Backport some more gpu profiling for scenesystem
Backport scenesystem GPU profiling
Restore these deleted attributes to Valve core shaders, where we ended up only including them accidentally only in reflection mode in complex..... (fixes missing world mapping and other features in complex & more)
sbox/pull/736/commits/bca14ecb2bba7d5410a2b971ab1f9a9c406a41d3
We should not be removing core stuff from core shaders because we're accidentally including our material api. The material api should depend on core, not the other way around
compiled complex
ComputeBuffer.GetData - 0 count is illegal
Add Model.GetIndexCount( int ) Model.GetIndexStart( int ) Model.GetBaseVertex( int )
Shadow map layers set proper ELayerEnum::Shadow, fixes SceneCustomObject not casting shadows
git blame ignore "Copy over changes for shader resources"