Transitioning from VRay to LuxCoreRender

Discussion related to the LuxCore functionality, implementations and API.
epilectrolytics
Donor
Donor
Posts: 790
Joined: Thu Oct 04, 2018 6:06 am

Re: Transitioning from VRay to LuxCoreRender

Post by epilectrolytics »

happyboy wrote: Fri Jun 28, 2019 6:15 am BTW: While I know color bleeding is physically correct, I often think the bleeding looks MORE than it should. Are there other ways to reduce color bleeding while still being physically correct?
You should look into filmic tonemapping.
I'm no expert on this, but I read that filmic reduces saturation in the bright parts of an image which also means reduced color bleeding.
Filmic is available through Blender.
User avatar
B.Y.O.B.
Developer
Developer
Posts: 4146
Joined: Mon Dec 04, 2017 10:08 pm
Location: Germany
Contact:

Re: Transitioning from VRay to LuxCoreRender

Post by B.Y.O.B. »

happyboy wrote: Fri Jun 28, 2019 6:15 am I can currently think of two approaches:

1. write an ImagePipeline plugin, manipulating AOVs before OIDN
2. LuxCore only renders to AOVs, then I write a separate program to process AOV, then call OIDN manually.

Are there any other approaches? Which one is preferred?
OIDN is already a separate imagepipeline plugin.
You can use the output_switcher plugin to choose the input AOV of an imagepipeline, then add the OIDN plugin, and then any additional plugins you might want.
Like this:

Code: Select all

# Pipeline for indirect diffuse light
film.imagepipelines.0.0.type = "OUTPUT_SWITCHER"
film.imagepipelines.0.0.channel = "INDIRECT_DIFFUSE"
film.imagepipelines.0.1.type = "INTEL_OIDN"
film.imagepipelines.0.2.type = "TONEMAP_LINEAR"
film.imagepipelines.0.2.scale = 1.5

# Pipeline for indirect glossy light
film.imagepipelines.1.0.type = "OUTPUT_SWITCHER"
film.imagepipelines.1.0.channel = "INDIRECT_GLOSSY"
film.imagepipelines.1.1.type = "INTEL_OIDN"
film.imagepipelines.1.2.type = "TONEMAP_LINEAR"
film.imagepipelines.1.2.scale = 1.5

# etc.
You can create any number of imagepipelines with any AOV as input.
However, I do not know how good OIDN works with AOVs other than the combined image. Since it's a trained neural network, it's hard to tell.
happyboy
Posts: 63
Joined: Sat Jun 22, 2019 5:39 am

Re: Transitioning from VRay to LuxCoreRender

Post by happyboy »

B.Y.O.B. wrote: Fri Jun 28, 2019 6:44 am You can create any number of imagepipelines with any AOV as input.
However, I do not know how good OIDN works with AOVs other than the combined image. Since it's a trained neural network, it's hard to tell.
Thanks! But are imagepipelines "linear"? I mean, is it possible to "merge" the processed AOVs back to a new "beauty" channel and let OIDN operate on it? I'm also worried about its effectiveness with other AOVs.
happyboy
Posts: 63
Joined: Sat Jun 22, 2019 5:39 am

Re: Transitioning from VRay to LuxCoreRender

Post by happyboy »

epilectrolytics wrote: Fri Jun 28, 2019 6:27 am You should look into filmic tonemapping.
I'm no expert on this, but I read that filmic reduces saturation in the bright parts of an image which also means reduced color bleeding.
Filmic is available through Blender.
yeah... I'm aware of filmic tonemapping. We use it in real-time renderings... We'll try and see how well it does for offline renderings :) Thanks!
User avatar
B.Y.O.B.
Developer
Developer
Posts: 4146
Joined: Mon Dec 04, 2017 10:08 pm
Location: Germany
Contact:

Re: Transitioning from VRay to LuxCoreRender

Post by B.Y.O.B. »

