Page 1 of 2

LuxCore: render engine unification

PostPosted: Fri Feb 10, 2017 7:07 am
by Dade
Introduction

The recent unification of PATHOCL and BIASPATHOCL OpenCL code (viewtopic.php?f=8&t=13129) suggest a rework of how LuxCore engines are named, used and proposed in application like exporters (i.e. LuxBlend, LuxMax, etc.). The is a step that may break the compatibility with the past but it is something better to do first than later.

A single path tracer with few flags

LuxCore path tracers should be now proposed like a single path tracer render engine with few flags:

  • Enable/Disable OpenCL (BIASPATHCPU/PATHCPU Vs BIASPATHOCL/PATHOCL);
  • Enable/Disable tile rendering (BIASPATH Vs PATH);
  • Enable/Disable real-time (RTBIASPATH Vs BIASPATH/PATH);

When PATH is enabled, there should be an additional combo box to pick the sampler.
When BIASPATH is enabled, there should be few additional options about the tile size.

Any other rendering options, I can think to, is now shared among BIASPATH and PATH.

A single bidirectional path tracer

It is quite pointless to use BIDIR without METROPOLIS sampler so it should be the default setup. SOBOL/RANDOM sampler may be still offered as an option (may be, hidden in an advance option panel). Forget BIDIRVM, it will come back only when I, or someone else, will implant the something like http://www.ci.i.u-tokyo.ac.jp/~hachisuk ... m_mcmc.pdf in order to have VM and Metropolis finally work well together.

Changes

The above scheme requires few changes. Some may be even annoying (i.e. breaking the compatibility with the past) but they are are a good step in the direction of simplification, homogenization, unification, etc. The list is:

  • Rename BIASPATHOCL in TILEPATHOCL;
  • Rename BIASPATHCPU in TILEPATHCPU;
  • Rename BIASPATHSAMPLER in TILEPATHSAMPLER;
  • Drop RTPATHOCL;
  • Rename RTBIASPATHOCL in RTPATHOCL;
  • Make TILEPATHCPU works exactly like TILEPATHOCL (at the moment it has still the support for path split, something not supported by TILEPATHOCL);

This list change will lead to BIDIRCPU and a coherent set of different path tracers working as explained in the second paragraph ([RT or TILE or nothing]PATH[OCL or CPU]). If no one has a good reason to not proceed, I will apply this list of changes.

Re: LuxCore: render engine unification

PostPosted: Fri Feb 10, 2017 8:07 am
by neo2068
I think, that this is a good idea and the unification of the renderengines to the main algorithms with reasonable default values will make it easier for beginners and artists to use Luxrender.

Re: LuxCore: render engine unification

PostPosted: Fri Feb 10, 2017 9:19 am
by B.Y.O.B.
Sounds good to me.

Re: LuxCore: render engine unification

PostPosted: Fri Feb 10, 2017 12:23 pm
by crosley09
Awesome. This makes a ton of sense.

Re: LuxCore: render engine unification

PostPosted: Sat Feb 11, 2017 1:30 am
by Piita
Yep, sounds good.

Re: LuxCore: render engine unification

PostPosted: Sat Feb 11, 2017 4:22 am
by tomb
Good idea

Re: LuxCore: render engine unification

PostPosted: Mon Feb 13, 2017 4:43 am
by sharlybg
Forget BIDIRVM, it will come back only when I, or someone else, will implant the something like http://www.ci.i.u-tokyo.ac.jp/~hachisuk ... m_mcmc.pdf in order to have VM and Metropolis finally work well together.


This paper sound like Angel music ! can't also stop imagine it on steroids GPU. when nvidia will support opencl 2.0

Re: LuxCore: render engine unification

PostPosted: Mon Feb 13, 2017 4:49 am
by hedphelym
Sounds good to me too!

Re: LuxCore: render engine unification

PostPosted: Mon Feb 13, 2017 6:38 am
by povmaniaco
Sounds like a lot of work.. indeed.

Re: LuxCore: render engine unification

PostPosted: Mon Feb 13, 2017 7:16 am
by Dade
I have done:

Dade wrote:
  • Rename BIASPATHOCL in TILEPATHOCL;
  • Rename BIASPATHCPU in TILEPATHCPU;
  • Rename BIASPATHSAMPLER in TILEPATHSAMPLER;
  • Drop RTPATHOCL;
  • Rename RTBIASPATHOCL in RTPATHOCL;


and working on:

Dade wrote:
  • Make TILEPATHCPU works exactly like TILEPATHOCL (at the moment it has still the support for path split, something not supported by TILEPATHOCL);


NOTE: I have renamed any reference to "bias" into "tile", including symbols like BIASPATHSAMPLER and properties like "bisapth.*" into "tilepath.*", "stats.biaspath.*" into "stats.tilepath.*", etc. It should be quiete easy to update any code using LuxCore API by just searching for any occurrence of "bias" string inside the sources.