1,518 Commits over 1,188 Days - 0.05cph!
Delete ShadingModelStandard, it never really worked but if you were using it for some reason use ShadingModelValveStandard instead as that'll stay backwards compatible.
This probably shouldn't be a break, it's gonna stop remapping normal/rma on old glass materials otherwise
Don't define standard material inputs if S_MULTIBLEND is set, this is the best way I can think of to reduce samplers on blendable without breaking backwards compatability.
I don't see much reason for this stuff to even be in common, it's pretty hyper specific to the blendable shader.
Also will get rid of the bullshit first input from an artist workflow: https://files.facepunch.com/yourname/1b2111b1/sbox-dev_kGyz4UAlhq.png
Cleanup material API
Fix tintmask and cleanup multiblend further, reduce number of samples
Add back these helper funcs we're using in shadergraph, should be moved or something in the future though, kinda overly specific
ShaderGraph: fix includes, just use the standard one
Fix metalness input texture
Use well known SCENE_RTSIZE_FRAMEBUFFER instead of manually fetching dimensions that seem to give us a 12k x 2k render target... This was flooding vram and causing errors
I'm not sure what we were trying to fix when changing this, but if SCENE_RTSIZE_FRAMEBUFFER is returning the wrong dimensions for a framebuffer copy, we should fix that instead.
Remove defunct code about using cecil as the DMDType, not needed since we fix the references ourselves
Record event when we ILHotload, matches naming of existing hotloads so we can derive % easily
Whitelist UnreachableException constructors too
Failing test for static references
Foliage shader: Add standard vertex color based procedural animation based on http://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch16.html
Some additional changes here to Material API so we don't need to double sample for opacity & removal of dead code.
Documentation: https://wiki.facepunch.com/sbox/Foliage_Shader
https://files.facepunch.com/matt/1b1111b1/sbox-dev_3qi13Ck52s.mp4
Foliage shader: Add standard vertex color based procedural animation based on http://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch16.html
Some additional changes here to Material API so we don't need to double sample for opacity & removal of dead code.
Documentation: https://wiki.facepunch.com/sbox/Foliage_Shader
https://files.facepunch.com/matt/1b1111b1/sbox-dev_3qi13Ck52s.mp4
Undo hack inverting green channel, should be fixed on authored assets
Iterate, sort of done.. Need to derive wind params from game
Remove vr foliage animation from common vs code
Material API shouldn't need to double sample for opacity.. have a look at this @Sam
Update foliage to have basic artist defined animation based on vertex colors
Update tree materials with foliage animation params
New rendersystemvulkan & vfx_vulkan
[hack] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
[temp] don't mount any asset.party shaders
GetShaderFullPath: remove shader replacements and legacy prefix substitutes
Shader fixes where DXC is slightly less forgiving on bad syntax (has a bad hack for material api in it)
Rip up Material API to get it compiling
Initialize lightShades so we don't get undefined behaviour when summing them, should still be mostly stubbed out by the compiler anyway if shadingmodel doesn't use it
Latest compiled shaders
When finding dependant assets always search the same path first before any other
Fixes a case where the assetsystem would get confused and infinitely recompile an asset if it had a dependancy across 2 addons, e.g:
dm98's dm_crowbar.vmdl depends on crowbar01.fbx which exists in:
1. addons/citizen/models/citizen_props/crowbar01.fbx
2. addons/dm98/models/citizen_props/crowbar01.fbx
Now it'll always favour 2 because it's in the same addon
Hammer: Max lightmap resolution 8k as 16k is impractical and never worked
Hammer: Fix entities from remote packages by using new PackageManager API
Fix swapchain assert when closing editor window
Fix typo in material compiler where it'd keep upgrading materials, provide some feedback too
MET standardize shader to shader_c
Recompile the rest of the materials that were using legacy paths before (hopefully this is all of them now)
ILHotload should never run with a debugger attached
Clean up dead code
Detour using a generated dynamic method copy from the replacing method
Scenes rendered from Sandbox.Tools apply an SVF_TOOL_VIEW flag, primarily this will stop stereo rendering on it
Fix error happening when using MET or recompiling assets due to null metadata in LoadTags
Fix static event exceptions throwing an error instead of showing the real exception
0ms hotload fast path poc when only method bodies change using MonoMod
Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST
https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4
New rendersystemvulkan & vfx_vulkan
[hack] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
[temp] don't mount any asset.party shaders
GetShaderFullPath: remove shader replacements and legacy prefix substitutes
Shader fixes where DXC is slightly less forgiving on bad syntax (has a bad hack for material api in it)
Rip up Material API to get it compiling
Initialize lightShades so we don't get undefined behaviour when summing them, should still be mostly stubbed out by the compiler anyway if shadingmodel doesn't use it
Latest compiled shaders
Fix WebPanelTest throwing NRE in debugger
.editorconfig changes to match Valve coding style better
Delete IVfx::GetAllShaderVariables was only used for dynamic shader compiles
Non Pow2 textures are allowed so make sure the tex coord scale gets set
Auto upgrade "shader" kv in vmat source instead of just compiled, e.g "vr_complex.vfx" -> "shaders/complex.shader_c"
Recompile all assets - mainly upgrading legacy shader names
poc of patching method instead of swapping assembly using monomod
Material API: Only use ShadingModelValveStandard, abstract classes aren't supported in newer versions of HLSL
Remove some unused bullshit from material API
Backport -vulkan_enable_sync_validation and other misc validation code
Revert Material API hack which was stubbing all funcs
More backports, mainly clamping render area still
Refactor out VK_IMAGE_LAYOUT_GENERAL dead optimization for nv
Make sure renderArea always has positive offsets and clamp to the framebuffer
Recompiled all shader
misc swapchain fixes
-fvk-invert-y for built in shaders too (resolve shader)
cs_volumetric_fog shader recompiled with proper reflection
objecthighlight shader (weird folder?)
Recompiled core shaders (except projected_sheet_decals & visualize_depth)
Fix WebPanelTest throwing NRE in debugger
do reflection on the built-in shaders so we bind the samplers/textures on them properly
Delete IVfx::GetAllShaderVariables, only used for dynamic shader compiles and saves me implementing it for Vulkan for no reason
.editorconfig changes to match Valve coding style better
Make dxc include handler work with sub dirs
GetShaderFullPath: remove shader replacements and legacy prefix substitutes
Fix HLSL lexer rules interpreting some vars as float literals and failing lexing
Assert if spirv-reflect fails
Update spirv-reflect as it was failing with some issues from 2019 :x
directional_ao.shader: fix ambiguous reference to 'i'
Compiled base shaders
Iterate map entities, find their matching type and call static method DrawGizmo within a Gizmo.Scope
Hammer gizmos using the ISceneView now
Compiled spritecard.shader
Fix debug param name being uninitialized
Quick slap up of our gizmos in Hammer mapview sceneworlds
https://files.facepunch.com/matt/1b1411b1/sbox-dev_buClDYa88x.png
Update vfxcompile, less mpi shit, simpler parallel processing loop
Up MAX_LOGGING_STATE_COUNT from 128 -> 256, this is per thread and vfxcompile will have a main thread + 128 worker threads
readme: troubleshooting long paths
shaders workflow: always upload artifacts even on fail
shader workflow: can force build all
Update Vulkan SDK + Volk
Stub old vrad3-gpu, incompatible from using beta vk headers
rendersystemvulkan: fix raytracing being required, remove VK_EXT_debug_report for VK_EXT_debug_utils
vfx_vulkan HLSL compiler using dxc and spirv-tools; rendersystem_vulkan support for how dxc does $Globals / register offsets
Sam's shader changes, most of this should just go to master now
vfx_vulkan: compatability with shadergraph
vfxcompile: display shader compile time in ms
[hack] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
vfx_vulkan sets correct offsets & more reflection info for compute shaders, refactor rendersystemvulkan to use valve's new helpers, bump max samplers to 64, loads of other fixes
spir-v remapper (size reduction)
Use Vulkan 1.1 if avaliable to resolve VK_ERROR_INCOMPATIBLE_DRIVER, use Vulkan 1.2 when raytracing is avaliable
Fix invalid command buffer in CRenderContextVulkan::ApplyDelayedChanges()
[temp] don't mount any asset.party shaders
vr_lighting.fxc: need explicit sampler lod as used from vs
better logging & timeout for when the swapchain hangs, which it shouldn't be, but lets you know wtf is going on
Update vfxcompile, less mpi shit, simpler parallel processing loop
Reuse DXC instances per compiler (I think having 1 per thread would be more optimal), clean up the DxcIncludeHandler
Update DXC, some memory allocator fixes
IMalloc wrapper for our memory alloc to pass to DXC
Latest compiled shaders
Add -renderdoc cli option for early renderdoc hooking
Don't needlessly set g_TransformBuffer or g_TiledLightBuffer on Submit, already set on init
ReadVfxFile: don't open file twice to skip bom, don't skip non utf-8 boms cause that's not gonna work
vfxcompile can specify -threads
shaders workflow uploads symbols
▌▋▍▄▆▇▍▋▍▆ ▇█▌▋ ▌▄▍'▌ ▄▍▋▄▌ ▌▇██ `▆▅▍▌██▄.` ▆▍▄▅ ▋▅▍█▊▄▌▋▄▌▆▅▅, ▄▆▄▍▋ ▌▅▋▌ ▍▋▉▄▇▍▄▋▉▍▄▌ ▄▍ ▍▆█▋▄▉▇.* ▉▍ ▍▋▌▅▇▅ █▄▌█▍▅▆▌▉
▋▌▋▆▇ ▆ ▅▇▍▇ ▄▊▆▅ ▅▅█ ▇▋ ▊▇█▋▋▊▄▌ ▅█▅▋'▋ █▍▄▅▌ ▅▆▊▋█▌ ▌▆█▅▍▋▆.▉▌█▆ ▆▆ ▅▄▊ ▆█▄▌▌▉▇▆▇▅▄▇▆▄ ▅▌▌▉▌█▅▍▍.
█▅▉▍ ▇▆ ▋▋▄ ▌█▄▆▋▉▄▇ ▍▆▌ ▌▊ ▌▆▋▇▇ ▇▋▆ ▉█▆█▊, ▋ ▆▊▍▄▉▇▄▉▌ ▄▌▅ ▆▉▉ █▍▄▅ ▋▆'▇ ▅▄▌▇▄▋ ▆▄▋▌ ▄▌▋ ▊▄▆▇█▊▇█ ▋█▆▄ ▅▊ ▅▉▆ ▇▌█▍█▍▅▅ ▇▆▇ ▋ ▆▄▄█▋▍█▊▋ ▊▅▍▌█▉ ▊▆▌▅▄ ▉▉█▅█▋▆ ▅▅▅▄. ▇▄ ▊▉█▅▊ ▇▋▋▌ █▊▋█▅ ▄▇▉▌ ▉▅▆▆.▊▉▌▍▄ ▊▇▉ ▊▉▋ ▌▅▌▅█▊█▇▇▊ ▅▌ █▍▊ ▅▋▉▆▉/▆▌█▌▌▇▊ - ▇▄▇▇▌▄ ▄▉▍▅▅▄▆▄▋▌ ▉▉▋█▍▇▉ ▉▍▇▄█▄.
Use Vulkan 1.1 if avaliable to resolve VK_ERROR_INCOMPATIBLE_DRIVER, use Vulkan 1.2 when raytracing is avaliable
Fix invalid command buffer in CRenderContextVulkan::ApplyDelayedChanges()
[temp] don't mount any asset.party shaders
vr_lighting.fxc: need explicit sampler lod as used from vs
better logging & timeout for when the swapchain hangs, which it shouldn't be, but lets you know wtf is going on
Update Vulkan SDK + Volk
Stub old vrad3-gpu, incompatible from using beta vk headers
rendersystemvulkan: fix raytracing being required, remove VK_EXT_debug_report for VK_EXT_debug_utils
vfx_vulkan HLSL compiler using dxc and spirv-tools; rendersystem_vulkan support for how dxc does $Globals / register offsets
Sam's shader changes, most of this should just go to master now
vfx_vulkan: compatability with shadergraph
vfxcompile: display shader compile time in ms
[hack] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
Add -renderdoc cli option for early renderdoc hooking
Don't needlessly set g_TransformBuffer or g_TiledLightBuffer on Submit, already set on init
vfx_vulkan sets correct offsets & more reflection info for compute shaders, refactor rendersystemvulkan to use valve's new helpers, bump max samplers to 64, loads of other fixes
spir-v remapper (size reduction)
Compiled most shaders (including complex)
vr: tracked objects (hands) also use full anchor rotation, not just yaw
vr: remove axis limitation on vr anchor rotation, enjoy throwing up
Skin shader use DXT5 (no sRGB) instead of BC7 for the combined masks texture; stops blocky artifacts & it's more appropriate
Resolves these blocky artifacts on the ao mask: https://files.facepunch.com/matt/1b2811b1/TA6eSCStlI.jpg
Obviously this is a bug with bc7e and alpha channels (there are issues open), but it's super specific to the way we're combining these textures together for this shader.
For standard color maps bc7e is supreme to all other encoders, and when we're combining channels together bc7 is rarely the right choice, so I think it's more than fine to avoid this.
Remove nocompress hint from citizen_skin_ao.png and recompile skin materials
Rework parts of CLightCookieManager to prevent crashing and optimize slightly
* Don't create new light cookies when we exceed the max, otherwise we'll just fucking crash
* Don't needlessly update the texture slices of removed cookies, new cookies will replace
* Light cookies use a strong texture handle instead of weak handle
Update README: General cleanup, build instructions, using unit tests, engine reference, using Git tips
Compute max swap chain size from all monitor dimensions - solves tools like Hammer not being able to render fully on secondary larger monitors
GetMaterialOverride return default if the override is invalid, specific fix for Hammer crash but could've been fucked elsewhere