// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 0.70, 0.70, 0.70 > }
    finish{ diffuse 0.7 ambient 0.1 roughness 0.5}
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 1.5 reflection 0.2 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.0, 0.32, 0.00 >, color rgb < 0.00, 0.97, 0.0 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 0.1
  }

#macro castelo(lvl)

                union{
                        difference{

                                box{ <4*pow(0.5,lvl),-4*pow(0.5,lvl),0>, <-4*pow(0.5,lvl),+4*pow(0.5,lvl),2*pow(1.5,lvl)> texture {tx_fosca} }

                                box{ <3.7*pow(0.5,lvl),-3.7*pow(0.5,lvl),-0.1>, <-3.7*pow(0.5,lvl),+3.7*pow(0.5,lvl),2.1*pow(1.5,lvl)> texture {tx_fosca} }

                        }

                        cylinder{
                                < 2.775*pow(0.5,lvl), 2.775*pow(0.5,lvl), 0.00 >,
                        < 2.775*pow(0.5,lvl), 2.775*pow(0.5,lvl), +3.00*pow(1.5,lvl) >,
                        0.925*pow(0.5,lvl)
                        texture{ tx_vidro }
                        }

                        #local c = 0;
                        #while ( c < lvl)
                                object{ castelo(c) translate<2,2,0>}
                                #local c = c + 1;
                        #end
                }

#end

#declare chao =
  box{ <-20,-20,-1>, <+20,+20,0> }

#include "eixos.inc"

union{
  object{ eixos(3.00) }

  object{ chao   texture{ tx_xadrez } }

        object{ castelo(3) }

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 6.0;
#declare dir_camera = < 14.00, 7.00, 10.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)