Surface Wave Optics

Surface Reflection

    The ocean surface is considered to be a perfect specular reflector.  When rendering a the ocean surface across a long distance the waves farther away from the eye point can seem have diffuse reflection.  This effect is directly related to the size and distance from the eye point of the wave.  Polarization effects are generally ignored.

Polarization - A peculiar affection or condition of the rays of light or heat, in consequence of which they exhibit different properties in different directions.  definition from www.dictionary.com

After a light ray hits the water surface it is either reflected back up into the air or transmitted through the water surface.  The intensity of either of these two rays is determined by coefficients.  

Reflection

    In the case of perfect specular reflection the reflected ray and the incident ray have the same angle with the surface normal.

Transmission (Refraction)

    The direction of the refracted ray is determined by the surface normal, the direction of the incident ray, and Snell's Law which states a relationship between the incident ray and the refracted ray and the indices of refraction for the two materials.

Snell's Law

        n_i * sin(theta_i) = n_t * sin(theta_t)

Fresnel Reflectivity and Transmissivity

    Reflectivity + Transmissivity = 1    

    R + T = 1

Graph of Reflectivity as a function of the angle of incident relative to the wave surface normal

Reflectivity for light coming from the air down to the water surface.   Reflectivity for light coming from below the water surface.

Total Internal Reflection - when light comes from below the water surface with an incident angle below roughly 41 degrees, reflectivity is one and transmissivity is equal to zero.  Brewster's angle is the angle where total internal reflection ocurrs.

 

Renderman Shader

Renderman has a built in Fresnel function that returns Reflectivity, Transmissivity, Reflection Vector, Transmission Vector with inputs Surface Normal, Incident Direction Vector, and Index of Refraction.

Color is a combination of light coming down onto the surface with the sky color and light coming upward from the ocean with the water color.

 

surface watercolorshader(

        color upwelling = color(0.02, 0.20, 0.5),

        color sky = color(0.23, .32, 0.45),

        float nSnell = 0.75;

)

{

    point nhat_R, nhat_T;

    float transmission, reflectivity;

    float tran, ref;

    vector nI = normalize(vtransform("world",I));

    vector nN = normalize(vtransform("world",N));

    vector nNf = normalize(faceforward (nN,nI));

 

        /* Get reflectivity for downward case */

    fresnel(nI, nNf, nSnell, reflectivity, tran, nhat_R, nhat_T);

 

        /* Get transmissivity for upward case */

    fresnel(-nI, nNf, 1.0/nSnell, ref,

    transmission, nhat_R, nhat_T);

    Oi = 1;

    Ci = transmission * upwelling + reflectivity * sky ;

}

 

 

Jeff Alcantara 2003