Moved tiled rendering buffers to lightbinner, where it should belong
Remove members that have long been deprecated, start adding support for structured buffer lights
Move all cbuffer stuff to legacy, standard will only have structured buffer path
Start implementing structured buffer lights data structure
Remove all code for calculating mixed shadows, that'll be all allocated in the main light shadow function, iterate structured buffers
Iterate on new lightbinner, let all shadows render through a single rendering path, disregard legacy for now
Remove bMixed from LightEntry, it's complete bullshit, let static lights render only dynamic objects when doing shadows
Unified shadow casting, map indexed lights so we can fetch them easily and without needing to order sequentially, remove more deprecated stuff
Get rid of lightbinner_legacy completely
Eliminate legacy per view lighting constants, eliminate mixed shadows, add placeholder to some constants where they should belong
Cut more code from lightbinner light allocs, means only spots will alloc properly for now but cleans a lot of this, align cbuffers, add ComputeDirectLightingForLight to unify lighting calculation on shader
Remove CSunLightManager, used for old pre-hlvr sun rendering, a lot of code that's only used for dynamic sunlight different to everything else in light rendering
Remove more unused parameters from lightbinner
Remove remaining crumbs of old sun shadowing, remove unused shadow functions, add bBaked to ComputeDirectLightingForLight
Lightcookies and point lights
Remove multiview constants from lightbinner, these have been getting in my way, and we need to think a better way to handle instanced viewports, I'm leaving it to a bigger cleanup later
Start Envmap support on new lightbinner, remove unused environment_map.fxc
Start MATERIAL_LIGHT_DIRECTIONAL support for lightbinner, sets up frusta for lights
Fix conflicts from merge that added removed stuff
Fixup for directional lights, add dummy ambient lighting for fully dynamic scenes, implement flags properly
Fix merge ( g_nNumEnvMaps > NumEnvironmentMaps )
Remove interface definition from Vfx ( It's fucked off from HLSL 2020+ ), add array support to members in classes in Vfx
Store multiple frusta on same light definition rather than using sequential lights, makes this simpler, point light shadows
Ambient light, new strategy for shadow frusta
Disable r_enable_high_precision_lighting, just ends up overcomplicating code, reevaluate if this actually affects much away from world origin, will make vPositionWithOffsetWs just become vPositionWs in shaders if fully removed
Take shadow frustra from BuildShadowFrustaForLight() that matches what's on the shadow map renderer, rather than rebuilding it with twice the code
Test of multiple frusta support for shadow maps on shader 🥳
Support for cascaded shadow maps on new unified multi-frusta system, needs to backport old code
Backport directional CSM code to unified BuildShadowFrustraForDirectionalLight in lightdesc
Shadow filtering and dummy ambient lighting
Calculate spot light resolution proportionally based on light cone and do a LOD system for light shadows based on distance, both are meant to be perceptual
https://files.facepunch.com/sam/1b1211b1/sbox_rl2LTOMdY4.mp4
CSM Adjustments
Pass envmap data to GPU
Fixups for cubemaps on shader, add test for ambient light IBL support
https://files.facepunch.com/sam/1b1311b1/ibl.png
We dont need start indexes for lights anymore, just remap the index for fog and baked, fixup envmap count to shader
Remove refs to CalculatePositionToCameraDirWsMultiview
function call in new lightbinner shader code
Cleanup, remove a bunch of unused or deprecated shit, cleaned up a lot of variable in lightbinner structured buffer that ends up not being needed, document things a bit better
Rename lightconstants.hlsl to lightbinner.hlsl and call the data there BinnedLight/BinnedEnvMap, make baked lights only cast shadows if mixed lights are enabled on them
Remove limitations to not have mixed point light shadows, it just works now https://files.facepunch.com/sam/1b1911b1/SNSMgfgkxR.png
Fix flags on lightbinner gpu include, oops
Refactor tiled rendering builder to be compatible with new lightbinner, make it implicit under lightbinner.hlsl
Fog lights support, remove second buffer that's meant for fog lights, remove bullshit code to support old directional light from it that was just meant to be tools-only, all light types just works now https://files.facepunch.com/sam/1b2111b1/C3pY5Q7jq9.png
Fix directional light farz https://files.facepunch.com/sam/1b2111b1/Jn16Ruj0ub.png