happyboy wrote: Sat Jun 29, 2019 6:25 am Thanks! But are imagepipelines "linear"? I mean, is it possible to "merge" the processed AOVs back to a new "beauty" channel and let OIDN operate on it? I'm also worried about its effectiveness with other AOVs.
If you use a linear tonemapper, the results are linear and you can just add them together.

I think your idea is even better than mine: desaturate the noisy indirect light AOV a bit, then add the noisy AOVs together, then denoise - this might work much better than denoising the individual AOVs and then adding them.

You can combine them like in this example:
Attachments
2019-06-29_11-51-33.png
aov_mix.blend.zip
(133.87 KiB) Downloaded 198 times
happyboy
Posts: 63
Joined: Sat Jun 22, 2019 5:39 am

Re: Transitioning from VRay to LuxCoreRender

Post by happyboy »

B.Y.O.B. wrote: Sat Jun 29, 2019 9:54 am If you use a linear tonemapper, the results are linear and you can just add them together.

I think your idea is even better than mine: desaturate the noisy indirect light AOV a bit, then add the noisy AOVs together, then denoise - this might work much better than denoising the individual AOVs and then adding them.

You can combine them like in this example:
ah yes.. simply adding them together :)

But it seems that you're using Blender's nodes rather than luxcore's image pipeline (my current computer doesn't have Blender installed)?
Can I do this easily only with luxcoreconsole (or pyluxcore's console)? It's ok if it can't, because writing a separate program to do simple image processing is no big deal, just asking :)

And you inspired me of a possible solution to a problem in my original post: how to mimic VRay's "affect_reflections=false" feature. Just add all such lights into a separate radiance group and render all separate AOVs for both radiance groups (default and "no-reflection" one), DON'T add up "no-reflection" radiance group's indirect light AOVs. That's all.

It looks good in theory, but I haven't (yet) found an easy way to get two sets of AOVs for both radiance groups... Rendering twice should work (disabling one group in each render), but of course I want to do it with a single render.
User avatar
B.Y.O.B.
Developer
Developer
Posts: 4146
Joined: Mon Dec 04, 2017 10:08 pm
Location: Germany
Contact:

Re: Transitioning from VRay to LuxCoreRender

Post by B.Y.O.B. »

happyboy wrote: Sat Jun 29, 2019 3:25 pm But it seems that you're using Blender's nodes rather than luxcore's image pipeline (my current computer doesn't have Blender installed)?
Can I do this easily only with luxcoreconsole (or pyluxcore's console)? It's ok if it can't, because writing a separate program to do simple image processing is no big deal, just asking
It's not possible in the LuxCore imagepipeline, but you can use numpy or an external commandline image-editing program, e.g. imagemagick.
happyboy
Posts: 63
Joined: Sat Jun 22, 2019 5:39 am

Re: Transitioning from VRay to LuxCoreRender

Post by happyboy »

B.Y.O.B. wrote: Sat Jun 29, 2019 3:45 pm It's not possible in the LuxCore imagepipeline, but you can use numpy or an external commandline image-editing program, e.g. imagemagick.
Ok! Thanks. And what about the "radiance group" part? Is it possible to get AOVs for multiple radiance groups in a single render? Or maybe it's not possible with console but can be done by directly calling SDK?
User avatar
B.Y.O.B.
Developer
Developer
Posts: 4146
Joined: Mon Dec 04, 2017 10:08 pm
Location: Germany
Contact:

Re: Transitioning from VRay to LuxCoreRender

Post by B.Y.O.B. »

happyboy wrote: Sun Jun 30, 2019 12:56 am And what about the "radiance group" part? Is it possible to get AOVs for multiple radiance groups in a single render?
Hm, not sure. You can try to disable some groups in one of the imagepipelines containing output_switcher and see if it changes the result:
https://wiki.luxcorerender.org/LuxCore_ ... ance_Group
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: Transitioning from VRay to LuxCoreRender

Post by Dade »

Yes, radiance group scales are a image pipeline setting so you can different values for each image pipeline. You can get different images (i.e. day Vs. night, etc.) out of a single rendering.

Note: PhotonGI doesn't support radiance groups at the moment.
Support LuxCoreRender project with salts and bounties
Post Reply