A new rendering engine that uses AI

Heya all,

I finished writing a render engine that speeds up cycles using machine learning last month. I’ve been using it ever since. Just uploaded it to airenderer.com.

Render it to 1/10th the desired samples and it will finish the render off for you… in seconds!

Hope it will save you folks some render time.

sweet, works great



Thanks :slight_smile: http://www.airenderer.com/

sweet, this works.

It would be sweet to have something like this for remeshing :slight_smile: It could automatically find out if it is a charakter etc and where the loops have to go. I wonder if it would be possible to train it on highpoly meshes and the retopologised low poly meshes.

I gave it a go with one of my own scenes, dropped samples for the noisy render to 200 (from around 2500), and uploaded with the opengl render.

Whilst it definitely cleaned up the noise, it also removed a lot of texture detail (wood grain etc.)

I can see it working with scenes that don’t use textures so much for details (e.g. bump/normal/displacement) since the opengl comparison doesn’t have that detail it gets destroyed.



This is very interesting, (extremely)
I assume that you use the OpenGL rendering to tell a neural network about intensity distribution.
Then lift or decrease intensity of the render pixel (since CGI does not make much mistakes in Hue but more in lightness).

I wonder since this is so Fast, and since that recently there was added another denoise method.
Could both denoise method be combined ?, because the one currently in the daily builds of Blender that denoise method
Was not made handle temporal noise (fluctuations over multiple frames), your filter seams to handle that quite well.
The other denoise currently in master, has small fluctuations, not visible in single images, but it gets visible in movies.

And maybe even both techniques could be combined.

OH and what if it was trained with textured openGL preview renders ? (we have those in blender too)

The reason why Blender’s new denoiser doesn’t do temporal-based removal is because it was out of scope for the initial implementation in 2.79, not because it couldn’t be done.

In fact, Lukas had code for it before he switched gears to getting the current version into master (but there’s currently some decent solutions out there that people can use in the meantime, if they don’t mind using external software).