I am playing around with Radiance, trying to reproduce the scattering and absorption that occurs in water. The image below shows my test scene: looking down along the length of a rectangular region of water (mist material) with a series of cylinders embedded within the water (two middle rows) and outside the water (rows to either side). The water material is defined as:
void mist Water_ft 0 0 7 0.1 0.1 0.1 0.8 0.9 0.999999 0
Here are the commands I run:
oconv materials.rad sky.rad scene.rad > scene.oct mkpmap -ds 0.1 -t 10 -apg scene.gpm 20k -apv scene.vpm 200k scene.oct rpict -t 15 -vf view.vf -x 1200 -y 600 -ab 1 -ap scene.gpm 50 500 -ap scene.vpm 50 500 scene.oct > WaterTest.pic
Using pmapdump shows that mkpmap generates photons within the mist volume. However, rpict does not seem to find them, with output like this:
rpict: 4597412 rays, 51/500/191 global (-92.5/74.3/18.6% error), 0/0/0 volume (0.0/0.0/0.0% error), 100.00% after 0.0233 hours
The resulting image shows light is being absorbed, but scattering is clearly missing. Any idea what I am doing wrong?
A tangential question: how does Radiance handle surfaces within a mist volume? In my scene, I hollowed out tubes in the water volume so that the cylinders and water volume do not overlap. However, I placed a horizontal plane on the bottom left half of the water volume, entirely within the water volume. This is of the same material as the plane at the bottom of the scene (plastic, purely diffuse reflection, 80% reflectance). The embedded surface is very dark compared to the larger surface below it. However, if I change the mist material to:
void mist Water_ft 0 0 7 0.1 0.1 0.1 0.8 0.9 1.0 0
I get the second image, where the surfaces look very similar. The only difference between the two images is the blue albedo changing from 0.999999 to 1.0. It appears Radiance treats the surface very differently if any albedo component is exactly 1. What is going on here? This behavior happens with or without photon mapping.
I can’t seem to upload the scene files here, but I can share them if there is a way.