LuxCore bidirectional caustics quality

Please use this forum for general user support and related questions.

Moderators: Dade, coordinators

Forum rules
Please include your operating system type/version, LuxRender version and Exporter version used when submitting a support post.

Make sure you have read the Release forum thread for Release and RC (Release Candidates) builds as these threads contain information on known problems and workarounds: Test Builds Forum

LuxCore bidirectional caustics quality

Postby Philstix » Thu Jan 11, 2018 12:31 am

I've always used LuxRender Classic API with the default bidirectional render mode, but I've read that users should transition to LuxCore.

I tried doing a very simple render - a Glass2 sphere above a white plane, lit by the 'Sun and Sky' environmental light - and the quality of the caustics produced by the LuxCore bidirectional renderer was very poor compared to the Classic API with the default bidirectional renderer.

Is there something I need to change to get LuxCore bidirectional to work?

I expect there is something obvious I'm overlooking, but so far it's eluding me.

I'm using Blender 2.79 with LuxRender version 'lux-opencl_linux64_18-12-2017', but I got the same result when I repeated the renders with 'lux-v1.6-x86_64-sse2-OpenCL'.

My OS is Xubuntu 16.04, running on an i7-4790K CPU @ 4.00GHz with 32 Gb of RAM.

Classic API in LuxCore bidirectional mode:
luxrender_classic_luxcorebidir_metropolis.png


LuxCore API in LuxCore bidirectional mode:
luxrender_luxcore-api_luxcorebidir_metropolis.png


Classic API in default bidirectional mode (The render time displayed is incorrect, because I didn't close the LuxRender window immediately. It actually took about 14 minutes):
luxrender_classic_bidir_metropolis.png


The .blend file:
2018-01-11_11-54-08.blend
(1.06 MiB) Downloaded 46 times
Philstix
 
Posts: 36
Joined: Tue Sep 23, 2014 5:30 pm

Re: LuxCore bidirectional caustics quality

Postby Dade » Thu Jan 11, 2018 2:55 am

A quite strange problem, it tooks some time to understand where it was.

It is a numerical precision problem. You are rendering 10cm sphere over 20x20m planes. It is the size of the plane (i.e. the scene bounding sphere) to trigger the problem. If you resize the plane from 20x20m to, for instance, 0.5x0.5m the problem goes away.

Infinite light sources (like sun, sky, etc.) includes the square of the radius of the scene bounding sphere in some computation and it is clearly triggering a numerical precision problem here (i.e. you run out of FP32 resolution). I'm checking the code to track exactly what is going wrong.

P.S. in your test, LuxCore is about 8-10 times faster than classic Lux. It isn't exactly a small detail.
User avatar
Dade
Developer
 
Posts: 8404
Joined: Sat Apr 19, 2008 6:04 pm
Location: Italy

Re: LuxCore bidirectional caustics quality

Postby Dade » Thu Jan 11, 2018 6:45 am

I have spent a lot of time digging in MIS computation of bidirectional path tracing code looking for an error ... and the problem was in the scene bounding sphere computation :roll:
Long story short: your already problematic "10cm in 20x20m" was rendered like "10cm in 200x200m" causing the problem I described above I should have fixed the problem:

bidir.jpg


Note: reducing the 20x20m plane is still useful and helps to reduce the noise.

P.S. I can send you the information to access the fixed code if you want.
User avatar
Dade
Developer
 
Posts: 8404
Joined: Sat Apr 19, 2008 6:04 pm
Location: Italy

Re: LuxCore bidirectional caustics quality

Postby Philstix » Thu Jan 11, 2018 2:03 pm

I'm impressed with how quickly you found the problem. 8-)

It shouldn't be an issue for me because I don't usually render scenes like that - I started with a large plane because I was going to create a test scene with meshes using Blender's default object size of a metre, but I then decided to test the caustics instead with a small sphere, and I just left the plane as it was. Now that I know what caused the problem it will be easy to avoid in future.

And yes, the speed of the LuxCore renderer is a wonderful improvement. The main thing that's prevented from using LuxCore is the lack of support for network rendering, which I use regularly. Perhaps I need to find some other way of sharing the render load across multiple machines.

I don't have my system set up for development, so I'll just persist with the latest binaries for now.

Thanks for your help.
Philstix
 
Posts: 36
Joined: Tue Sep 23, 2014 5:30 pm

Re: LuxCore bidirectional caustics quality

Postby Philstix » Thu Jan 11, 2018 9:11 pm

Philstix wrote:The main thing that's prevented from using LuxCore is the lack of support for network rendering.


Doh! I just checked and LuxCore Bidirectional in Classic API supports network rendering! My bad. (I could have sworn I checked that previously... I must be going senile...)
Philstix
 
Posts: 36
Joined: Tue Sep 23, 2014 5:30 pm

Re: LuxCore bidirectional caustics quality

Postby Meelis » Sun Jan 28, 2018 6:41 am

Was the scene bounding sphere computation bug also in BIDIRVMCPU with classic LuxRender?

About that FP32, is there speed penalty rendering object with polygons below 0,1mm in 50m diameter scene?

The "bidirvm.startradius.scale = 0.0084"
Works it like 0.0084 x 50m = 0.42m (is this good or bad starting point)?
User avatar
Meelis
 
Posts: 1009
Joined: Sat Oct 17, 2009 2:16 am


Return to LuxRender User Support

Who is online

Users browsing this forum: Bing [Bot] and 1 guest