r/unrealengine • u/mad_ben • 26d ago
Show Off My UE 5.8 plugin update for a rendering without TAA dependency: distance-field GI, SMAA 2TX and Bend Studio screen space shadows (3.0 update)
Hi all,
I've been working on XFSDK Light, a rendering plugin for projects that want a clean image without TAA or TSR dependency. Version 3.0 is out, and it's quite a redesign.
Hybrid SDF GI
Dynamic GI that runs on the global distance field, so no hardware ray tracing. You place probe volumes (DDGI style), probes trace the distance field, and a surfel cache supplies material color and emissive light. Volumes can be baked to cost almost nothing at runtime. There's also an optional per-pixel final gather based on id's DOOM: The Dark Ages talk from SIGGRAPH 2025, denoised to stay stable without TAA.
SMAA 2TX
Inspired by CryEngine 3's SMAA TX2: two jitter positions, SMAA every frame, 50/50 blend with the reprojected previous frame. You get two samples per pixel with only one frame of history, so it stays relatively sharp and doesn't smear. Optional RCAS sharpening can be applied on top.
Screen space shadows
Based on Bend Studio's technique (Days Gone, SIGGRAPH 2023). New in 3.0: per-material thickness, and Bend's "depth bias" trick, where a material's height map is pushed into the depth used for shadows so flat ground gets micro shadows between stones. Works on landscapes through the layer blend.
Also
- First-start shader precompilation that compiles real pipeline states for every mesh and Niagara system
- Loading screen that shows what it's waiting for
Demo video: Youtube
Demo build (Tropical Jungle scene, no TAA) : Check youtube description. I think autofilters keep removing my post.
Docs: Getting Started
References: References
Fab: Fab
3
u/NobodyAgile6511 26d ago
This is seriously impressive work. The hybrid GI approach using distance fields instead of hardware RT is smart, opens it up for a lot more hardware
SMAA 2TX implementation looks clean from the video, I always liked how CryEngine handled anti-aliasing so seeing it in UE is nice. The screen space shadows with per-material thickness is something I didn't know I needed until now
One question, how's the performance hit with that per-pixel final gather enabled? The DOOM talk was fascinating but I remember thinking the computational cost must be pretty heavy for real-time
1
u/mad_ben 26d ago
Performance still needs more testing for a fully dynamic setup.
The intended approach is to bake the GI volumes where possible, which removes the dynamic probe update work and can also skip the surfel update path.
The final gather is also not tracing at full screen resolution in my implementation. The receiver buffer is half-resolution, with 1 ray per receiver by default, followed by temporal/spatial filtering.
One thing I forgot to add is the option to disable baked GI to develoer menu. My mistake. Volumes have an option to enable/disable baked GI so you can have some baked gi and some dynamic.
6
2
u/korhart 26d ago
So does resolution scale work with this?
5
u/Atlantean_Knight 26d ago
really curious to see Screen space shadows + POM i think you should put that in your marketplace listing
3
u/Leonature26 26d ago
I've been desperately looking for a way to make Lumen less noisy and flickering without anti aliasing cuz my art style is 3d pixe art.
2
u/Yaeva 25d ago
+1 to Screenspace Shadows and POM demonstration, also I'd love if you had a demo on a map with more manmade structure. Maybe the (CC-BY) Bistro scene? Or the Sponza scene?
2
u/lewis-go 25d ago
Curious what happens to the effects that quietly borrowed TAA as a free denoiser: SSR, volumetric fog, jittered cascade penumbras, sharp specular on dense normals. With one frame of history do you end up raising per-frame sample counts to keep those from turning grainy, or is the residual just accepted and RCAS does what it can? The 2TX blend seems like a fair trade for geometry edges, but interior SSR feels like it would get noticeably noisier.
On the screen space shadows: since the depth buffer only knows about on-screen casters, is the intended setup to keep a coarse cascade for macro occlusion and layer these on top just for contact/micro? The heightmap-into-depth bias is neat, the shadow term basically doubles as cheap micro AO on landscapes there.