/* spotlight.sl - Standard spot light source for RenderMan Interface.
 * (c) Copyright 1988, Pixar.
 *
 * The RenderMan (R) Interface Procedures and RIB Protocol are:
 *     Copyright 1988, 1989, Pixar.  All rights reserved.
 * RenderMan (R) is a registered trademark of Pixar.
 */

light
spotlight ( float intensity = 1;
	    color lightcolor = 1;
	    point from = point "shader" (0,0,0);
	    point to = point "shader" (0,0,1);
	    float coneangle = radians(30);
	    float conedeltaangle = radians(5);
	    float beamdistribution = 2; )
{
  float atten, cosangle;
  uniform vector A = normalize(to-from);

  illuminate (from, A, coneangle) {
      cosangle = (L . A) / length(L);
      atten = pow (cosangle, beamdistribution) / (L . L);
      atten *= smoothstep (cos(coneangle), cos(coneangle-conedeltaangle),
			   cosangle);
      Cl = atten * intensity * lightcolor ;
    }
}