water shading

recently i did some water rendering in Arnold renderer, which you can see here. the shading worked quite well on the water and whitewater.

after this started to sim a wave Tunnel in Houdini Flips. a huge wave where you actually could surf. But i run into some trouble for water shading and whitewater look, i needed some reference.


I went to beach and took trusty NikonV1 camera with me to shoot some reference Photos. This are tiny Waves (50cm in height), but easy to take some pictures and good enough as shading reference.

the nice shot of miniature breaking wave

a nice snapshot of translucent effects of the wave
here we can see droplets (whitewater) in close up

here we can see more Droplets / Whitewater with sun in out back. a good example for anisotropy effect on shading.

droplets turn white with sunlight, depending on the sun direction.

There multiple Ways to render realistic Water. The old school way is to render a polygon water surface and volume underneath to simulate the light scattering. we did similar things back in 2008 on the Avatar Movie with custom written shaders for Renderman. Sidefx added presets for Houdini for its Ocean setup’s. The render time of this method are modest but the shading can quite difficult depending on camera angle and light situation.

these Days in the age of Path tracers, there 2 ways, rendering it with Sub-Surface Scattering (SSS) or Transmission Depth.

Sub-Surface Scattering simulates the effect of light entering an object and scattering beneath its surface. Not all light reflects from a surface. Some of it will penetrate below the surface of an illuminated object. There it will be absorbed by the material and scattered internally. Some of this scattered light will make its way back out of the surface and become visible to the camera. This is known as ‘sub-surface scattering’ or ‘SSS’. SSS is necessary for the realistic rendering of materials such as marble, skin, leaves, wax, and milk. The SSS component in this shader is calculated using a brute-force raytracing method.

While the Transmission Depth attribute controls volumetric light absorption within the object (fog), the Scatter attribute controls what percentage of the light will be scattered instead of absorbed, effectively creating the murky effect of semi-transparent materials.

Depth Controls the depth into the volume at which the transmission color is realized. Increasing this value makes the volume thinner, which means less absorption and scattering. It is a scale factor so that you can set a transmission_color and then tweak the depth to be appropriate for the size of your object.

Scattering is very import if wanna shader deep Materials like Ocean water. For the scattering effect to work Scatter must have a dominant percentage value, and the Depth attribute must generally be much lower. also the Opaque attribute must be unchecked in the Arnold attributes of the object’s shape node for the light to be able to pass into the mesh and illuminate the volume.

Rendering with refraction Depth is more “physical correct” way, but it does account tiny organism (light blockers) in this case you add textures to simulate plankton in the water.

I choose go with SSS route. The tycial Surface Scattering shading model has a similar volume light scatter look. the look can be limited but it works in case deep Ocean water. the advantage: it full support with current Arnold GPU renderer (Depth transmission is not supported yet) and SSS shading model is also faster to render. In addition, I’ ve added an extra underwater bubble simulation with particles to increase the realism.

lens shootout : Nikkor 32mm vs sigma 17-70mm part 1

its actually a really unfair comparison, because the sigma is macro lens and nikon a portrait lens. the Sigma 17-70 F2.8 Macro is considered as all around lens and the nikon could considered it was well. the nikon lens 32mmF1.2 have really close focus distance for this kind of lens (which good for macro) and also smaller sensor of the nikon1 system make much less intense out of focus blurs, compared to a fullframe or APS-C sensor (which is good for landscape).
also a comparsion between DSLR Canon 500D with APS-C sensor and mirrorless Camera Nikon V1 with much smaller 1’inch Sensor is not really fair. but i will do it anyway. also need need some pictures for my upcoming sigma17-70mm F2.8 and nikkor 1 32mm F1.2 lens review.

ok lets start with marco shoots:
scene1:
sigma 17-70mm –> @70mm @F4.5 iso320 1/80 –> canon 500D
70mm_f4.5_iso320_80 013

sigma 17-70mm –> @17mm @F4.5 iso100 1/25 –> canon 500D
17mm_f4.5_iso100_25 012

nikkor 1 32mm –> @F2.0 iso220 1/350 –> nikon V1
32mm_f2_iso220_350 008

nikkor 1 32mm –> @F1.2 iso100 1/250 –> nikon V1
32mm_f1.2_iso100_250

scene 2:
nikkor 1 32mm –> @F1.2 iso100 1/640 –> nikon V1
32mm_f12_iso100_640 002

nikkor 1 32mm –> @F2.8 iso160 1/250 –> nikon V1
32mm_f28_iso160_250 001

sigma 17-70mm –> @17mm @F2.8 iso100 1/80 –> canon 500D
17mm_f28_iso100_80 004

sigma 17-70mm –> @70mm @F4.5 iso160 1/150 –> canon 500D
70mm_f45_iso160_100 005

sigma 17-70mm –> @70mm @F4.5 iso100 1/125 –> canon 500D
this one is on manuell focus (the lens or camera couldn’t any focuspoints)
70mm_f45_iso320_100 003

vintage lens: comparsion 16mm vs fullframe

i did little comparison between 16mm lens on 1 inch from nikon V1 and 35mm fullframe lens on APS-C sensor on Sony NEX5T. both lenses have similar prices on ebay for used models. (less than 80$) both lenses are pretty sharp.

nikon V1: iso 100, @F1.4, 25mm, vintage super16-C mount lens:

100% crop
DSC_7276
sony NEX5T: iso 200, @f1.4, olympus Zukio 50mm,f1.4, vintage fullframe lens:

100%crop
DSC05348

fullsize images:
nikon V1: iso 100, @F1.4, 25mm, vintage super16-C mount lens:
DSC_7276
sony NEX5T: iso 200, @f1.4, olympus Zukio 50mm, vintage fullframe lens:
DSC05348