Playing with SPPM


#1

For some time, I did basic still lifes. This is the most recent one …

It took me some time to figure out how to use mesh lights with SPPM. Half of photons were wasted, shot into the void. Using emissive meshes with SPPM, Single/Double sided shading does make a difference.

I ran into issues with fireflies, which appeared randomly, and accumulated on each pass. A small bias setup (object level) fixed firefly issue… Today I tried to repeat firefly issues, but I could not succeed.

Anyway, I had much fun playing with SPPM.

Thank you very much for developing appleseed, and blenderseed.


#2

Thanks!

Regarding fireflies, we’re always interested in tracking and fixing their root cause; however they’re sometimes inevitable, and to fight them we recently added a Max Ray Intensity parameter to the SPPM engine that will allow to kill them pretty effectively. This new control should be exposed in blenderseed and made available soon.


#3

To add to this:
There is a setting called Photon Target which allows to declare an object as a photon target and then sampling, especially with image based lighting is much improved for SPPM. The render engine knows then where to shoot photons predominantly and not just in random directions.
This setting is not yet exposed in blenderseed, and has only very recently been added to the Max plugin.

You can use it if you export your scene to an .appleseed file and open it with a text editor (it is an XML format file). There you search for your object (in your case the glass) and add the photon target specifier like in the example for a sphere:

<object_instance name="Sphere001_inst" object="Sphere001.Sphere001">
    <parameter name="medium_priority" value="0" />
    <parameter name="photon_target" value="true" />
    <parameter name="sss_set_id" value="" />
    ...

Save the file and run it with appleseed.studio and you will see that sampling is much improved.


#4

Hallo Franz,
this sounds awesome.
Ray bias on the glass disturb shadow.
Trying to render without bias, still cannot repeat firefly problem … no idea how I did it. But if it occours, I would love an option to control them.

(Sorry, Control + Return posted everything accidently)

Hi Mango3
Photon Target sounds interesting.
Atm, I wait for actual render to finish. But I will give it a try.

Happy blending.


#5

Your answers in other glass thread helped me, to see some mistakes I made.

Another try

The glass has a curious dark area below corner, where liquid ends.

and scene with drappery corrected. (With help of Glass thread and SPPM thread)


#6

Nice render!
Concerning the dark area appearance, have you set different medium priorities for liquid and glass?
Some explanation of the concept is in another thread about rendering a partly filled glass scene: https://forum.appleseedhq.net/t/glass-setup/680/3


#7

Yes. Your post helped me to gasp how to nest fluid in glass. Without nesting priority, whole glass turns dark on fluid area.

I checked ‘liquid’ subdiv mesh. It seems it does not overlap the glass. After change of diameter on artifact area, black area vanished.


#8

I’ve added a note to myself to add the photon_target tag in blenderseed.


#9

Thank you. Photon target would be amazing.


#10

Trying micro animation render. Accidently, I recreated the fireflies issue I described above …

… it is interesting to see, that the most persistent fireflies do not move during animation.

Firefly issue seems to depend on light source.

Probably no firefly issues with ( point light // sun light // spot light // Hemisphere light )

Firefly issues appear with “Area light” object or Mesh with Area Light Material.


#11

Could you send one frame of this animation as an appleseed file?


#12

Ok …

I had problems, everything changed after I played with mesh light. Lighting behaviour changed, I was not able to get it back to old behaviour. A new small project, but same issue.

AreaLight.appleseed (17.6 KB)

Scn.zip (24.9 KB)


#13

Thanks for the test scene, it’s very helpful. It looks like you’ve found a bug in the SPPM code, I’m currently investigating.


#14

First, a few observations:

  • Your light has 2048 triangles, that’s probably unnecessary since it’s just a square.
  • In your SPPM configuration, you disabled caustics. That’s unusual since SPPM is typically used to render caustics. In any case, that means the fireflies aren’t related to caustics.
  • In fact the fireflies also occur in pure unidirectional path tracing mode, that means they aren’t related to SPPM.

It turns out that fireflies are caused by the ground plane being partially (and rough) specular: that’s a difficult situation for any unidirectional path tracer.

I made the ground plane purely diffuse (but still rough) and I increased the frame resolution. Here’s first a render with the Unidirectional Path Tracer, caustics disabled:

Here’s now a render with SPPM with your original settings but with caustics enabled:

Finally, here’s the same render but this time using RT Direct Lighting instead of SPPM Direct Lighting:

Here is a version of your scene with all the fixes applied: AreaLight - repaired.appleseed (21.1 KB)

You can render it in appleseed.studio.

Finally, as I said in my previous post, your scene revealed a small bug that will be fixed in the version of appleseed (or one of the upcoming development build).

Thanks again!


#15

Very interesting analysis!

I was almost clueless. No idea, that the ground materials specular parameter could cause this.

Setting specular weight of ground matte material to zero really fixed firefly issue on little ani, too …

Sadly, not much time … meeting in 20 min …
happy creating