2,009 Commits over 1,581 Days - 0.05cph!
multi-res cubemap test scene
Cubemapper can accept multiple resolutions
Use a single scratch texture for cubemapper staging texture and use rects to copy to/from
Hammer area lights
Capsule desc for lightmapper takes half length
Baked lighting for area lights + some falloff, LTC was taking reverse units compared to previous implementation
Update shaders
Remove point light size and adjust area light hammer values
Logic for light size was swizzled, correcting it
Fix line light being darkened and warnings
update shaders
Directional lights was using the logic to null transform directions, putting it back
Gizmos for capsule light https://files.facepunch.com/sampavlovic/1b2611b1/RJex7WOFyE.png
Line Renderer Light subcomponent
https://files.facepunch.com/sampavlovic/1b2611b1/b20gTMwYSi.png
Replace fuckload of if statement from LTC::ClipQuadToHorizon with a lookup table, fast analytic line/capsule light implementation
Pass light rotations to point lightbinned lights
Cleanup LTC
Clean up fb copy logic
Don't do threaded fullsorting if we have a framebuffer copy, we want to capture the first copy when the object is ready to draw and there's no good way for us to do synchronization from these threads before they're joined
If we want multiple fb copies per layer, don't try to batch primitives, draw themindividually
https://files.facepunch.com/sampavlovic/1b2511b1/5lQrZuR0X3.png
Test sorting with rough glass too
https://files.facepunch.com/sampavlovic/1b2411b1/CK6yyKAShR.png
Remove bloom2 since it's on master
Do a fbcopy when needed when we issue the drawcall instead of start of layer
https://files.facepunch.com/sampavlovic/1b2411b1/TelPfAoEb1.png
Fix wrong blending modes being set on glass wtf
Readd disable backface culling
Remove exposure bias entirely from colorgrading, uses exposure compensation value from ToneMapLinear instead
Make shared postprocess not write to depth; we corrected a behavior that postprocess was using wrong depth buffer ( things like DoF are meant to use it even on PP layer ), but this caused some user PP effects to only be written to skybox when correcting it
Do autoexposure before we do postprocessing and use HDR color for it, adjust rate for HDR compensation, adjust autoexposure adaptation scale, fixes autoexposure wobbliness & gives a much better range to it
Every tonemap type has exposure bias
Remove bullshit RenderState initialization, we get these from the renderer already
Clear alpha if we're rendering directly to screen, same behavior as before native postprocess removal
Remove Exposure Bias from tonemapper, this doesn't make much sense since it's tied to only HableFilmic and does the same thing as ExposureCompensation
Fix GrabFrameTexture sending fixed, wrong number of mipmap levels, fixes validation error
Remove Native Postprocessing
Squashed commit of the following:
commit 477246d2ae28cf22d43eb62f99698bee6cec99c6
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Mar 18 00:08:02 2025 -0300
[pick] Bind all mips for QuarterResEffectsBloomInputTexture, fix bug with lighting on bloom layer
commit d8b713b705c54e861056bc6998ee6a92bec82a11
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Mon Mar 17 23:59:49 2025 -0300
Explicit clear flags for ResolveHDRToFinalSDR
commit bd47d1cf188196ada6a28019ca50a77d764f2629
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Mon Mar 17 23:44:21 2025 -0300
Remove postprocess methods from toolscene
commit 7c543731baadea6be40054d9b930e439de700b28
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Mon Mar 3 13:35:58 2025 -0300
Remove deprecated gaussian bloom blur material
commit 6d727c4e7ad5cb2ac00c59ba36b75ddfcfb95409
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Sat Mar 1 11:43:41 2025 -0300
Add Tonemap and VOlumetricFogManifest in RenderingPipeline
commit dd050aeb240d66e0d9abef0600145a1a0e5b7f72
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Fri Feb 28 11:26:24 2025 -0300
Resolve to SDR in correct color space
commit ecaaf6c6c985bf8b4e524a616b29e8b9fb71f6d8
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 23:07:12 2025 -0300
Removed unused stuff from pipeline
commit 85576d476f52f5a282ebec85134708760fce5fa9
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 23:02:06 2025 -0300
Remove msaa_resolve tonemap_resolve too, not used
commit 39e1de4d2b060dfbced2870c0ea9919b2e62cf0a
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 22:57:59 2025 -0300
Remove Valve's post_process and gaussian blur shader
commit 55ad9e65d8ec43ae3dc9be071004fe5cff3d19f0
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 22:36:01 2025 -0300
Remove all mentions of stage1/stage2, copy HDR intermediary texture back to SDR if formats are different
commit 36bc46cfb53d8e649d856240b2c888c21a90bc2d
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 22:13:16 2025 -0300
Get rid of native PostProcessSystem entirely, current components need reimplementation now
commit 22707f8ac9566878e659637624e31d733ff3ebc6
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 21:42:52 2025 -0300
Start removing PostProcessingSystem
commit 379b55356523496911969018d581b273f1d799d8
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 21:30:25 2025 -0300
Remove RenderingPipelinePostprocess
commit 11f6d48c4a584340faab8640924d8f6e3242610b
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 21:28:03 2025 -0300
Remove stage2 rts from camerarenderer, pointless now, remove parts of postprocess pipeline from it
commit 176cedbfd96dec157725fe76662e6bb93cccd7ff
Author: Sam Pavlovic <sam@sampavlovic.com>
Date: Tue Feb 25 14:23:16 2025 -0300
Remove native postprocessing from renderpipeline
UI Overlay comes before AfterUI
This should be proper uav barriers for native mipmapgen, fixes another validation error
Bloom2
Upgrader for bloom threshold
Some RTs do need to be initialized with clear when running from managed code, investigating
Downsampler ignores negative values
Add -vulkan_validation_error_exit_failure to quit the game with a non-zero error code when a vulkan validation fails for CI
ClearUnorderedAccessViewUint handles depth textures properly, fixes
validation error when clearing depth textures
Don't clear initialize texture if this is a rendertarget, scenesystem already handles it
Use RGBA1010102 instead of RGBA8888 for bloom rt, same storage size
Bind all mips for QuarterResEffectsBloomInputTexture, fix bug with lighting on bloom layer
Remove postprocess methods from toolscene
Explicit clear flags for ResolveHDRToFinalSDR
[pick] Bind all mips for QuarterResEffectsBloomInputTexture, fix bug with lighting on bloom layer
👻 Bloom layer 👻 in Bloom2
https://files.facepunch.com/sampavlovic/1b1711b1/i4f9f6CpGL.png
Remove native postprocessing from renderpipeline
Remove stage2 rts from camerarenderer, pointless now, remove parts of postprocess pipeline from it
Remove RenderingPipelinePostprocess
Start removing PostProcessingSystem
Get rid of native PostProcessSystem entirely, current components need reimplementation now
Remove all mentions of stage1/stage2, copy HDR intermediary texture back to SDR if formats are different
Remove Valve's post_process and gaussian blur shader
Remove msaa_resolve tonemap_resolve too, not used
Removed unused stuff from pipeline
Resolve to SDR in correct color space
Add Tonemap and VOlumetricFogManifest in RenderingPipeline
Remove deprecated gaussian bloom blur material
Bloom layer from managed
SetGlobal for all command list methods
Use ToColorHandle in DepthNormalPrepassLayer
Gaussian downsample this bloom layer
Use explicit SampleLevel with Mip 0 for LTC lookup, fixes sampling on vertex shaders
Little more adjustments to area lights scene
Use generated gradients for area lights cookies, good example for texture generators too, looks way better for smoothing things out
https://files.facepunch.com/sampavlovic/1b1511b1/UUFm7KN04h.png
Use normal to calculate normal direction of capsule light, makes it non-bendy
Update area lights scene and test sphere and capsule lights
Capsule and Sphere lights Staging
https://files.facepunch.com/sampavlovic/1b1411b1/KSdcCVtuz8.png
Rectangle Lights (staging)
https://files.facepunch.com/sampavlovic/1b1311b1/eSJokK8WWN.png
Arealights2 Staging
Update shaders
Clean up, get API ready, use light shape rect
Iterate LTC
https://files.facepunch.com/sampavlovic/1b1111b1/7jNhtlWwWu.png
Rename legacy tonemapper to linear, upgrade existing ones using legacy to HableFilmic
LTC Area Lights experiment
Iterate area lights
https://files.facepunch.com/sampavlovic/1b1111b1/sbox-dev_hPxsPa4Lmq.mp4
Bloom adjustments, use biquadratic for smoother lobe, add bloom test scene
https://files.facepunch.com/sampavlovic/1b0911b1/fqAchPQkKt.png
Use linear tonemapping curve instead of hable if none of our managed ones are applied, same behavior we'll have on IPostProcessSystem removal
Don't do atmospherics on toolsvis wtf
Make sure LPVs and lightmaps are resident with highest priority for bindless rendering, same behavior as valve's doing, should solve the texture corruption in hammer maps
Ensure depth fast path is using same material similarity for batching, should fix hammer crashes, re-enable depth fast path for prepass
Temp revert depth pass optimizations for depthnormal layers to fix hammer crash, looking into it
Flag DepthNormal prepass as a depth pass ( scenesystem optimization ) but don't override it's material since we output to color
We're putting fullsort on small prepass which isn't what we want, should be only on large prepass
Bring back two-pass depth prepass with big/small sorting
Iterate from Bloom2 from SceneStaging
Can't always imply pView->GetMainViewport() matches swapchain, make it calculate size of swapchain for passing to managed pipeline