// Persistence of Vision Ray Tracer Scene Description File // File: Doorway to Enlightenment // Vers: MegaPOV 0.6 // Desc: Some sand, a bit of water and some media clouds. // Desc: oh, and some weird stick thing and a boor, obviously. // Date: 13-12--00 // Auth: Kevin Ellis // Mail: kevin.ellis@libertysurf.co.uk // Webp: http://web.libertysurf.co.uk/kevin.ellis // Note: Needs the Reorient Macro and is in a 16:9 aspect ratio. #version unofficial MegaPov 0.6; #include "macs.inc" // Needs the Reorient macro #declare Rad=1; // 0: No Radiosity, 1: Radiosity #declare Simple=0; // 0: Iso bricks, 1: Box bricks global_settings { #if(Rad) ini_option "+QR" radiosity{ pretrace_start 0.08 pretrace_end 0.01 count 80 // CHANGE range from 20 to 150 nearest_count 5 // CHANGE range from 3 to 10 error_bound 0.6 // CHANGE - range from 1 to 3 - should correspond with pretrace_end // you can go lower than 1, but then you probably will want to set // pretrace_end to 0.01, which is really slow recursion_limit 1 // CHANGE low_error_factor .5 // leave this gray_threshold 0.0 // leave this minimum_reuse 0.015 // leave this brightness 0.5 // leave this adc_bailout 0.01/2 // CHANGE - use adc_bailout = 0.01 / brightest_ambient_object normal on media off } ambient_light 0 #end max_trace_level 15 } #declare Clouds= box { <-30000,700,-60000> <30000,1000,60000> material { texture { pigment { rgbf 1 } } interior { media { scattering {5, 0.0044 extinction 1 eccentricity 0.005} method 2 intervals 35 aa_level 4 jitter 0.1 density { bozo color_map{ [0.0 rgb 0] [0.62 rgb 0] [0.62 rgb 1] [1.0 rgb <1,1,1.1> ] } scale <400,200,500> octaves 6 lambda 2 omega 0.65 turbulence .25 scale <2.5,2,2.5> translate <0,850,0> } density { planar color_map { [0 rgb 0] [0.1 rgb 0] [0.1 rgb 0.9] [1 rgb 0.9] } scale <20,20,20>*5 turbulence 0.25 translate <0,850,0> } } } } hollow scale 0.8 } #declare Func1= function { "ridgedmf" <0.6,1.2,2,0.95,10> } #declare Water= isosurface { function { y -0.1*Func1(x*0.25,y,z*0.25) -0.005*Func1(x*5,y,z*5) } max_gradient 2.4 contained_by { box { <-10000,-800,-60000> <10000,1,60000> } } material { texture { pigment {rgbf <1,1,1,0.9>} finish { reflection_type 1 reflection_max 0.91 reflection_min 0.276 reflection_falloff 2 conserve_energy specular 0.4 roughness 0.003 brilliance 3.63 diffuse 0.05 } } interior { ior 1.33 media { absorption <1/0.2,1/0.55,1/0.9>*0.015*1.15 intervals 1 method 2 density { rgb 1 } } } } hollow } #declare Func2= function { "ridgedmf" <0.6,1.2,2,0.95,10> } #declare DrySand= texture { pigment {rgb <1,0.9,0.8>} normal {bumps 0.0001 scale 0.005} finish {diffuse 0.54} } #declare WetSand= texture { pigment {rgb <1,0.8,0.65>*0.6} normal {dents 0.0001 scale 0.005} finish {diffuse 0.44 specular 0.5 roughness 0.05} } #declare Sand= isosurface { function { y +0.07*if(-z,-z,min(z,1)) -35*Func2(x/400,y/200,z/400) -1.9*Func2(x/30,y/30,z/30)*if(y+6,1,0.2) -0.04*Func2(x/4,y/4,z/4) +62 } max_gradient 2.5 contained_by { box { <-20000,-1000,-60801> <20001,-5,60801> } } texture { gradient y texture_map { [0 DrySand] [0.45 DrySand] [0.458 WetSand] [1 WetSand] } translate <0,-0.15,0> scale <1,100,1> turbulence 0.006 scale <10,1,10> translate <0,-10,0> } translate <-6000,65,900> } #declare Stick= union { blob { threshold 0.1 cylinder { <0,0,0> <0,16,0> 0.4,0.5 } #local i=2; #while(i<358) sphere { <0,-2,0> ,0.4,0.5 rotate <0,0,-i> translate <0,16+2,0> } #local i=i+2; #end #local i=2; pigment { granite color_map { [0 rgb <1,0.9,0.7>] [1 rgb <0.9,0.8,0.75>] } turbulence 0.2 scale 0.5 } normal { granite 0.6 turbulence 0.2 scale 0.5 } finish { diffuse 0.5 specular 0.6 roughness 0.1 brilliance 0.7 } bounded_by { box { <-2.5,0,-0.5> <2.5,20.5,0.5> } } } intersection { sphere { <0,0,0> 2 translate <0,0,-0.9> } sphere { <0,0,0> 2 translate <0,0,0.9> } scale <1.2,1,2> material { texture { pigment {rgbf <1,1,1,0.99>} finish { reflection_type 1 reflection_max 0.7 reflection_min 0.3 reflection_falloff 2 specular 1 roughness 0.002 reflect_metallic conserve_energy } } interior { ior 1.5 dispersion 1.04 disp_nelems 10 } } translate <0,18,0> } } #declare Sticks= union { #local T=0; // Random Sticks #local P=seed(29672); #while (T<400) #declare A=rand(P); #declare B=(rand(P))^1.2; #declare Norm=<0,0,0>; #declare Trans=trace ( Sand, <3000*(A-0.5),60,100+4000*B>, <3000*(A-0.5),-40,100+4000*B>, Norm ); #if((Trans.y)>-7) object { Stick scale 1+0.6*rand(P) rotate <0,360*rand(P),0> Reorient(y,Norm) translate Trans } #local T=T+1; #end #end #declare Norm=<0,0,0>; object { // Close Stick Stick scale 1.4 rotate <0,-20,0> #declare Trans=trace ( Sand, <-23,60,100>, <-23,-8,100>, Norm ); Reorient(y,Norm) translate <-33,-6,100> } } #include "Door.inc" object {Door rotate <0,50,0> scale 37 translate <115,1,220>} object {Clouds translate <0,0,-1600>} object {Water translate <0,-6.3,0>} object {Sand} object {Sticks} fog { fog_type 2 distance 5000 fog_offset 0 fog_alt 400 color rgb <0.8,0.85,0.9> } camera { location <0,5,0> right <16/9,0,0> look_at <0,4,100> } light_source { <-10000000,20000000,-10000000> color rgb <1,1,0.95>*1.5 media_attenuation on media_interaction on } sky_sphere { pigment {rgb <0.5,0.7,0.8>} }