Sunlight refraction & reflection on wavy water

  • I was wondering if SuperFly can handle the nice refractions and reflections that sunlight makes on wavy water. I have no roalty-free image at hand, so just do a google image search for "water sunlight reflection" and "water sunlight refraction" and you will see what I mean.

    For my test setup I used the old faithful construct with desert ground and sky, setting the sky ambient value to 0.5 for a slight global illumination. The water is just a square with the following material:
    0_1505666983333_Water material.PNG
    The ripples and waves are created by changing the normals of the surface. No displacement, as SuperFly cannot handle micro-displacements.

    I also created a light grey box to catch the reflections.

    As the sun I used a raytrace spotlight at the edge of the construct's hemisphere with 200% scale and 100% intensity, pointing at the water from about 45 degrees.

    These are the render settings:
    0_1505667054215_Render settings 1 GPU.PNG

    The raytrace preview looks promising:
    0_1505667223511_Raytrace Preview.PNG

    But this is the render result with the GPU:

    And here the same settings (except bucket size reduced to 64) with CPU:

    Several questions arise from this:

    1. Why does the raytrace preview have reflections and refractions while the renders don't? I already noticed in the Process Explorer that the raytrace preview always uses CPU for rendering, regardless of the render settings. But what settings does it use?? Obviously not mine!

    2. What are the linear striped artifacts on my GPU render?

    3. Where does this truncated pyramid artifact in both renders come from?

    4. Most important of all: What did I do wrong that the desired reflections and refractions do not show up at all in the renders?

    Is my desired effect possible without cheating (light through gels) at all?

  • @oldenburg how many glossy bounces are you using?

  • @oldenburg I'm two for two today not reading the whole post. Sorry about that. Looks like you have 4 glossy bounces. that should be ok.

  • @oldenburg try switching to CPU render and turn Branch path tracing on. See what it looks like then.

  • @oldenburg It looks like my cheap water shader. Somewhere on this forum @bagginsbill showed how to make colored glass that made proper colored caustics. That might be more what you are looking for.

  • @ghostship You are right, I took your water shader as the starter for the bump map, as it has a beautiful wave/ripple combination. From my basic understanding, the normal/bump should already do some reflections and refractions. I wonder why the render does not show any reflections on the wall at all.
    I just tried BPT rendering with my CPU and there is still no reflection/refraction.

    As far as I remember, the glass from @bagginsbill you mention is using some tricks to render without caustics. I would like to use the caustics here to understand how it works, even if it takes more render time.

  • @oldenburg I did a little test with my cheapy shader and it does make reflections but they are faint and more noticeable when you unplug the bump from it. I think it just has to do with the Fresnel. If you make a shader from a glossy and refract nodes you might have better control on the reflection.

  • @oldenburg here it is. I think you would usually want a Fresnel node modulating the FAC of the Mix closer but in this case you want to override that to get more reflection out of the water surface.

    0_1505679341862_fake water.jpg

  • @ghostship I tried your texture, this time with less ambient light and a more concentrated spot light, but the result seems the same.
    Maybe my whole approach is wrong. Maybe caustics do not react to bump maps, only to real deformations of the transparent body? This would make it impossible to achieve the effect that I am after.

    Seems like it's the good old gel lights after all...

  • @oldenburg I had a similar problem with window glass where it would cast a shadow instead of letting light pass through. I think it has to do more with the geometry of the object than the materials.

  • @oldenburg OK here it is working like it should: The object that is to be liquid or glass needs to have some sort of real-world shape. Glass windows need to be more than a single sided square to work. I'm assuming pool water models need to encompass the entire inside of the cement part of the pool to work. I've only seen modeling like this with water glasses from Some vendors.

    Here is the primitive box squished down to the size of a thick sheet of glass. Light shines through and caustics work. Nothing special for the mats, just my cheap pool water mat.


  • Poser Ambassadors

    I think that caustics need quite a lot of samples to resolve as well, like 60+? Sure I read that somewhere, can't find a reference though ...

  • @caisson yes, I only let this go to 50 samples.

  • Poser Ambassadors

    @ghostship - that looks really good though ;)

    I noticed that @oldenburg had 16 samples in the first screenshot, thought that might not be helping matters!

  • From what I learned about the Cycles render engine I deduce that it is not possible to achieve the desired reflection/refraction caustics with just a bump/normal map on whatever object. It seems that you need a real vertex ripple on an object, meaning a lot of vertices (too many for my taste).

    So eventually I am back to using gobo/gel lights for the effect, which have been already described here (unfortunately the images are all gone).
    The gel lights are a fast and easy way to project the appearance of ripples on objects above the water and on underwater scenes as no caustics are needed.

    Maybe the next iteration of the Cycles renderer in Poser will be able to use caustics on normal/bump maps. (And hopefully micro-displacements, of course!)