Here are some renders of the pool scene with a much smaller and brighter light, resulting in cool caustics. I rendered these images with photon mapping—regular path tracing would have taken forever to converge because the light source would have been hit very infrequently (it can't be sampled directly through the water surface). I'm planning to implement photon emission for all lights soon, including the sun and HDR environment maps.
|
Pool caustics. |
Previously, I was not using shading normals for photon tracing, which caused distracting patterns in the caustics (see image below). To fix this (see image
above), I made photon tracing use shading normals. For now, I just throw away photons that end up on the wrong side of the surface.
|
No shading normals. |
Before rendering the images above, I was using regular grid tessellation of the water surface, which made the unwanted patterns even worse (see image below). To improve this, I made the grid higher resolution and then reduced the
mesh, with triangles distributed to best approximate the surface and
give the mesh a more organic appearance (see image above).
|
When the water surface was a displaced regular grid. |
When the water was calm (see image below), the grid patterns disappeared. This helped let
me know that the patterns were indeed caused by the tessellation of the
water surface, as opposed to a random number issue or something else.
|
Calm water. Same exposure and everything else. |
nice work.
ReplyDeleteuse sph for the water or just a height field?
Thanks Xing. I just used a height field, but creating the surface with an SPH simulation would have been cooler!
Delete