1,563 Commits over 1,247 Days - 0.05cph!
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
Add missing shader include
Build shaders
Gpu decals point towards forward and not left 🤦
Fix Gpu Decals normals not transforming to world space
New decal component - https://sbox.game/dev/doc/reference/components/decals/
Don't return a new list each light gather, reuse the already allocated memory
Collect and pass around SceneLightObjects instead of the LightDesc ptr
Stubbed managed shadowmapper appsystem (this is such bullshit for a simple interface for scenesystem)
Managed shadow mapper stub, entry point from lightbinner
Add CommandList.Set( StringToken, Texture )
Dispose of AssetPreviews after we've rendered their thumbnail. PreviewScene.Dispose destroys it's Scene
ISceneView::GetWorldToRender & related return ISceneWorld not CSceneWorld
Clean up old dead code
Create and render shadow frustums from managed
Scene system listeners I'll need later
Remove native shadow rendering
Set gpu light data from c#, pass shadowmap bindless texture id, use it from lighting shaders
Depth bias shadows
Visualize depth uses screen space coords
Skin applies new decals (uses non-shared rendering path so Decals::Apply has to be inserted here)
https://files.facepunch.com/matt/1b2711b1/sbox-dev_PM9LtJUEwM.png
Build shaders
Forward+ Decals (#1606)
GPU driven tile culled decals that modify their surfaces PBR properties.
No additional draw calls for any decals.
* PBR modification: Albedo, Normal, Roughness, Metal, AO
* Works with transparent surfaces as it's not projecting based on depth
* Color Tinting + Opacity
* Angle attenuation
* Automatic sort order + override
* Future compataibility with extra data flags to add 100 more things
* Decal::Apply( ... ) API
Clean up, remove unused properties, destroy buffer, 64 decals per screen tile
Forward+ Decals
GPU driven tile culled decals that modify their surfaces PBR properties.
No additional draw calls for any decals.
* PBR modification: Albedo, Normal, Roughness, Metal, AO
* Works with transparent surfaces as it's not projecting based on depth
* Color Tinting + Opacity
* Angle attenuation
* Automatic sort order + override
* Future compataibility with extra data flags to add 100 more things
* Decal::Apply( ... ) API
add octohedral_encoding.fxc include
Revert "Bindless lightmaps/Lightmap Combo Removal (#1765)"
This reverts commit 1fdcdeab689851f1093853faa8d8b4d6041d63f7.
# Conflicts:
# game/addons/base/Assets/postprocess/ObjectHighlight/objecthighlight.shader_c
# game/addons/base/Assets/shaders/atmosphere_sky.shader_c
# game/addons/base/Assets/shaders/blendable.shader_c
# game/addons/base/Assets/shaders/foliage.shader_c
# game/addons/base/Assets/shaders/fur.shader_c
# game/addons/base/Assets/shaders/gizmo/gizmo_grid.shader_c
# game/addons/base/Assets/shaders/gizmo/gizmo_line.shader_c
# game/addons/base/Assets/shaders/glass.shader_c
# game/addons/base/Assets/shaders/line.shader_c
# game/addons/base/Assets/shaders/lpv_debug.shader_c
# game/addons/base/Assets/shaders/sprite.shader_c
# game/addons/base/Assets/shaders/terrain.shader_c
# game/addons/base/Assets/shaders/terrain_brush.shader_c
# game/addons/base/Assets/shaders/terrain_preview.shader_c
# game/addons/base/Assets/shaders/tiled_light_culling_cs.shader_c
# game/addons/base/Assets/shaders/ui_backdropfilter.shader_c
# game/addons/base/Assets/shaders/ui_basic.shader_c
# game/addons/base/Assets/shaders/ui_borderwrap.shader_c
# game/addons/base/Assets/shaders/ui_cssbox.shader_c
# game/addons/base/Assets/shaders/ui_cssshadow.shader_c
# game/addons/base/Assets/shaders/ui_dropshadow.shader_c
# game/addons/base/Assets/shaders/ui_filter.shader_c
# game/addons/base/Assets/shaders/ui_text.shader_c
# game/addons/base/Assets/shaders/vertex_color.shader_c
# game/addons/base/Assets/shaders/water.shader_c
# game/core/shaders/black_unlit.shader_c
# game/core/shaders/cables.shader_c
# game/core/shaders/complex.shader_c
# game/core/shaders/complex_reflections.shader_c
# game/core/shaders/cs_volumetric_fog.shader_c
# game/core/shaders/debug_wireframe_2d.shader_c
# game/core/shaders/decal.shader_c
# game/core/shaders/depth_only.shader_c
# game/core/shaders/eyeball.shader_c
# game/core/shaders/generic.shader_c
# game/core/shaders/hair.shader_c
# game/core/shaders/post_process.shader_c
# game/core/shaders/projected_decals.shader_c
# game/core/shaders/projected_sheet_decals.shader_c
# game/core/shaders/simple.shader_c
# game/core/shaders/skin.shader_c
# game/core/shaders/sky.shader_c
# game/core/shaders/spritecard.shader_c
# game/core/shaders/static_overlay.shader_c
# game/core/shaders/tools_shading_complexity.shader_c
# game/core/shaders/tools_solid.shader_c
# game/core/shaders/tools_visualize_collision_mesh.shader_c
# game/core/shaders/tools_wireframe.shader_c
# game/core/shaders/ui.shader_c
# game/core/shaders/visualize_cloth.shader_c
# game/core/shaders/visualize_nav.shader_c
# game/core/shaders/visualize_physics.shader_c
# game/core/shaders/vr_tools_shading_complexity.shader_c
Build shaders
Don't try to use shaderFloat16 either since this is only avaliable on gtx1660+
don't require everyone to have a raytracing capable gpu (:
Enable vulkan 1.2 features (scalarBlockLayout, bda, descriptor indexing, etc.) instead of using all the extensions
Vulkan 1.2 is minimum requirement, device support remains the same. We already required several extensions that are core in 1.2 such as descriptor indexing
Shaders compiler uses scalar layout instead of std140/std430 layout (VK_EXT_scalar_block_layout is core in 1.2)
This is a much less confusing layout for structures in HLSL, allowing for
tighter packing and generally matching their C++/C# counter parts.
e.g:
```hlsl
struct T {
float a_float;
float3 b_float3;
}
```
The size of struct T was previously 32 bytes with GL layout and is now 16 bytes.
The offset of b_float3 was previously 16 bytes and is now 4 bytes with scalar layout.
More info on rules (previously GL, new Scalar)
microsoft/DirectXShaderCompiler/blob/main/docs/SPIR-V.rst#memory-layout-rules
https://maraneshi.github.io/HLSL-ConstantBufferLayoutVisualizer/
Optimze Pixmap.FromTexture (don't swizzle the format 3 times)
4096x4096 339ms -> 115ms
2048x2048 90ms -> 50ms
1024x1024 20ms -> 10ms
Bottleneck is going to be the data read from GPU -> CPU, not much else to do
Materials store the shader version they were compiled against, added Source( ShaderVersion ) for shaders to query what the current material was compiled against for backwards compatability
Blendable: Use hemi octahedron encoded normals same as complex for better quality, remove a redundant texture lookup per layer, remove the 5th unused blend layer because wtf
https://files.facepunch.com/matt/1b1811b1/mspaint_qIv6MYpn8Y.png
Fix failing to start game if VRSystem returns nullptr for extensions
Material.FromShader uses path and not just name - allows shaders of same name in different folders
Forward+ Decals
* Decals get binned by the lightbinner from OnSceneObjectVisibleInView (all lights should start using this callback too)
* Tiled culling checks decals within each tiles frustum
* Decal::Apply( ... ) is used to mix decal's albedo, normal, etc. into surface
Our shader includes are a cyclic dependent mess, I have no idea how to not make this simple thing simple
Partial backport of ISceneObjectDesc::OnSceneObjectVisibleInView
CSceneObject::GetCTransformUnaligned()
Delete random Hammer shit
Don't use shadercache if we're force recompiling. Output total time.
Leftover log, useless include
Fix race condition with GetTemporaryFolder() where we'd end up with a .source2.source2.source2 folder
Mount cloud maps from snapshot too (repeated logic from MapInstance bleh)
Add referenced resources in the Scene to the vmap. Fixes Facepunch/sbox-issues#6839
Hide/Unhide works on Hammer GameObjects
Resolves Facepunch/sbox-issues#7200
Delete all this dota grass code
Add dump_scene concmd, puts a clone of the current scene onto the clipboard for debugging
MapInstance: Don't delete all our children we've just received from the network snapshot
Mounted VPKs are part of the snapshot, we need these mounted before we deserialize the received scene / networked objects