← All ideas
  • Published 17 Sep 2023

Eevee - Denoise shadow

Hey,

Eevee's shadows are very much constant interpolation, with the exception of soft-sampled shadows and with the sampled hashed shadows. All of this is awesome, BUT, if the shadow was denoisable, it would mean less sample would be needed for these types of shadows to process. In other words, you could use Blend alpha with hashed shadows, at like 30 samples (60 for finer polish), which would look great and run fast.

The advantage right now is that the shadows are, by comparison, fairly low-res, so there could very well be real-time denoising that is compatible with older hardware.

Since sampled shadows are distortions of the original (from my limited understanding), denoising before warping would remove the load on the other samples.

This could simply be implemented as a tick box; "Denoise" in the shadow section of the render settings. This should also Anti-alias the shadows, reducing sample cost even more. A split could work too - AA tick box. It will also drastically reduce sample counts where alpha hashed shadows aren't needed.

Objections:
"Just use the denoiser in the compositor"
That's not the kind of denoising that'll work here. Whenever noise samples exceed a 1:1 ratio, the denoiser fails to recognize it as noise. For example, elongated soft noisy shadows will not denoise in post.

"Just AA in post"
Again, same issue, the shadow map is layered across the scene, there is no access to denoise or AA it at the source. It's like saying just denoise your textures in post, when they're so close-up to the camera that they're the equivalent of a 4x zoom.

"It'll make shadows too heavy"
And this is my biggest concern too, which is why I'm saying there should be much closer to real-time denoising, like say from Intel, that might be able to do this with very little additional overhead, and could by extension also AA the image.

"What about the progress on Eevee Next's shadows" Granted, I am aware of this: projects.blender.org/blender/blender/pulls/111809
I'm not however sure of how it'll ultimately handle shadows. If it is from a ray-casting or raytracing approach or local shadow-map approach or even a mix of the two. There are already performance concerns and some technical limitations they already have plans for, so hopefully, this can be an answer to dealing with this in post.

As always, let me know if you agree or disagree! Would love to hear if you know of a workable current approach to denoising the shadows! :D

Blessings!

See projects.blender.org/blender/blender/pulls/111809 for the current development state.

100%

Development Status: Done

Upvote 1 Downvote 0
marius.oberholster
17 Sep 2023

4 Comments

jeroenbakker

Hi, this is a goal for EEVEE-Next and currently in review. There are still some small bugs, but is expected to land within a few weeks. See projects.blender.org/blender/blender/pulls/111809 for more details

2
marius.oberholster Author

AWESOME STUFF!! I wasn't sure whether it would include that kind of denoising! :D

thorn

If the base shadow was of higher quality (without all those jagged edges you can get, especially with hard shadows) then denoising might not be required in the first place.

1
marius.oberholster Author

IKR!! You totally get it!!! :D Thank you, yes!! 🙌🙌🙌