#! /usr/bin/env python

from lightflowPM import *

s = scene()

s.lightOn( s.newLight( "directional", [ "direction", vector3( 8.0, 5.0, -6.0 ), "color", vector3( 1.0, 1.0, 1.0 ) ] ) )


cloudpattern1 = s.newPattern( "granite",
			      [ "value",
				0.3, 1.0, 1.0,
				0.5, 0.0, 0.0,
				"scale", 1.0,
				"turbulence.omega", 0.55,
				"turbulence.lambda", 1.8,
				"turbulence.octaves", 6 ] )

cloudpattern2 = s.newPattern( "radial",
			      [ "value",
				0.8, 1.0, 1.0,
				1.0, 0.0, 0.0,
				"scale", 1.2 ] )

cloudpattern = s.newPattern( "compose",
			     [ "patterns", cloudpattern1, cloudpattern2 ] )

cloudinterior = s.newInterior( "cloud",
 			       [ "kr", vector3(0.7, 0.85, 1.0),
				 "kaf", vector3(0.4 * 0.5, 0.7 * 0.5, 1.0 * 0.5),
				 "density", 1.0,
				 "density", cloudpattern,
				 "sampling", 15.0,
				 "shadow-caching", vector3(-1.2,-1.2,-1.2), vector3(1.2,1.2,1.2),
				 "density-caching", 2048, vector3(-1.2,-1.2,-1.2), vector3(1.2,1.2,1.2) ] )

s.interiorBegin( cloudinterior )

cloud = s.newMaterial( "transparent", [] )

s.interiorEnd()


s.materialBegin( cloud )

s.addObject( s.newObject( "sphere", [ "radius", 1.2 ] ) )

s.materialEnd()


saver = s.newImager( "tga-saver", [ "file", "cloud.tga" ] )

s.imagerBegin( saver )

camera = s.newCamera( "pinhole", [ "eye", vector3( 0, -4, 0 ), "aim", vector3( 0, 0, 0 ) ] )

s.imagerEnd()

s.render( camera, 300, 300 )
