appleseed Users Forum

Why is my SPPM render that noisy?

Hello all!

I’m trying to render an interior scene with SPPM engine, but the result is too noisy. I get the following result on 1M light photons and 0 environment photons:

Is that ok? I use only one emissive plane for light in the window and the room is closed from all sides. Up to the moment I ran out of ideas why the photon map variates so much. Did I set something wrong with materials or lighting?

I’ve uploaded the scene to!Ar-VOp-yqJW09TPiXjcjneUP-_mG . Just in case.

Thank you in advance,

Hi Sergey,
SPPM is tricky to set up and in general one has to play with the settings to optimize for each scene.

Some general recommendations for SPPM:

  • If the scene has blotches but little grain, increase the photon count. If the scene is grainy without blotches reduce photon numbers. There is an optimum ratio of camera rays vs photon number for each pass.
  • Depending on the scene one may have to change the number of environment vs direct light photons ratio.
  • If you use a hdr enviroment, use a low-res hdr for scene lighting.

Now to your specific scene: You don’t use environment lighting, so I switched off Image Based Lighting, increased Light Photon number to 3*10^6, disabled Caustics, and increased the Russian Roulette Start Bounces to 20 and 12, respectively.
Another suggestion is to use a low number of samples (4) but increase the number of passes.
Attached is the changed as_studio file: TD-056_mod.appleseed (166.7 KB)

The image is sampled with 4 samples/pixel/pass and 20 passes.

1 Like

That looks marketedly improved. Would this apply to path tracing? I am busy playing with setting to get a decent render time with as little noise as possible. The noise reduction tool works well, but i find it a bit too aggressive and introduces articfacts. Any way to reduce that?

Pathtracing is quite different in methodology and does not have many of the SPPM specific settings I had changed for the scene above. For an interior scene like that, where the only light comes through a window from outside, many render engines (e.g. cycles) have portals. This helps the engine to sample light more efficiently.

Now if you ask generally, the recommendation in my previous post about using hdr lighting applies to pathtracing as well.
Much depends on the actual scene, especially the lighting and materials. All path tracer share similar issues and generally tips how to render efficiently with Cycles or Arnold mostly apply also to appleseed.

1 Like

Hi Mango3,

First of all, thanks for your time and for your explanations. They helped me greatly to understand the basic SPPM usage!

What baffles me yet is the reason why photon map has so high variance in a closed room like that.

I don’t know very much about SSPM. But as far as I can understand, the algorithm shoots some photons from the light into the scene, bounces them off given some number of times, and stores the contribution of each bounce for the set of the scene points visible from the camera.

This way, since pixels get interpolated contribution from some closest photon bounces, I thought that the result should be smooth even at a low number of photons. Based on my logic - it should be just less detailed on less photon count.

Could you please explain to me where I was mistaken?

First, I’m not the most qualified person to answer this but nonetheless. What you describe is standard Photon Mapping, SPPM is a variation of this principle (see image). After an initial eye pass the following photon passes trace photons from light sources and update statistics (photon count, flux) on the hit points within a search area. SPPM uses randomly generated hit points by the distributed ray tracing passes.

Now, why there is so high variance depends on the photon number you use and the search radius setting. SPPM is an unbiased algorithm, it converges to the correct light distribution within a bounded memory. But that doesn’t tell you how fast the rate of convergence is:

More information can be found in Prof. Hachisuka’s presentation:

1 Like

To be completely correct: SPPM is actually a biased algorithm: at every stage there is bias in the form of blurring artifacts (due to the density estimation process). However it is a consistent algorithm in that the bias will tend toward zero as render time tends toward infinity. In practice that means that the bias (blurring) will no longer be visible after some time.

Thank you very much! Now it’s clear for me.

… but for an interior like this one it is, classical architectural interior, suggested to go for SPPM or a path tracer?

Thank you,

This depends strongly on your scene. Even for standard interior scenes the algorithm to use first would be the path tracer. If that one fails to give usable results or you have lots of caustics in your scene then switch to Progressive Stochastic Photon Mapping.

