#ifndef (RdmA) #include "rand.inc" #end #ifndef (White) #include "colors.inc" #end #declare T_Stone29 = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgb <0.65, 0.35, 0.25> ] [0.06 color rgb <0.55, 0.25, 0.10> ] [0.10 color rgb <0.45, 0.30, 0.25> ] [1.00 color rgb <0.65, 0.35, 0.25> ] } } } texture { pigment { crackle turbulence 0.6 lambda 1.75 omega 0.55 octaves 4 scale 0.45 rotate <0, 5, 60> color_map { [0.01 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.02 color rgbt <0.40, 0.25, 0.15, 0.20> ] [0.05 color rgbt <0.40, 0.35, 0.20, 0.40> ] [0.10 color rgbt <0.45, 0.55, 0.25, 0.60> ] [0.65 color Clear ] } } } texture { pigment { granite turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.75 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.15 color rgbt <0.40, 0.25, 0.15, 0.40> ] [0.20 color rgbt <0.20, 0.10, 0.00, 0.00> ] [0.25 color rgbt <0.20, 0.15, 0.15, 0.40> ] [0.30 color rgbt <0.40, 0.25, 0.15, 0.70> ] [0.65 color Clear ] } } } #declare T_Stone29d = texture { pigment { gradient x turbulence 0.75 frequency 6 scale 0.5 rotate <0, -45, 30> color_map { [0.02 color rgb <0.065, 0.035, 0.025> ] [0.06 color rgb <0.055, 0.025, 0.010> ] [0.10 color rgb <0.045, 0.030, 0.025> ] [1.00 color rgb <0.065, 0.035, 0.025> ] } } } texture { pigment { crackle turbulence 0.6 lambda 1.75 omega 0.55 octaves 4 scale 0.45 rotate <0, 5, 60> color_map { [0.01 color rgbt <0.00, 0.00, 0.00, 0.00> ] [0.02 color rgbt <0.040, 0.025, 0.015, 0.20> ] [0.05 color rgbt <0.040, 0.035, 0.020, 0.40> ] [0.10 color rgbt <0.045, 0.055, 0.025, 0.60> ] [0.65 color Clear ] } } } texture { pigment { granite turbulence 0.1 lambda 2.5 omega 0.75 octaves 5 scale 0.75 frequency 1 phase 0.25 rotate <0, 45, 60> color_map { [0.15 color rgbt <0.040, 0.025, 0.015, 0.40> ] [0.20 color rgbt <0.020, 0.010, 0.00, 0.00> ] [0.25 color rgbt <0.020, 0.015, 0.015, 0.40> ] [0.30 color rgbt <0.040, 0.025, 0.015, 0.70> ] [0.65 color Clear ] } } } #macro runestone (n) #local az = -1.5; #local ax = -1; #for (ax, 0, n, 0.1) #local az = SRand (RdmA); // Randomize based on runestone #end #local rtex = ; #declare stone = difference { intersection { union { #for (az, -1.5, 1.5, 0.5) #for (ax, -1, 1, 0.5) sphere { 0, 1 scale <1, 0.5, 1> scale (SRand (RdmA) / 10) + 0.9 translate } #end #end } box { <-2, -0.5, -2.5>, <2, 0.5, 2.5> } texture { T_Stone29 scale 4 rotate rtex } } union { #switch (n) #case (0) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0, 0, -1.5>, <0.75,0, -0.75>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0.75, 0, 0>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } #break #case (1) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 0>, 0.15 } cylinder { <-0.75, 0, 1.5>, <-0.75, 0, 0>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (2) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -0.75>, <-0.75, 0, 0>, 0.15 } cylinder { <0.75, 0, 0.75>, <-0.75, 0, 0>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (3) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 0>, 0.15 } cylinder { <0.75, 0, -0.75>, <-0.75, 0, 0.75>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 0.75>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (4) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -0.75>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } #break #case (5) cylinder { <-0.75, 0, -1.5>, <0.75, 0, 0>, 0.15 } cylinder { <-0.75, 0, 1.5>, <0.75, 0, 0>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, 0>, 0.15 } #break #case (6) cylinder { <-0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } #break #case (7) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, -0.75>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -0.75>, 0.15 } #break #case (8) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -0.75>, <-0.75, 0, 0.75>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } #break #case (9) cylinder { <0, 0, -1.5>, <0, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -0.75>, <-0.75, 0, 0.75>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } sphere { <0.75, 0, -0.75>, 0.15 } sphere { <-0.75, 0, 0.75>, 0.15 } #break #case (10) cylinder { <0, 0, -1.5>, <0, 0, 1.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } #break #case (11) cylinder { <0, 0, -1.5>, <0.75, 0, -0.5>, 0.15 } cylinder { <0, 0, 0.5>, <0.75, 0, -0.5>, 0.15 } cylinder { <0, 0, 1.5>, <-0.75, 0, 0.5>, 0.15 } cylinder { <0, 0, -0.5>, <-0.75, 0, 0.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0.75, 0, -0.5>, 0.15 } sphere { <0, 0, 0.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 0.5>, 0.15 } sphere { <0, 0, -0.5>, 0.15 } #break #case (12) cylinder { <0, 0, -1.5>, <0, 0, 1.5>, 0.15 } cylinder { <0, 0, -1.5>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0, 0, 1.5>, <0.75, 0, 0.75>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } sphere { <0.75, 0, 0.75>, 0.15 } sphere { <-0.75, 0, -0.75>, 0.15 } #break #case (13) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 1.5>, <0, 0, 0.75>, 0.15 } cylinder { <-0.75, 0, 1.5>, <0, 0, 0.75>, 0.15 } sphere { <0, 0, 0.75>, 0.15 } sphere { <0, 0, -0.75>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } #break #case (14) cylinder { <0, 0, -1.5>, <0, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } #break #case (15) cylinder { <-0.75, 0, -1.5>, <0.75, 0, 0>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, 0>, 0.15 } cylinder { <-0.75, 0, 0>, <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, 0>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (16) cylinder { <0, 0, -1.5>, <0, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -0.75>, <0, 0, -1.5>, 0.15 } cylinder { <0.75, 0, -0.75>, <0, 0, -1.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } sphere { <0.75, 0, -0.75>, 0.15 } sphere { <-0.75, 0, -0.75>, 0.15 } #break #case (17) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, -0.75>, 0.15 } cylinder { <0.75, 0, 1.5>, <-0.75, 0, 0.75>, 0.15 } cylinder { <0.75, 0, 0>, <-0.75, 0, 0.75>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -0.75>, 0.15 } sphere { <-0.75, 0, 0.75>, 0.15 } #break #case (18) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0, 0, -0.75>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0, 0, -0.75>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } #break #case (19) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 0>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0.75, 0, 0>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } #break #case (20) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 0>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (21) cylinder { <0, 0, -1.5>, <0.75, 0, 0>, 0.15 } cylinder { <0, 0, -1.5>, <-0.75, 0, 0>, 0.15 } cylinder { <0, 0, 1.5>, <0.75, 0, 0>, 0.15 } cylinder { <0, 0, 1.5>, <-0.75, 0, 0>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <0, 0, 1.5>, 0.15 } sphere { <0.75, 0, 0>, 0.15 } sphere { <-0.75, 0, 0>, 0.15 } #break #case (22) cylinder { <0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } cylinder { <0.75, 0, -1.5>, <-0.75, 0, 1.5>, 0.15 } cylinder { <-0.75, 0, -1.5>, <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, -1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } #break #case (23) cylinder { <0, 0, -1.5>, <0.75, 0, -0.5>, 0.15 } cylinder { <0, 0, -1.5>, <-0.75, 0, -0.5>, 0.15 } cylinder { <-0.75, 0, 1.5>, <0.75, 0, -0.5>, 0.15 } cylinder { <0.75, 0, 1.5>, <-0.75, 0, -0.5>, 0.15 } sphere { <0, 0, -1.5>, 0.15 } sphere { <-0.75, 0, 1.5>, 0.15 } sphere { <0.75, 0, 1.5>, 0.15 } sphere { <-0.75, 0, -0.5>, 0.15 } sphere { <0.75, 0, -0.5>, 0.15 } #break #end scale <1, 3, 1> translate <0, 0.5, 0> texture { T_Stone29d scale 4 rotate rtex } } } #end