Eliminating reflection flicker

Started by JasonA, October 15, 2012, 09:35:56 AM

Previous topic - Next topic

JasonA

Hi all,

Im having a problem where I get a heavy amount of flickering in smooth water surfaces in my scene.  It does not appear to be a GI related issue as Ive cached the GI and everywhere there is no water, things are fine.  But on the water surface i get alot of reflection popping.  I have some trees and clouds which both show up in the reflection and their value changes from frame to frame, yet only in the reflection.  the primary rays appear to be fine as the trees and clouds and trees are not flickering there, only on the water surface.  Its bad enough that I cannot fix it in post.  Are there any good tips or tricks to avoid this from happening?

Tangled-Universe

Water's reflections are ray traced reflections and I know that when you use a reflective shader with ray traced reflections also a lot of heavy flickering occurs.
So it may have to do with that.
If you set the water shader's reflectivity to 0 and connect a reflective shader in between the water shader and the lake object then the popping should disappear.
Make sure you have disabled ray traced reflections in the reflective shader.
This way you keep the shapes of your water and you can confirm whether it's ray traced reflections.

If it's indeed ray traced reflections then *may be* it might help to increase the ray detail multiplier.
You can find that in the "render subdiv settings" node inside the render node's internal network.
This increases the amount of rays being calculated and I think it may therefore increase accuracy of the reflections and thus reduce flickering.
It's a bit of a long shot though and it will definitely increase rendertime.

I'm curious what your other settings are though and whether you used the animation check button?

Cheers,
Martin

penboack

That's interesting, I've been experiencing the same issue working with a lake scene, but haven't had time to post.
As soon as I set the Water shader > Reflectivity to 0 and connected a Reflection shader between the Water shader and the Lake the white specks disappeared without altering the render subdiv settings > ray detail multiplier.

Previously to produce a final image I set Water shader > Highlight intensity to 0 (default 0.5) and then used the following render settings; AA = 6, Level of Detail = 1.0.

The final image showed http://penboack.deviantart.com/art/Terrasee-1-331666455 showed minimal artefacts, but they were present.

I've subsequently tried a number of render settings, such as increasing GI sampling, or increasing AA, but with no improvement.

Thanks TU for your suggestion.

In this image the Water shader is producing the reflections using its default settings, AA set to 6, Detail set to 0.8.
White artefacts on the water surface.
[attachimg=1]

In this image the Water shader reflections are set to 0, Reflective shader is producing the reflections, AA set to 6, Detail set to 0.8.
Reflective Shader, 4 samples (default number of samples)
White artefacts on the water surface greatly reduced.
[attachimg=2]

In this image the Water shader reflections are set to 0, Reflective shader is producing the reflections, AA set to 6, Detail set to 0.8.
Reflective Shader, 16 samples
White artefacts on the water surface greatly reduced.
Very slight improvement over the previous image.
[attachimg=3]

Dune

Interesting problem and good that you guys posted this. The images are very enlightening.
ps. Penboack; I would have added another species (or 2) of tree to your final image; the twist of the branches is very uniform in this object. Too bad, as it's a pleasant image.

penboack

Dune, thanks for looking.
That image is actually using 3 species in 3 variations with 3 separate sets of populations (to cut down the time the populators need to populate), so 27 populations in total.
I spent a lot of time trying to eliminate the branch twist repetition in the Larix decidua (European Larch) but to no avail. I don't have the Xfrog software (yet) so wasn't able to look at the model or create additional variations. It also has leaf colour variation implemented on one species and its variations, but unfortunately this wouldn't work on the Larix decidua http://www.planetside.co.uk/forums/index.php?topic=15094.0.
I think that changing the proportions might break up the repetition, but too many other projects to work on...

Anyway I'm really pleased to be able understand how to create better water surfaces.
I do wonder though whether the default Water shader setup would benefit from some improvement, as it's not very obvious to new users how to fix this type of problem.

Dune

I know some XFrog objects have this uniform twist, and indeed, if you don't have the software, you can't change that. Breaking up with several species is then the best way.

The staff will read this, so if they see room for improvement, they'll act, I'm sure.

JasonA

Thanks guys, Im going to try this today and see if it eliminates the problem.  Ill report back what happens.

Oshyan

Here are some thoughts and possible solutions from Matt:

QuoteIf they are talking about reflections of normal parts of the scene, such as trees, they are going to flicker because only one ray is traced per water micropolygon. I imagine its probably comparable to ray tracing trees with AA 1, but perhaps not quite as bad because detail blending (if its on) will average things out a bit.

Possible solutions, all of which will increase render times substantially. Choose one of the following:

1) enable soft reflections (with a very small non-zero softness) and you can control the number of samples. Reflection Shader only.

2) Increase render detail above 1

3) use an imported object for your water. Then it will be ray traced, therefore shaded multiple times per pixel, according to the Pixel Sampler settings. This would be my preferred solution with v2.4 (we'll have better solutions available in future versions).

I don't know about the white specks, unless they are specular highlights from the sun.

- Oshyan

Tangled-Universe

Quote
2) Increase render detail >1.

Given Matt's explanation about tracing one ray per micropolygon and his 2nd suggestion to increase detail >1, I think I'm correct by saying you need to increase the ray detail multiplier.
By default it is set to 0.25 and if you increase it to 1 then more rays should be traced per polygon and you should get better accuracy.

Be aware this also greatly affects GI. To save rendertime you may reduce GI relative detail, as this will also be sampled 4 times denser with the increased ray detail multiplier.

Oshyan

Yes Martin, that made sense to me as well, and if I understand correctly, it should increase render time less than increasing *overall* detail.

- Oshyan

Tangled-Universe


Matt

Quote from: Tangled-Universe on October 15, 2012, 11:05:04 AM
If it's indeed ray traced reflections then *may be* it might help to increase the ray detail multiplier.
You can find that in the "render subdiv settings" node inside the render node's internal network.
This increases the amount of rays being calculated and I think it may therefore increase accuracy of the reflections and thus reduce flickering.

It doesn't change the number of rays that are traced. It only changes the detail in the micropolygons that are seen by the rays. I don't think it will help here - the water is quite rough so you don't really see any loss of detail in the micropolygons being hit by the rays.

Matt
Just because milk is white doesn't mean that clouds are made of milk.

Matt

Quote from: Tangled-Universe on October 17, 2012, 04:45:46 AM
Given Matt's explanation about tracing one ray per micropolygon and his 2nd suggestion to increase detail >1, I think I'm correct by saying you need to increase the ray detail multiplier.
By default it is set to 0.25 and if you increase it to 1 then more rays should be traced per polygon and you should get better accuracy.

Be aware this also greatly affects GI. To save rendertime you may reduce GI relative detail, as this will also be sampled 4 times denser with the increased ray detail multiplier.

It won't change the number of rays or the number of GI samples taken, but it increases the detail of the geometry seen by the reflections and GI rays.

Matt
Just because milk is white doesn't mean that clouds are made of milk.

Tangled-Universe

Thanks for pointing the mistake, twice ;)
I think this misconception has always been there, given Oshyan's confirmation. I guess it's subject for the ongoing documentation then.

So, now we know I was wrong, but it might be more helpful to know what it is instead of what it is not? ;)

Oshyan

Well, I said it made sense to me, I didn't say it was correct (as in I knew it was). ;)

I think "it increases the detail of the geometry seen by the reflections and GI rays" says it, doesn't it? It does not fire more rays (more samples), it just uses higher detail geometry for the samples it does take.

- Oshyan