558 Commits over 1,247 Days - 0.02cph!
Fix shadows and area lights on vulkan removing unused parameters that were fucking cbuffer alignment
Remove more unused shit from shaders, separate lighting constants between legacy and non legacy in shader code, initialize light code in DoLightShape
Fix errors on light.static.hlsl
Fix mixed shadows blinking black on activation, make them fade properly
Better Viewmodel Shadows (#1119)
Cache PVS on scope and do UpdateMixedShadowsComputations as a job, ~10x speed increase, do calculations every 200ms rather than 100
Add Tiled Rendering Quads to debug view list
Fix foliage in VR, let's rethink how we do multiview API later..
Lightbinner Separation between VK/D3D11 (#1133)
* Add LightBinnerLegacy so we don't kludge our lightbinner with stuff we can't change on d3d, rename our main lightbinner to LightBinnerStandard
* Remove deprecated cbuffers
* Add lightbinner_legacy, separate both lightbinners based on the rendering system we use
Compile glass on vulkan, have proper curve for albedo color absoption for shadows
Recompile glass with support for world mapping
Remove msdfgen, been there forever and we never used it for anything, better to implement it in C# if we ever need it
Remove ExtraShaderDataFormat, just have everything uniform
Remove EXTRA_SHADERDATA_FORMAT from shaders too
Fix glass not compositing translucency properly, also fix area light problems with it
Fix vrad light bounces for blendable
Revert that change to readd structs and do the proper fix
Keep struct in cbuffer layouts for legacy layout
Avoid models rendering black when assigning blendable to them
Don't offset the pixel position by the parallax offset for shadowing on complex, causing problems in 90 degree angles
Fix area lights nuking lighting when very small
Dispose temp rts on end of scope rather than when we request another one, lets reuse them through the frame, fixes multiple blurs not showing up
Remove remaining breadcrumbs of fsr
Better directional ao curve, update crate01
Fix directional AO falloff looking very faint and let it take ambient light into account for calculating hardness
https://files.facepunch.com/sam/1b0911b1/gpBUzR76wN.jpg
Redo and recompile aoproxies of all citizen props
https://files.facepunch.com/sam/1b0911b1/v3nI9nRpR1.jpg
Shadingmodel Declutter (#1041)
* Start cleaning up material and shadingapi
* Allow using functions inside of HLSL structs
https://i.imgur.com/t1AwQzr.png
* Replace all GatherMaterial bullshit with Material::From()
* Remove Material parameter references to things that aren't implemented yet, put TransformNormal in normals file
* Cut everything from ShadingModel too and let's start from a static class
* Redo light api on shaders, start implementing new dynamic light under this structure, move raytracing shit to it's own folder, add sample shadingmodel
* Allow structs in structs ( HLSL 2021 and forwards )
* Most of static light with the new api
* Fix shadowing on indexed lights on new light api
* Move shadingmodel structures to shadingmodel.hlsl
* Fix light static assignment for lighting api, fix shadowing for them too
* Stub for EnvironmentMapLight
* Implement cubemap light
* ShadingModelValve
* light.envmap.hlsl becomes light.environment.hlsl for better readability, add debug views to material api, CUSTOM_MATERIAL_INPUTS preprocessor
* AmbientLight
* Sane implementation atmospherics and debug vis postprocessing for shadingmodel api
* Finish debug vis, rename ShadingModelValve to ShadingModelStandard
* Start rewriting blendable with new api, port glass to new api
* Rewritten blendable shader
* Refactor remaining shaders to new shadingmodel api, fix shadergraph not working, readd procedural.hlsl for shadergraph but fix typo on title
Allow area light size to be changed in runtime
Simplify cubemap priority calculation
Assume an UAV texture written to lightcookie atlas should always be updated as well
Let transmissive mask use tint color in complex shader
https://i.imgur.com/5lkQh7M.png
Allow scaling roughness on legacy shaders
Fix sequential fog transforms being fucked, fix fog contribution always being at minimum of 0.001, cleanup
Make volumetric fog perfomance much better with area lights
fix lighthelper treating unrelated entities as lights, fixes slowdown on compile
Use previous logic for the recording texture but keep the rect crop
Fix F6 recording when FB scratchtexture is bigger than the screen
Make sure area lights don't intersect with walls so we can sample CDFs properly, do bound calculation properly, speed up SIMD path
Area light controls for spotlightentity and update gizmos for the other ones, CylinderLightEntity.cs > AreaLightEntity.cs
Area Lights (#885)
Co-authored-by: bakscratch
Remove SetMinimumFrameBufferRenderTargetSize, only used on SFM and it fucks scratch FBs, don't let SetMainSwapChain override behaviour of swapchain size listener on tools, remove hacks that we were using for setting scratch fbs
Fix fog drifting when your view is still by clamping max TAA value
Fix cubemap feathering on combined light probes
Fix eye shader disabling depth prepass for the entire sceneobject
Put ToMaterial only if we use material inputs, use custom ToMaterial for Blendable since we use different inputs, fixes tinting on multiblend, we're gonna rethink this soon
Readd break statement to material remap array after we find a match, use safer comparison
Add light scale for direct light calculation, make it be affected by FogContributionStength
Always render shadows if sky is visible on stationary direct lights
Readd FlushScratchRenderTargets, that's resized to the monitor screen anyway when you open a tool if you need an expanded viewport