The scene above is difficult for pathtracer because the room is only lit through a window from outside.
The smaller the window, the more difficult this gets to render. The pathtracing algorithm emits rays from the camera into the scene until it hits an object and then needs to find a path to the light source. If the light source is small and difficult to connect to from the hit-point , the chance that a ray finds it is small (see image from Prof. Hachisuka’s presentation).

1 Like

Thank you,

I tried the parameters suggested in this interesting thread but I don’t get nice results with sppm (while path tracer is easier…).

I get that image:

But I don’t want to pollute this thread… should I open another one?
I can upload the blend.

Thank you,

Hi @rickyx
Thanks for showing your wip scene here. It fits exactly to the illustration above. The threads topic is about SPPM noise specifically and I would suggest to open a new thread (with the blend attached) along the more general line “interior scene - noise reduction suggestions” because you seem to be overall interested in how to use appleseed for interior scenes.

I would also suggest you to join Discord, then you will get real time feedback from the developers and you have an overview of the newest features which are in implementation.

1 Like

So, Serje started with 1M light photons. To my eyes, that render looks grainy, not blotchy, and your first suggestion says then to reduce photons, not increase them - but you increased them to 3M. What am I missing here?

I stated that the recommendations in the pointed list above are for general SPPM use. Increasing light photons has a direct cost on memory, less so on cpu time. Increasing helps usually but there is an optimum for best efficiency.
Now for Serje’s case I specifically gave also a couple of other settings which were not optimal and they all contributed to the way the rendered image looked. I don’t pretend that my suggestions are the optimum for his scene but they are clearly an improvement.

Some more info on how to improve SPPM render.

One point is avoid illumination by an environment (especially sky-light) if the scene allows and use a dedicated light sources or light emitting material. This is more a sampling issue, the large environment is difficult to sample efficiently (for HDRI in Lat/Long format multiple importance sampling is implemented)

Below are two (similar but not identical) SPPM scenes rendered with the same amount of 1000 samples/pixel. The top one, purely lit by an emissive surface and no environment contribution, is fully converged without fireflies while the bottom one with an added sky-light environment shows fireflies and poorer sampling (contrast was enhanced in post-processing to emphasize the effect.)
Ps) Render Stamp shows incorrectly too high time (the render was paused in-between)
PPs) The lens-array scene was inspired by a similar scene by FarbigeWelt posted in the LuxCore Forum

1 Like

Further update:
In my previous post I suggested to avoid illumination by an environment (especially sky-light) if the scene allows. This is still true if one wants to avoid editing manually the appleseed project file.
That said, appleseed has implemented Photon Targets which can be defined on a per object basis and which tell the renderer where to predominantly shoot photons instead of randomly into the scene. This improves markedly sampling performance for scenes lit by an environment.

As a comparison, below shows the same lens-array scene with sky-light environment as posted above
(all lenses were declared as Photon Targets) with the same number of 1000 samples/pixel.
Now the scene is fully converged and does not show any of the image artifacts (fireflies) which can be seen without using Photon Targets.
Photon Targets are not yet exposed in any of our DCC plugins but they will be added in the future.

Is that ok? I use only one emissive plane for light in the window and the room is closed from all sides. Up to the moment I ran out of ideas why the photon map variates so much. Did I set something wrong with materials or lighting?

Hi @shontie,
Welcome to the forum!

An emissive plane in the window should work.

  • Try to use as many Light Photons per render pass as memory allows. Using only the emissive surface for lighting you can then switch off Environment Emits Light then and set Environment Photons = 0.
  • Use the Uniform Sampler with a low number of samples (2-4 ) and increase the number of Passes accordingly.
  • Reduce the initial photon gathering search radius Initial Radius from 0.1 (% of the scene diameter) to lower values 0.05 - 0.01 if fine details seems to be too blurry. The image will become more grainy but less blurry - the grainy structure will disappears later with more passes when the render converges.
1 Like


This is a recommendation when using SPPM. The photon map is regenerated at every pass so having many passes is beneficial. The image quality is mainly determined by the total number of samples (per pixel). This is the product of samples per render pass * number of render passes. So you have 2 choices to get your total sample number: either low number of passes but a high samples/pass number or a high number of passes with a low number of samples/pass. The latter is the better choice for SPPM render.

1 Like