1,819 Commits over 1,491 Days - 0.05cph!
Initial work on virtual textures support
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
Update all shaders to support area lights
This should be the right logic for roughness offsetting on plane lights
Remove dominant vector adjustment for rect lights, fix capsule lights not sphere bloating right
Fix uninitialized variables in spritecard
Update blendable shader
Sphere light gizmos and update capsule light gizmos
Allow custom dotted alpha for our gizmos to have transparency
Sphere light prototype
Tube light prototype
Data structures for light shapes
Add CapsuleLightEntity, pass extra light parameters properly
Do custom NdotL computation for capsule lights
Volumetric light for vrad
Cleanup
Indexed baked light support for area lights
light_capsule editor model
Fix bounds of baked lights and don't cast rasterized shadows if light is an area light
added light rect editor icon
https://files.facepunch.com/louie/1b1611b1/sbox-dev_txMYDqSXVV.png
Disc Light prototype
Area light dynamic volumetric fog support
Rectangular lights, cleanup
More cleanup, keep both disc and rect paths, baked light support for rects
Remove old now-unused ComputeDirectLighting_SingleLightFastPath and refactor DoLightShape, changes on dynamic volumetric fog
Separate diffuse and specular rays for rects, get it working nicely on volumetric fog too
Only light the front of the light_rect on vrad
Clamp L of rect and sphere so that it can intersect ground
Fix specular on indexed lights
Add tiled rendering tools debug vis mode
Fix baked rect lights dot product eating what's behind it and leaving it black
Tiled Rendering for area lights
Only do clamping in NdotL for Capsule Lights, avoids it showing through walls
C# side of rectanglelightentity
Fix rect light specular, approximate reflection vector by the dominant direction vector so that we don't get a weird rough projected reflection
Update shaders for area lights, including compiled version
Fix bbox on light baking for area lights
Add capsule, cylinder and sphere shapes to gizmos
Squash commit of SSR and Denoiser work
Reimplement Min/Max downsample for new shader
Do alpha denoising for DNSR reprojection pass
Alpha denoising on the other passes
Finish temporal alpha denoising
Track reflection gbuffer history so that denoiser knows when to use mirror reflections
Fix NaN rays on high quality reflections tracing
Test for SSR on water
Add contact hardening for DNSR reflections
https://i.imgur.com/PHaZgQv.png
Test for saving downsampled depth history, might not be necessary, redo convoluted multiple-layers downsample with a simple call to our downsample function call
Iterate SSR, fix reprojection
Enhance contact hardening for radiance history, drift encoded normals a bit so that normals facing down don't get encoded incorrectly, improve temporal stability factor
Some adjustments for contact hardening and compiled shaders
Separate water better and output to reflection gbuffer, reflections don't look great yet but has all boilerplate for water2
Force special case for water cubemap blending for now
More aggressive contact hardening
Compile optimized shaders
Allow increasing sampler per pixel on denoiser, use lower precision gbuffer, fix compositing looking weird
Do edge gap hardening on prefilter pass
Allow for configurable sample count with r_high_quality_reflections_sample_count
Tweak reconstruction and normal calculation on ssr, readd edge feathering that was incorrectly left out
Do pingponging by using current frame count, hash using required dimensions rather than viewid since these can be 0
Remove SSR shimmering with multiple samples
Sharpen reflection denoise
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
Remove flashlight light allocation, it's all unified in spot lights, allow rendering shadow maps for mixed point lights
Remove remaining references to "scenesunlight.h", alloc and render but don't shadow dynamic sunlights right now
Remove old CSM code from shaders
Unbind SunlightManager, cleanup gameinfo
Simplify directional light binner code, you can have as many directional ligths in your maps now and it's simpler to maintain
https://i.imgur.com/R8odoVP.png
Remove SunlightManager
Delete remaining references to scenesunlight
Cleanup lightbinner code, remove cached light stuff, don't care for flashlight/fx lights
Tweak reconstruction and normal calculation on ssr, readd edge feathering that was incorrectly left out
Do pingponging by using current frame count, hash using required dimensions rather than viewid since these can be 0
Cubemap and lighting probe adjustments
Squash commit of SSR and Denoiser work
Reimplement Min/Max downsample for new shader
Do alpha denoising for DNSR reprojection pass
Alpha denoising on the other passes
Finish temporal alpha denoising
Track reflection gbuffer history so that denoiser knows when to use mirror reflections
Fix NaN rays on high quality reflections tracing
Test for SSR on water
Add contact hardening for DNSR reflections
https://i.imgur.com/PHaZgQv.png
Test for saving downsampled depth history, might not be necessary, redo convoluted multiple-layers downsample with a simple call to our downsample function call
Iterate SSR, fix reprojection
Enhance contact hardening for radiance history, drift encoded normals a bit so that normals facing down don't get encoded incorrectly, improve temporal stability factor
Some adjustments for contact hardening and compiled shaders
Separate water better and output to reflection gbuffer, reflections don't look great yet but has all boilerplate for water2
Force special case for water cubemap blending for now
More aggressive contact hardening
Compile optimized shaders
Allow increasing sampler per pixel on denoiser, use lower precision gbuffer, fix compositing looking weird
Do edge gap hardening on prefilter pass
Allow for configurable sample count with r_high_quality_reflections_sample_count
Allow increasing sampler per pixel on denoiser, use lower precision gbuffer, fix compositing looking weird
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
Fix eye shader disabling depth prepass for the entire sceneobject
More aggressive contact hardening
Compile optimized shaders
Force special case for water cubemap blending for now
Separate water better and output to reflection gbuffer, reflections don't look great yet but has all boilerplate for water2
Some adjustments for contact hardening and compiled shaders
Enhance contact hardening for radiance history, drift encoded normals a bit so that normals facing down don't get encoded incorrectly, improve temporal stability factor
Test for saving downsampled depth history, might not be necessary, redo convoluted multiple-layers downsample with a simple call to our downsample function call
Iterate SSR, fix reprojection
Add contact hardening for DNSR reflections
https://i.imgur.com/PHaZgQv.png
Fix NaN rays on high quality reflections tracing
Track reflection gbuffer history so that denoiser knows when to use mirror reflections
Finish temporal alpha denoising
Squash commit of SSR and Denoiser work
Reimplement Min/Max downsample for new shader
Do alpha denoising for DNSR reprojection pass
Alpha denoising on the other passes
Pass to shader pipeline if we're rendering on skybox, fix glass reprojection being fucked up on skybox
Fix glass not showing properly on tools view
Just set the max swapchain dimension to be the largest monitor dimension again, causes less problems while in tools mode, guarantees we won't have edge problems
Fix glass depth being fetched incorrectly in MSAA levels
Get the dimension of the biggest used axis for calculating swapchain dimensions, fixes FB copies having wrong dimensions on tools, allow texture downsamples to only downsample a region
Let decals do software-based culling, avoids slow copy of the depth buffer just to do redundant culling, that was also causing problems