appleseedhq / appleseed

A modern open source rendering engine for animation and visual effects
https://appleseedhq.net/
MIT License
2.2k stars 329 forks source link

Print a warning when doing multipass rendering but pixel decorrelation is off #316

Closed dictoon closed 10 years ago

dictoon commented 10 years ago

Multipass rendering is a technique that does multiple passes over the whole image, with each pass adding a fixed number of samples to every pixel.

The two other techniques are single-pass rendering, where a fixed number of samples is computed at once for every pixel, and progressive rendering where samples are added "randomly" across the entire image plane, allowing to have a quick overview of the entire image before convergence is achieved.

When doing multipass rendering, the Decorrelate Pixels option must be enabled. In fact, in the user interface, Decorrelate Pixels is automatically checked (and grayed out) when the number of pass is greater than 1:

image

However, a hand-edited project file or one that was generated by an exporter may have Decorrelate Pixels disabled even though multipass rendering is enabled. The goal here is to detect this configuration and print a warning message when rendering starts.

Unfortunately, it appears not to be easy to do it cleanly.

The problem is the following: the number of pass (which triggers multipass rendering when that number is > 1) is a parameter of the "generic_frame_renderer" component:

<parameters name="generic_frame_renderer">
    <parameter name="passes" value="1" />
</parameters>

while the Decorrelate Pixels flag is a parameter of the "uniform pixel renderer" component:

<parameters name="uniform_pixel_renderer">
    <parameter name="decorrelate_pixels" value="true" />
</parameters>

By default, these two components can't see each other's parameters.

The obvious solution is to copy the number of rendering passes to the uniform pixel renderer's parameters. We already do this kind of things occasionally: https://github.com/appleseedhq/appleseed/blob/5c83ad129968e2807de0a33e90fe056e517e7aef/src/appleseed/renderer/kernel/rendering/masterrenderer.cpp#L623

camargo commented 10 years ago

Has anyone been working on this? If not I'll give it a shot.

[EDIT] Will be working on this after finals next week. [EDIT] Done with finals. Working on this now.

dictoon commented 10 years ago

Not that I know, you can go ahead!

On Thursday, March 13, 2014, Chris notifications@github.com wrote:

Has anyone been working on this? If not I'll give it a shot

Reply to this email directly or view it on GitHubhttps://github.com/appleseedhq/appleseed/issues/316#issuecomment-37593249 .

garvitverma commented 10 years ago

Is anyone working on this one ? can i give it a shot?

On Fri, Mar 14, 2014 at 3:42 AM, François Beaune notifications@github.comwrote:

Not that I know, you can go ahead!

On Thursday, March 13, 2014, Chris notifications@github.com wrote:

Has anyone been working on this? If not I'll give it a shot

Reply to this email directly or view it on GitHub< https://github.com/appleseedhq/appleseed/issues/316#issuecomment-37593249>

.

Reply to this email directly or view it on GitHubhttps://github.com/appleseedhq/appleseed/issues/316#issuecomment-37593447 .


Regards, Garvit Verma BITS PILANI-K.K. Birla Goa Campus M.Sc(Tech.) Information Systems President,Computer Graphics Club Autodesk Student Expert

dictoon commented 10 years ago

Chris is already on it.

dictoon commented 10 years ago

Done.