Water Performance

Hello everyone,

the problem: My scene has 41 fps in one location. I add water post-processor and it has 27fps.
The water isn’t even visible from my position and reducing the reflection map size from 1024 to 256 has next to no impact.

Is this performance drop to be expected? Is there something I can do?
I tried using the SimpleWaterProcessor, but performance costs were similar.

Thanks for suggestions.

Without water: scene rendered once
With water: scene rendered twice.

No way around that.

Exactly, the scene is rendered a second time from a different point of view for the reflection.

Too bad.

Can I turn off reflection or specify that only the terrain or the skybox should be reflected?
Or maybe turn off shadows and/or lighting in the reflected scene?

And do you have an idea on why reflection map size has no impact?
Fps with reflection map size 256: 27
Fps with reflection map size 2048: 27

@m41q said: And do you have an idea on why reflection map size has no impact? Fps with reflection map size 256: 27 Fps with reflection map size 2048: 27

…because you are not fill limited? I suspect your performance doesn’t change much at different screen resolutions either.

You are right, of course.
I’ve read up on fill rate now.

There is also a simple water, wich does not use postprocessing, it might be a viable alternative.

@Empire Phoenix said: There is also a simple water, wich does not use postprocessing, it might be a viable alternative.

…the scene still needs to be rendered twice.

@m41q said: Can I turn off reflection or specify that only the terrain or the skybox should be reflected? Or maybe turn off shadows and/or lighting in the reflected scene?

Is this a possibility?
Can something like this can be achieved with FilterPostProcessors?

@m41q said: Too bad.

Can I turn off reflection or specify that only the terrain or the skybox should be reflected?
Or maybe turn off shadows and/or lighting in the reflected scene?

And do you have an idea on why reflection map size has no impact?
Fps with reflection map size 256: 27
Fps with reflection map size 2048: 27

Yes you can. Just use setReflectionScene on the SimpleWaterProcessor to set the Node you want to use for reflection.
The problem is that you may have to reorganize your scene graph. But in general it should be possible to add the sky and the terrain to a seperate node (e.g. “reflectionNode”) and the rest of your Scene to another node.

I know it is not the best solution but at the moment it works for me. Usally it will be much better with a setReflectionMode function for each Node (like the setShadowMode).

Ah, I forgot about the SimpleWaterProcessor for a moment.
Thank you, I’ll give it a try.