1,109 Commits over 1,219 Days - 0.04cph!
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
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)
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/
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
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
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
MapInstance doesn't load networked hammer gameobjects on clients as they'll be in the snapshot
ToolRenderLayer shouldn't force Forward mode as it disables face selection and other crap
Hammer wireframe is just normal render pipeline wireframe now instead of all the special case layer stuff
ci build-menu uses new path
MenuBuild uses ToolAppSystem so everything is set correctly like Application.IsHeadless which was likely stopping it from compiling new menu dlls
Hammer Wireframe Overlay: white wireframe color works again
Wireframe mode is white in game/scene again, fix depth test being disabled in scene, also bind expected lighting constants
Fix invalid depth comparison sampling on well known 16 bit textures by targeting D16 and sampleable flags, these textures are used in place of the shadow depth buffer when shadows are disabled
▌▆▌ ▌▊█▅ ▅▆▆▉▋ █▉ ▍▄▄█▋▌▊▋ ▊▄▆█▇█ ▄▇▋▆▇▍▆▇
▄▄▅▉▊ ▌▆▊▌▅█▅▍▌▆▅▇▊█▊▅ ▄▋▅ ▅▇▍▊▄█▋▇ ▍▋█▌▊▇▇▌▇▌ ▋▅ ▅▆▍▋█▌█▊█▆▍ ▍▆▍▇ ▇▍▉▊'█ █▄▆▆▇▇ █▄ ▇▊▆▆▇▊, ▍▍▇▅▅ ▅▄ ▄▍▋▋█▊▊ ▄# ▍▍▌▆▇▊▅▄▋ ▇▄▇ █▇▌ ▍▊ ▊▉▄▇ ▄▋ ▇▉▇▇▅ ██▍ ▋▌▍▇▊█ ▄▄▍▌ ▌▊▌▄▋▉▋▅▋▄▋
▄▊▊▍▆█ ▊▍▇▄▊▇█▇ ▉█▍▅ █▊▊ ▉▅ `▉▇▍▆.▋▋▊▍▊▇▅▊()` ▅▆ `██▄▇.▄▊▋▆▆▇▋▆()`
▄▋▄▇█▅▉ █▅ ▉▆▅▍▅'▊ ▄▍▍▆▊ `▇▆▉ ▊█▆▉▌█▆▅ = ▉▉▉▋.▌▍▇▍▄▅▋▄; ▌▆▍█▍▍▋▇()`
▄█ ▋▄▋▄▇▊.▊█▍▉▉▌▌▌▉▇█▌▌▉██ ▄▄▆██ ▌▍▌▅▊▋▋▍▄▍▋▌▇▉▍▅▉▆▋▆▊▆▋▍ ▌▉ █▍▆▄▋▌▌▆▋ █▅█▌▄
▅▆▅▍▊▌ ▆▊▍█▍▍█ ▄▆ ▅▉▌█▅▌ ▆▄ ▅▆▉▉▌▍▆ ▍▌▌▋█▄▉▅ █ ▅▊▋▌▊▅ ▄▇▅▉ ▉▋ ▉▇▄▍▍▆▍
! ▊▄▇█▊▊█▅▄▋▉ ▅▊█▇ ▆█▄ ██▄▆▆█ ▆▇█▇█▋▋▉ ▌▉██▌▆▅ (▅▅: ▍▍▊▉█▍▇)
▆▅▉▌▉▋▍█ ▋▍▅▆-▆▅▊▆▍▍▆ ▅▄▍█▆▍▆ ▆▄▆▊ ▌▌█▅ ▄▇▆ -> ▌▄▄ ▊▍▊▌▅ ▌▍ ▄▇▋▋ ▊▅▌▇▇▊▇
Obsolete GpuBuffer.UsageFlags.Counter, Structured and Append both have it automatically, this flag was only for D3D11. Both VK and D3D12 behave the same way for this.
Whitelist System.IParsable
Closes Facepunch/sbox-issues#7253
Whitelist System.UInt128
Closes Facepunch/sbox-issues#6892
Whitelist a few assembly attributes a library was using
▍▄▌▌▅█▍▉█ ▆▊▇ ▊▍▌▊▋▉▄▍▍█▆▄▅ ▅▌▊▉▇▋▅▍ █▇▌█▊▉▊▋ ▇▄▋▊▆▊▇▉▋▋
▇▉▇▌ ▌▄▋▄▌▇▍█.▆▇▇▉▊█▌▄▆▆█▆▊▍▉▉ ▆▇ ▌▌▍▆▉▊▆▆▋▋▌▍▆
Vulkan: Structured buffers also have a UAV hidden counter
Add GpuBuffer.UsageFlags.Counter for usage with structured buffers
Enables IncrementCounter and DecrementCounter in HLSL
Can also use GpuBuffer.SetCounterValue and GpuBuffer.CopyStructureCount
These both previously and still do work with Append buffers
Added default 0 offset parameter to GpuBuffer.CopyStructureCount