We have some exciting new features in Puppy Ray, the GPU version. (no significant changes on the CPU version in this build)
Puppy ray could be considered a path tracer, but we prefer to call it a
global illumination raystepper. It has most of the qualities of a
path tracer, except we also use dot-product lights. When doing
water, it acts more like a path tracer.
The waves on the water plane is done my modifying the surface
normal. Not technically a normal map. Really just a bump map
in the traditional sense.
The GPU version should utilize all available shader cores on your GPU.
If you have an Nvidia GTX 1080 or similar, bless your heart, we're
jealous! Hundreds, or even thousands of cores, working in the spirit of
Axehead - getting the job done faster!
The thing with GPUs is that they work best when all the cores are
doing the same thing. This is difficult with path tracing, because
the threads diverge quickly, so some may finish up before others.
Some renderers, such as Disney's Hyperion renderer (https://www.disneyanimation.com/technology/innovations/hyperion)
solve the problem by sorting threads into more similar workloads. We
solve the problem by splitting the image into tiles (probably what
bucket rendering does)