Experimental 2.77 Cycles Denoising build


(lukasstockner97) #1

Hi!

I’ve been playing around with LWR denoising for Cycles (for details, see here) for a while now, and have now finished a working and usable demo version of it - just in time for the GSoC proposal.

So far, the denoiser is pretty simple to use - in the Sampling panel, just activate “Use LWR filtering”.
The options are:

  • Half Window size: Pixels up to this distance will be used in thedenoising step - increasing this value will make the denoiserslower, but helps to get rid of a “splotchy” look on flat surfaces(but might also blur things slightly more).
  • Bandwidth factor: This value allows to make the denoising more or less aggressive - the default of 0 should usually be fine except for hair/fur/grass
  • Per-pass filtering: Enabling a pass here makes the denoiser filter it separately and then combine with the other filtered results - should improve results in theory, but not really useful in practise yet (also, you need to enable the corresponding render pass as well as its color pass - e.g. DiffDir and DiffCol if you want to denoise Diffuse Direct separately)
  • Additionally, in the performance settings, an option called “Prepass samples” was added: Setting this to some value (like 16) will make Cycles render (and denoise, if you have it activated) the image with 16 samples before rendering the remaining samples, to provide a quick preview.

Currently, the denoising still has some problems with fine geometry - bump- or normal-maps as well as grass/hair/fur tend to be overblurred. There are ways to improve this a lot, but I need some remaining to-do items for my GSoC proposal ;).
Also, hard shadow edges may currently be overblurred, but just like above, there are ways to fix this in the future.

Generally, though, you should keep in mind that denoising is not magic: It can improve an image, but it can’t magically make detail appear where there is none in the noisy input. As a rule of thumb, if you couldn’t recognize something in the noisy image, the denoiser won’t be able to do so either.
This doesn’t mean that you can’t use it for quick previews - you can, but don’t expect production-quality results from 16 samples ;).

The denoising works on both CPU and GPU, although GPUs might run into problems because the current code uses a lot of extra memory when enabling LWR, at least for large images. Again, this can and will be improved in the future.

Animations might be tricky because of flickering - this could in theory be resolved with inter-frame filtering, but there’s no way to implement this in Blender, since every frame is rendered individually :(.

Also, as a final note, I’m pretty sure that at least Viewport rendering is broken in this build, and I didn’t test that much in general, so I don’t recommend using this build for serious work (yet).

So, it’d be awesome if you could test the denoiser a bit and give me some feedback regarding usefulness/shortcomings/etc., especially since I’m currently finishing my GSoC proposal for a more stable implementation.
And, of course, here’s the link: https://dl.orangedox.com/Kr1KBVHyQI6ARVNm0w


(English is not my native language) #2

Hi.
Thank you. Is there a repository to download the source and try to compile on Linux?


(lukasstockner97) #3

Yep, of course, here’s the code: https://github.com/lukasstockner/blender/tree/lwr_demo


(cekuhnen) #4

Any OS X builds?


#5

DEAR GOD I CAN NOT EXPRESS MY THANKS ENOUGH LUKAS STOCKNER(got your name right this time :wink: )

THANK YOU!

This was the one feature that I feel that blender, actually needs to be on par with the others

again, thanks!(I do have some suspicions that this won’t make it into trunk for what ever reason though… like Adaptive sampling[I know that there was a reason but I’m still a bit salty about it ])


#6

I will run some tests… see how it pans out.

will also compare it to C4D’s denoiser.


(lukasstockner97) #7

I just pushed the whole thing to the buildbot (as an experimental build, of course, not in master :wink: ) - I’ll post a link here once it’s done (same for Linux).

@fdfxd: Heh, glad that it’s useful :smiley: The chances that some denoiser will end up in master are pretty good, considering it’s been added to the GSoC ideas list. This code right here won’t go to master, that was never its purpose - it’s just a proof-of-concept implementation to check whether LWR is good enough.


(marcoG_ita) #8

Woah! Downlaoding now, will run some tests. Thanks Lukas (again)


(marcoG_ita) #9

Hi Lukas, it seems I can’t use the per-pass feature correctly. It renders the image, then filter the different passes, but it doesn not show back the final image, the rendered frame stays as the last pass it filtered.

Any ideas?

http://www.pasteall.org/pic/show.php?id=100935


(kaltyiontrish) #10

I tested the build as well!
Very good so far, thank you!

Will bake be “compatible” with the denoiser?


(English is not my native language) #11

That would be great, because I have error when trying to compile on Linux.
Anyway, restarting on Windows some tests with Sponza scene:
Labels are: The first number are Samples, then Clamping. Then for Denoise: hw=Half Window and Bf=Bandwith factor:

(They are png images, so you wait a bit until the image is loaded)











I really wish you success with this project, this would lead to Cycles at a much higher level. I will test how it works in animations.
Thank you very much.


(Pitiwazou) #12

My test.


(English is not my native language) #13

Hi.
Why in this scene the material “stone_funky_lava” (first sphere top left) is losing much more detail than the others with the same configuration?
http://www.pasteall.org/blend/41200


(gexwing) #14

Just by playing around it seems very impressive. Certainly would be a great GSoC project!

I had some random black dots appear on some parts of the image, by playing around with the LWR and Sampling parameters i got the effect to an extreme, where nearly an entire triangle is black:

Blend file: http://www.pasteall.org/blend/41203

Attachments



(Quacker) #15

A quick initial test, looking good! Will do more testing later.

http://i.imgur.com/kESE7SK.jpg


(lenain34) #16

Awesome! Thank you lukas, will test it later!


(kanishk2391) #17

Looks pretty solid…
Could not get it to work on fur that well
But yeah these clean images make me happy :slight_smile:
Thank you lukas :yes:


Website

Attachments




(mib2berlin) #18

Yep it is really nice. :yes:

600 Samples without LWR 04:22.44

stc=1

600 Samples with LWR 04:47.49

stc=1

Cheers, mib

Attachments




(marcoG_ita) #19

I got troubles with high frequency details on glossy surfaces, it blurs out a lot. Will post an example later if I can.

Other tests are pretty cool
http://www.pasteall.org/pic/show.php?id=100946

http://www.pasteall.org/pic/show.php?id=100947


(cekuhnen) #20

Do I see my Blender models here :wink:

Macro can you upload a larger rendering with and without the denoiser? I am really curious about the wood floor texture
and also the glossy issues you mentioned.