// Persistence Of Vision raytracer version 2.0 sample file.
// Illustrates how area light size affects soft shadows

// Left   shadow - area_light <4,0,0>,  <0,0,4>,  17, 17 (renders fastest)
// Middle shadow - area_light <8,0,0>,  <0,0,8>,  17, 17
// Right  shadow - area_light <16,0,0>, <0,0,16>, 17, 17 (renders slowest)

#include "colors.inc"
#include "textures.inc"

// A back wall to cast shadows onto
plane { -z, -20
    pigment { Gray70 }
    finish { Dull }
}

#declare SpacingX = 20
#declare Radius = 5
#declare LightX = 15
#declare LightY = 40
#declare LightZ = -40
#declare SRadius = 0
#declare SFalloff = 11

#declare SphereTexture = texture {
    pigment { Red }
    finish { Shiny }
}

sphere { <-SpacingX, 0, 0>, Radius
    texture { SphereTexture }
}

light_source {
    <0, LightY, LightZ> color White
    area_light <4, 0, 0>, <0, 4, 0>, 17, 17
    adaptive 0
    jitter

    spotlight
    point_at <-SpacingX, 0, 0>
    tightness 0
    radius SRadius
    falloff SFalloff
}

sphere { <0, 0, 0>, Radius
    texture { SphereTexture }
}

light_source {
    <0, LightY, LightZ> color White
    area_light <8, 0, 0>, <0, 8, 0>, 17, 17
    adaptive 0
    jitter

    spotlight
    point_at <0, 0, 0>
    tightness 0
    radius SRadius
    falloff SFalloff
}

sphere { <+SpacingX, 0, 0>, Radius
    texture { SphereTexture }
}

light_source {
    <0, LightY, LightZ> color White
    area_light <16, 0, 0>, <0, 16, 0>, 17, 17
    adaptive 0
    jitter

    spotlight
    point_at <+SpacingX, 0, 0>
    tightness 0
    radius SRadius
    falloff SFalloff
}

light_source { <0, -15, -120> color Gray10 }

camera {
    location <0, -15, -120>
    direction 2*z
    look_at <0, -15, 0>
}
