1,593 Commits over 1,247 Days - 0.05cph!
rendersystemvulkan: remove unused legacy descriptor set update path to simplify further descriptor set changes
VK_KHR_descriptor_update_template was promoted to Vulkan 1.1 and we
target 1.2 minimum so descriptor update templates are always avaliable.
Meaning we can remove the very complicated legacy path.
Also removed KHR suffixes from the fast path to clarify it's not an extension.
vfx_vulkan: Separate the shared VS/PS/GS dynamic descriptor set into per-stage dynamic sets
Reworks the single uber dynamic descriptor set containing every stage
into 3 much smaller sets for each stage (VS/PS/GS).
The main purpose of this is to remove the restrictions of not being able
to use VK_EXT_graphics_pipeline_library with uniform texel buffers,
storage images, storage buffers, storage texel buffers.
(And we use a lot of dynamic StructuredBuffers now)
Previously the only solution would be forced usage of a static descriptor
set, however that isn't feasible for UGC or an easy to use engine.
The layout now is:
Dynamic set 0 - VS/CS
Dynamic set 1 - PS
Dynamic Set 2 - GS
Set 3+ - static sets
Don't instant output dedicated server logs, queue them too - suspect crash fix
Restore the CONTENT search paths to fix models missing materials
Even though 99% of searches no longer use it and still work fine.
I suspect CDmFbxSerializer::FindMaterialResource has very specific
behaviour for "GAME" vs "CONTENT" that makes it not resolve relative
paths properly, this only occurs when there is no compiled file yet.
g_pApplication can be nullptr very early on
ci: upload symbols before build shaders to diagnose crash
Check Managed::SandboxEngine::IsReady() before spewing log
ShaderCompiler: Output failures at the end, cleanup garbage before exiting
Console apps don't buffer native log messages
Remove random include from envmap_filtering_cs
Reapply "Store external descriptor set name hashes, otherwise these aren't being refed properly which could very well be the Intel crash"
ExternalDescriptorSet needs to be described across VS/PS stages, put it in common.fxc (there are some shaders that will/can never use it like unlit)
Fixup descriptor name hash for outdated ugc shaders
Build shaders
# Conflicts:
# game/addons/base/Assets/shaders/terrain/cs_terrain_sculpt.shader_c
Set Hammer window icon from managed since it's technically a managed window
Handle right click on title bar
Don't PreJIT in editor, it adds a couple of seconds to startup time
Unused IAssetSystem::OverrideAssetsWithVPK
Stick a cache on FixupSearchPathName as it's a hot path whilst compiling due to CResourceCompilerPathScope
https://files.facepunch.com/matt/1b2011b1/Profiler_WExqSdLF2F.png
Let's try all "CONTENT" paths as "GAME" paths and remove "CONTENT" search paths, maybe everything will still work
And then we can remove this extra PathScope for "CONTENT"
Revert "Store external descriptor set name hashes, otherwise these aren't being refed properly which could very well be the Intel crash"
This reverts commit bc198bc4c991a59f6839367a0aa06b3de1b6ef19.
Force rebuild shaders
Ignore these invalid descriptor sets
Fuck it - I don't see why this crashes ci
Only print if engine ready
Force build shaders, some shaders have mismatched combos
Console apps print native engine messages instantly
Remove remaining material-owned descriptor set code from rendersystemvulkan
Store external descriptor set name hashes, otherwise these aren't being refed properly which could very well be the Intel crash
Build shaders
Resource finalizer queues dispose and unregisters on main thread. Assert ResourceLibrary.Unregister as main thread only
Remove unused materialsystem-owned static descriptor sets
This frees up slots 1 & 2, whilst external descriptor sets remain starting on 3
Let's start trying to shut the game down properly so we can flush stuff like shader cache and Api activity / stats
ShaderCompiler returns failure so the build server can fail when we push shit shader changes
Don't log engine console output upside down
Cube texture creates array slice image views allowing each face to be treated as a framebuffer
Visualize depth uses screen space coords
[stash] Foundations for VK_KHR_multiview and cubemap render targets
Scene system listeners I'll need later
New shadow mapper: spot and point lights so far
* Move all logic to c# for full ownership, delete old native code
* Bindless shadow map textures, delete old shadow atlas
* Spot Lights
* Point Lights: cube textures with hw pcf poisson sampling
* Add user setting r.shadows.quality (0-3) low->high for better filtering
* Scale shadow map resolution based off of screen size the light occupies
* Debug system
Make ShadowViewProj matrix with zero origin for light -> shadow mapping in shader
C# directional light CSM shadow maps, different to previous approach
Fix Frustum.GetBBox() excluding last corner
[fixup] Multiview
Make ShadowViewProj matrix with zero origin for light -> shadow mapping in shader
Fix Frustum.GetBBox() excluding last corner
C# directional light CSM shadow maps, different to previous approach
Fatal error on all VK_ERROR_OUT_OF_DEVICE_MEMORY results, don't invoke ErrorReports
Count unshadowed lights properly
Fix dedicated server crash when creating legacy particle systems
Cube texture creates array slice image views allowing each face to be treated as a framebuffer
Visualize depth uses screen space coords
[stash] Foundations for VK_KHR_multiview and cubemap render targets
Scene system listeners I'll need later
New shadow mapper: spot and point lights so far
* Move all logic to c# for full ownership, delete old native code
* Bindless shadow map textures, delete old shadow atlas
* Spot Lights
* Point Lights: cube textures with hw pcf poisson sampling
* Add user setting r.shadows.quality (0-3) low->high for better filtering
* Scale shadow map resolution based off of screen size the light occupies
* Debug system
Revert "What if we explicitly r2r sbox.exe only"
This reverts commit 4e8078b86f52d37d663f5fe4da8dc1dc33a862f1.
Clean up old dead code
Collect and pass around SceneLightObjects instead of the LightDesc ptr
Remove CSceneView::m_bIsThirdPerson
Add "Cast Shadows" property to MeshComponent
Restore adding per frame stats from updating upstream code
Whitelist System.Private.CoreLib/System.ParamArrayAttribute
AccessControl touches method parameter custom attributes types
Whitelist System.Diagnostics.CodeAnalysis.*
Whitelist CollectionsMarshal.AsSpan<T> and CollectionsMarshal.SetCount<T> ( closes Facepunch/sbox-issues#6905 )
Fix ClothingList regression
Unused CSceneSystem::m_nTransformTextureRowCount
ParentPackage installs to asset system so we can use prefabs, gameresources, etc.
Show parent package in asset browser
Fix bindless lightmap crashes why are we never checking nullptrs ( closes Facepunch/sbox-issues#7705 )
Fix DOF erroring on non-msaa
vfx_vulkan: SV_ViewID is a built in semantic
Update CSceneSystem::SubmitDisplayListsForView removing multi-submit VR junk
vulkan: unfuck image views for cube textures
Shaders compile for shader model 6.1
Scene system listeners I'll need later
Clean up old dead code
Collect and pass around SceneLightObjects instead of the LightDesc ptr
Managed shadow mapper, entry point from lightbinner, creates and renders shadow frustums
Set gpu light data from c#, pass shadowmap bindless texture id, use it from lighting shaders
Visualize depth uses screen space coords
vfx_vulkan: SV_ViewID is a built in semantic
fucking with VK_KHR_multiview and cubemap render targets
Don't return a new list each light gather, reuse the already allocated memory
Unused SceneView methods
Remove ISceneView::AddSceneObjectToRenderList
ISceneView::GetWorldToRender & related return ISceneWorld not CSceneWorld
Add CommandList.Set( StringToken, Texture )
Dispose of AssetPreviews after we've rendered their thumbnail. PreviewScene.Dispose destroys it's Scene
Restore accidentally deleted CreateTexture2D macros.. for now
restore ui shader which was blitting text
Delete some more shit resourcemanifests
Fix bloom blur using wrong sampler causing bleeding over edges
Base shaders: stop using macros for texture creation + sampling, use standard HLSL syntax
Core shaders: stop using macros for texture creation + sampling
Build shaders
yuv_resolve.shader should use explicit register positions (it's sampler was never being properly bound!!)
Unused materials using those unused shaders
Delete unused (or should be unused) shaders
* ui
* ui_texture_on_model
* visualize_cloth
* visualize_nav
* visualize_physics
* blur
* unlit (ui shader)
Deleted unused non-compute gaussian blur shader
Delete pre SM4/DX10 compatability code
Don't try to disable these shader warnings
Decals gradient uv scales off the proper axis (stops mipmapping way too soon)
fucking with VK_KHR_multiview and cubemap render targets
Decal: Update transform when dirty too Fixes Facepunch/sbox-issues#7518