1,280 Commits over 913 Days - 0.06cph!
Update Microsoft.CodeAnalysis.CSharp 4.6.0 -> 4.7.0
Allow C# ref returns
Delete vmpi completely, hastily removed from vrad2 (should be replaced with vrad3 really)
Restore AssetBrowser property attribute editor
Remove native assetbrowser and replace all instances with our own asset picker ( orgs/sboxgame/discussions/3940 )
Make QAssetSelectionWidget and QEmbeddedAssetPicker selection work again
Make callbacks/listeners work again on QEmbeddedAssetPicker
Push/Pull buttons fuck off
Pass custom menu to embedded preview picker
helpsystem link toolutils2
Fix CQModelPickerWidget leaking picker
Fix all the menus to use CQAssetMenuHelper
propertyeditor dependency for toolframework2
Cleanup asset picker names now that we don't have 2 paths
Delete assetbrowser project
Fix random includes / old types
Simple CQAssetMenuHelper in toolutils2 that calls managed and also custom menu command contexts
Add managed PopulateAssetMenu, use it in embedded picker to replace g_pAssetBrowserToolSystem->CreateMenuForAssets
https://files.facepunch.com/matt/1b3011b1/sbox-dev_6gcU7tzAys.png
All SFM CreateSemiModalBrowser replaced with C# picker
Remove IAssetBrowserSystem::CreateSemiModalBrowser
Move CQEmbeddedAssetPicker to toolsutil2, remove CreateEmbeddedPicker, tools can create this directly
Replace embedded pickers interfaces with toolutils2 CQEmbeddedAssetPicker
Add OpenPicker that accepts a lambda
Replace semi modal browsers with our own C# picker in all tools, missing sfm
C# AssetPicker support multiple asset picking so it drops in native easier
delete qhammerlegacyassetsdockwidget
Delete qglobaltoolscornerwidget
Delete tools/vohelper
Remove embedded browser from pet weird last usage of it
Get rid of CreateEmbeddedBrowser
Remove vohelper from enginetools.txt
Remove assetbrowser callbacks from assetsystem
Remove calls to BringGlobalBrowserToFront
Hammer: asset spray randomize material groups
Model path collapse can be undone
Fix AmbiguousMatchException in string.ToType
TriggerTeleport: retain scale
Warning for ambiguous GameResources
Add UtlVector::ByteCount(), UtlVector::EnsureCountZeroed( int num )
rendersystemvulkan: support raytracing pipelines
vfx / vfx_vulkan: support compiling rtx shader blocks targeting vulkan 1.2
CRayTraceSceneWorld without lights for now
vfx_vulkan: compile rtx shaders as lib_6_4 targeting vulkan 1.2 environment
Enable DirectXShaderCompiler validation for raytracing shaders
Shader defines for VFX_PROGRAM_RTX
IMaterialMode::GetRayTraceShader
vfx support RaytracingAccelerationStructure
Fix SamplerComparisonState not mapping to the right enum
Can create RENDER_RAYTRACING_SHADER
Setup "RayTrace" mode when the render hardware supports it
Add UtlVector::ByteCount(), UtlVector::EnsureCountZeroed( int num )
rendersystemvulkan: backport VK_KHR_ray_tracing_pipeline features
vfx: add RTX shaders
Remove reference type check from NetWrite.Write<T>( T[] ), we handle it in the call to NetWrite.Write<T>( T ) whilst handling strings and shit
Fix error in VROverlay dispose
Fix FGDCurve with ToType
Hammer: move particle drop target to C# support cloud particles too
Don't use partial package for map view drops, unreliable package type
Add Editor.MapDoc.MapStaticOverlay
RenderAttributes.GetInt return type should be int not float
Hammer material drop target can do static overlays, rework so you don't need explicit tags on asset.party
Dragged static overlays use material mapping size
Fix crap overlay angles from normal
Hammer: Add extended box gizmo handles as a saved option
https://files.facepunch.com/matt/1b1611b1/sbox-dev_aoNTlauVjt.png
▆▄▍▉▆▋ ▊██▄█▄▆ █▄▊▊▅▌▍▉█ ▆▌▇▊▊▅▋▇▋▋▉ ▍▉ ▌▅▋▄▍▊▉▌▅▆▍▆▅▅█▋▅█▌▆▋▋▄.▅▉▅▉▊▄, ▇▊▉▇▍ ▅▉ ▌▄▌▆▍▊▅▊ ███ ▍▇▊▊▆▊▊ ▋▅▄▊█▌ ▅▌ ▋▌▉▇▌▆▄▍
▋▋▆▇▌▌▅▍▆▊▊ ▆▉ ▍▇▄ ▅▉▋▉▇▆ ▅▉▆▄▋▉▉ ▉▇█▅ ▌▅▌▇▅▍ █▍▆ ▆▄ ▋▄▌▅▄▇▊ ( ▊▋▊▄▉▊▋/▄▋▄▊█▋▇▆ ▅▋▋█▋▄▊ ▇▊ ▅▍▄-▌▆▅▊█▅▍ ▊▋█▋▊▆▊▄▅▇ )
Make sure CPipelineCacheManagerVulkan::PreShutdown() is called
Vulkan: Stylistic code updates, make diffs easier
Hammer: Remove legacy asset browser 👋
Revert "Fix AddBlitTextureToTargetLayer not blitting correctly if dimensions are different"
This reverts commit 076e225cae9b15bffce9a6c45e37a4ec49cb89b4.
RenderTools::Draw don't reset the bound transform, but make sure it's set in CManagedRenderLayer before passing to UI.. Not great solution overall
vulkan: more VK_EXT_extended_dynamic_state fixes
UI VertexInput should only have nInstanceID with D_MULTIVIEW_INSTANCING
VK_EXT_graphics_pipeline: validate pipeline descriptor sets before draw
Vulkan: Remove AMDBindVertexBuffersWorkaround (fixed in 2018)
RenderTools::Draw: Add BindTransformSlot for an identity transform ( In future this should probably be CSceneSystem::BindIdentityTransformAndInstanceIDBuffer )
CRenderContextVulkan::BindVertexBuffer - mark it as used
vulkan: set primitive topology when using VK_EXT_extended_dynamic_state
Tool vis works in ScenePanel and anything else that uses Graphics.RenderToTexture
https://files.facepunch.com/matt/1b0111b1/sbox-dev_gjSS0HmRRF.png
Fix Mouse.Delta not working causing dragging in UI not to work too
▍▊▅▄ ▄▍▉█▆█.▌▋▉▋▅▇▇▆▇▌▆█▉▋▌▇▇▍▇▉▆▍▆<▉> ▋██ ▉▊▍▉▋▋▍▌▄▅█▆▊.▆▉▋▋<█> █▅▇▆▊▊▉ ▄▊ ▆▌█▍▍▋▍.▌▉▇▇█▋▉▌▋▅▌▋▊▇<▋> ▆▉▅ ▆▇▄▆▄▇▍▊▅▋▄ ▊▅ ▉▉▋█▍█▇▍▋ ▉▉█▉▌
▌▇▇█▉▌▌▊▇▌ ▉▉▍█▌▉▌▌▅▍ ▆▆▍▌▋▌▆▆█ ▌▉▌, ▉▉▅▆ ▋▆█▋▇▍ ▅▌▍██▍▄▅▊▊▆▉▉.▉██▋ ▋▊▉▅ ▉▇▊ ▄▇▆▊▌▉ ██▉▇ ▄▅ ▍▇█▆▆'▆ ▅▌▊▍▄▉▌ ▇▉▋ ▅▌▋▊█▆▇▄ ▊█▇▅ ▆▌▍▆
ComputeShader.Dispatch: Remark about thread group size being automatic
CRenderThreadDx11::OnReadBuffer: staging buffer needs to be the same size as the buffer to read, otherwise partial or offset reads silently fail
SceneModel.SetMaterialGroup -> SceneObject.SetMaterialGroup - dunno how I'd fucked this
ILHotload runs hotloaded event
foliage shader: transmissive features (transmissive in general seems fucked though, one for sam though)
If -project was already added but inactive, make it active
Stop opening cloud menu for -project launched games
ComputeShader use Material.FromShader, support using resource paths e.g new ComputeShader( "shaders/cs_compress.shader" );
Don't call Environment.Exit on ProcessExit, but make sure we still flush managed SentrySdk just before TerminateProcess
Add ComputeBuffer<T> class for creating, reading and writing GPU buffers for usage with ComputeShader
Structured buffers, byte address buffers and append structured buffers are all supported.
https://wiki.facepunch.com/sbox/Compute_Shaders
Add synchronous IRenderDevice::ReadBuffer and asynchronous IRenderContext::ReadBuffer
Add ComputeBuffer class for creating, reading and writing GPU buffers for usage with ComputeShader
Can be passed to RenderAttributes.Set( string, ComputeBuffer )
Read data from GPU with ComputeBuffer.GetData<T>( Span<T>, int, int )
Add ComputeBuffer.SetData( Span<T> ) and ComputeBuffer.CopyStructureCount( ComputeBuffer, ComputeBuffer, int )
Can set/copy data outside a graphics block
Flush this shit when using ComputeBuffer in a sync way, I'll do it a different way for an async/callback API
API makes more sense to be ComputeBuffer<T>
Drop access type to keep things simple, add List<T> SetData variants, add elementOffset arguments, additional error checking
AppendConsume buffers still need the structured buffer flag too
ComputeBuffer<T>.CopyStructureCount<U>( ... ) YUCKY generics
Don't make ByteAddress buffers with unordered access
Docs, GetData alternative with no count, checks for disposed buffers
ComputeBuffer<T>.CopyStructureCount<U>( ... ) YUCKY generics
Don't make ByteAddress buffers with unordered access
Drop access type to keep things simple, add List<T> SetData variants, add elementOffset arguments, additional error checking
AppendConsume buffers still need the structured buffer flag too
Add synchronous IRenderDevice::ReadBuffer and asynchronous IRenderContext::ReadBuffer
Add ComputeBuffer class for creating, reading and writing GPU buffers for usage with ComputeShader
Can be passed to RenderAttributes.Set( string, ComputeBuffer )
Read data from GPU with ComputeBuffer.GetData<T>( Span<T>, int, int )
Add ComputeBuffer.SetData( Span<T> ) and ComputeBuffer.CopyStructureCount( ComputeBuffer, ComputeBuffer, int )
Can set/copy data outside a graphics block
Flush this shit when using ComputeBuffer in a sync way, I'll do it a different way for an async/callback API
API makes more sense to be ComputeBuffer<T>
Ignore some mega early IME WM events until the engine is initialized, should fix Proton crashing at startup