#include "colors.inc" #include "glass.inc" #include "skies.inc" light_source { 0*x color rgb 1.0 area_light <10,0,0> <0,0,10> 4,4 adaptive 3 jitter translate <0,80,0> } fog { fog_type 2 distance 10 color rgbt <0.7,0.7,0.7,0.5> turbulence 1 turb_depth 1 omega 0.1 lambda 5 octaves 2 fog_offset 1.25 fog_alt 1 } fog { fog_type 2 distance 10 color rgbt <0.9,0.9,0.9,0.8> turbulence 1 turb_depth 1 omega 0.1 lambda 5 octaves 1 fog_offset 10 fog_alt 1.25 } plane { y,0 texture { pigment { color rgb <0.5,0.5,0.5> } } } camera { //location <-20,19,-40> //look_at <10,8,20> location <0,19,-50> look_at <0,19,0> } light_source { <40,30,-30> color rgb 0.75 } light_source { <-30,40,-40> color rgb 0.75 } light_source { <0,2,0> color rgb 0.5 } #macro pyramid(pos,size,rec,maxrec) #local halfsize = size / 2; #if (rec >= maxrec) triangle { pos,pos+< halfsize,-size, halfsize>,pos+<-halfsize,-size, halfsize> } triangle { pos,pos+<-halfsize,-size, halfsize>,pos+<-halfsize,-size,-halfsize> } triangle { pos,pos+<-halfsize,-size,-halfsize>,pos+< halfsize,-size,-halfsize> } triangle { pos,pos+< halfsize,-size,-halfsize>,pos+< halfsize,-size, halfsize> } triangle { pos+< halfsize,-size, halfsize>,pos+<-halfsize,-size, halfsize>,pos+<-halfsize,-size,-halfsize> } triangle { pos+<-halfsize,-size,-halfsize>,pos+< halfsize,-size,-halfsize>,pos+< halfsize,-size, halfsize> } #else #local fourthsize = halfsize / 2; pyramid(pos,halfsize,rec+1,maxrec) pyramid(pos+< fourthsize,-halfsize, fourthsize>,halfsize,rec+1,maxrec) pyramid(pos+<-fourthsize,-halfsize, fourthsize>,halfsize,rec+1,maxrec) pyramid(pos+<-fourthsize,-halfsize,-fourthsize>,halfsize,rec+1,maxrec) pyramid(pos+< fourthsize,-halfsize,-fourthsize>,halfsize,rec+1,maxrec) #end #end #declare SZ=40; #declare pyr= mesh { pyramid(<0,2.5,0>,2.5,0,8) pigment { color rgb <0.6,0.6,0.6> } finish { phong 0.2 } } #declare Co = union { #declare Y = 0; #while (Y < 4) object { pyr translate } object { pyr translate <(-Y*1.25)+7.5,Y*2.5,(-Y*1.25)+7.5> } object { pyr translate <(-Y*1.25)+7.5,Y*2.5,Y*1.25> } object { pyr translate } object { pyr translate } object { pyr translate } object { pyr translate } object { pyr translate <7.5,0,Y*2.5> } object { pyr translate <0,0,(-Y*2.5)+7.5> } object { pyr translate <(-Y*2.5)+7.5,0,7.5> } #declare Y = Y + 1; #end } #declare Cor= union { #declare Y = 0; #while (Y < 4) object { Co translate } object { Co translate <(-Y*5)+30,Y*10,(-Y*5)+30> } object { Co translate <(-Y*5)+30,Y*10,Y*5> } object { Co translate } object { Co translate } object { Co translate } object { Co translate } object { Co translate <30,0,Y*10> } object { Co translate <0,0,(-Y*10)+30> } object { Co translate <(-Y*10)+30,0,30> } #declare Y = Y + 1; #end } // try to render this... #declare Corn= union { #declare Y = 0; #while (Y < 4) object { Cor translate } object { Cor translate <(-Y*(SZ/2))+(SZ*3),Y*SZ,(-Y*(SZ/2))+(SZ*3)> } object { Cor translate <(-Y*(SZ/2))+(SZ*3),Y*SZ,Y*(SZ/2)> } object { Cor translate } object { Cor translate } object { Cor translate } object { Cor translate } object { Cor translate <(SZ*3),0,Y*SZ> } object { Cor translate <0,0,(-Y*SZ)+(SZ*3)> } object { Cor translate <(-Y*SZ)+(SZ*3),0,(SZ*3)> } #declare Y = Y + 1; #end } object { Corn scale 0.25 translate <-19.8,0,-19.8> } sphere { <0, 14, 0>, 2 texture { T_Glass4 } interior { I_Glass caustics 1 } } sphere { <0, 27, 0>, 1 texture { T_Glass4 } interior { I_Glass caustics 1 } }