#version 3.7; global_settings { assumed_gamma 1.3 max_trace_level 16 radiosity { pretrace_start 0.08 pretrace_end 0.01 count 200 nearest_count 10 error_bound 0.5 recursion_limit 2 low_error_factor 0.5 gray_threshold 0.0 } } background { color rgb <0.78, 0.90, 0.98> } camera { location <0, 4.2, -14> look_at <0, 2.2, 0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } light_source { <6, 10, -10> color rgb <1.00, 0.82, 0.65>*1.2 area_light <2.2,0,0>, <0,0,2.2>, 6, 6 adaptive 1 jitter } light_source { <-8, 7, -6> color rgb <1.00, 0.88, 0.72>*0.55 area_light <1.6,0,0>, <0,0,1.6>, 5, 5 adaptive 1 jitter } fog { fog_type 2 distance 35 color rgb <0.70,0.86,0.86> fog_offset 0.2 fog_alt 4.5 turbulence 0.25 } // -------------------- Textured materials (procedural; no image maps) -------------------- #declare Fin_Ground = finish { diffuse 0.9 specular 0.03 roughness 0.12 }; #declare Fin_Bark = finish { diffuse 0.85 specular 0.10 roughness 0.07 }; #declare Fin_Leaf = finish { diffuse 0.85 specular 0.18 roughness 0.05 }; #declare Fin_Stone = finish { diffuse 0.85 specular 0.12 roughness 0.06 }; #declare Tex_Ground = texture { pigment { average pigment_map { [1.00 granite color_map { [0.00 rgb <0.12,0.10,0.08>] [0.35 rgb <0.20,0.16,0.12>] [0.70 rgb <0.26,0.22,0.16>] [1.00 rgb <0.32,0.28,0.20>] } scale 2.2 ] [0.55 bozo color_map { [0.00 rgb <0.10,0.12,0.08>] [0.55 rgb <0.15,0.18,0.10>] [1.00 rgb <0.22,0.28,0.14>] } scale 1.2 turbulence 0.8 ] } } normal { bumps 0.55 scale 0.22 } finish { Fin_Ground } } #declare Tex_DirtMound = texture { pigment { bozo color_map { [0.00 rgb <0.18,0.13,0.09>] [0.50 rgb <0.26,0.19,0.13>] [1.00 rgb <0.34,0.26,0.18>] } scale 0.55 turbulence 0.7 } normal { bumps 0.7 scale 0.18 } finish { Fin_Ground } } #declare Tex_Bark = texture { pigment { wood color_map { [0.00 rgb <0.22,0.15,0.10>] [0.25 rgb <0.30,0.20,0.13>] [0.55 rgb <0.40,0.28,0.18>] [1.00 rgb <0.26,0.18,0.12>] } turbulence 0.15 scale 0.45 rotate <90,0,0> // grain primarily along Y for vertical trunks } normal { average normal_map { [0.65 wrinkles 0.9 scale 0.22] [0.35 bumps 0.6 scale 0.10] } } finish { Fin_Bark } } #declare Tex_Vine = texture { pigment { bozo color_map { [0.00 rgb <0.10,0.18,0.10>] [0.55 rgb <0.14,0.26,0.14>] [1.00 rgb <0.18,0.30,0.16>] } scale 0.20 turbulence 0.4 } normal { bumps 0.35 scale 0.06 } finish { diffuse 0.9 specular 0.06 roughness 0.09 } } #declare Tex_Leaf1 = texture { pigment { bozo color_map { [0.00 rgb <0.06,0.22,0.11>] [0.55 rgb <0.10,0.32,0.15>] [1.00 rgb <0.14,0.42,0.18>] } scale 0.35 turbulence 0.8 } normal { bumps 0.25 scale 0.12 } finish { Fin_Leaf } } #declare Tex_Leaf2 = texture { pigment { bozo color_map { [0.00 rgb <0.08,0.26,0.12>] [0.55 rgb <0.14,0.38,0.18>] [1.00 rgb <0.18,0.48,0.20>] } scale 0.40 turbulence 0.9 } normal { bumps 0.22 scale 0.12 } finish { Fin_Leaf } } #declare Tex_Stone = texture { pigment { granite color_map { [0.00 rgb <0.22,0.22,0.23>] [0.35 rgb <0.32,0.32,0.34>] [0.70 rgb <0.42,0.42,0.44>] [1.00 rgb <0.28,0.28,0.30>] } scale 0.35 } normal { average normal_map { [0.70 bumps 0.65 scale 0.10] [0.30 wrinkles 0.45 scale 0.22] } } finish { Fin_Stone } } // -------------------- Scene geometry -------------------- plane { y, 0 texture { Tex_Ground } } // Slight mound in the clearing sphere { <0,0.55,1.5>, 1.25 texture { Tex_DirtMound } } // A few stones sphere { <-1.4,0.20,0.3>, 0.25 texture { Tex_Stone } } sphere { <-1.1,0.16,0.9>, 0.20 texture { Tex_Stone } } sphere { < 1.6,0.18,0.6>, 0.22 texture { Tex_Stone } } sphere { < 1.2,0.14,1.2>, 0.18 texture { Tex_Stone } } #macro Tree(Pos, TrunkH, TrunkR, LeanX, LeanZ, LeafR) union { cylinder { <0,0,0>, , TrunkR texture { Tex_Bark } } sphere { , LeafR texture { Tex_Leaf2 } } sphere { , LeafR*0.85 texture { Tex_Leaf1 } } sphere { , LeafR*0.75 texture { Tex_Leaf1 } } translate Pos } #end #macro PalmLeaf(Ang, Len, Wide) union { sphere { <0,0,0>, 1 scale translate <0, 0.10, Len*0.55> texture { Tex_Leaf2 } } rotate <0, Ang, 0> } #end #macro BroadPlant(Pos, StemH) union { cylinder { <0,0,0>, <0,StemH,0>, 0.07 texture { Tex_Vine } } union { PalmLeaf( -35, 1.6, 0.55) PalmLeaf( 15, 1.8, 0.60) PalmLeaf( 75, 1.5, 0.50) PalmLeaf( 145, 1.7, 0.58) translate <0, StemH, 0> } translate Pos } #end // Foreground framing plants BroadPlant(<-3.5,0,-6.5>, 0.8) BroadPlant(< 3.6,0,-6.2>, 0.9) BroadPlant(<-2.6,0,-5.2>, 0.7) // Midground jungle ring Tree(<-5.5,0, -1.0>, 6.2, 0.28, 0.35, 0.10, 1.35) Tree(<-4.2,0, 2.0>, 5.8, 0.26, 0.25, -0.15, 1.25) Tree(<-2.5,0, 4.2>, 5.0, 0.22, -0.10, 0.20, 1.15) Tree(< 2.8,0, 4.0>, 5.2, 0.22, 0.15, 0.25, 1.15) Tree(< 5.0,0, 1.5>, 6.0, 0.27, -0.30, -0.10, 1.30) Tree(< 4.4,0, -2.2>, 5.6, 0.25, -0.20, 0.10, 1.20) Tree(< 1.8,0, -3.2>, 4.6, 0.20, 0.10, 0.00, 1.05) Tree(<-1.6,0, -3.0>, 4.8, 0.21, -0.10, 0.05, 1.05) // Background depth layer Tree(<-8.0,0, 6.5>, 7.5, 0.32, 0.30, 0.20, 1.55) Tree(< 0.0,0, 7.8>, 7.0, 0.30, -0.25, 0.10, 1.50) Tree(< 8.0,0, 6.0>, 7.4, 0.32, -0.20, -0.15, 1.55) // Hanging vines (simple thin cylinders) union { #declare i = 0; #while (i < 9) #declare vx = -4.0 + i*1.0; cylinder { , , 0.05 texture { Tex_Vine } } cylinder { , , 0.04 texture { Tex_Vine } } #declare i = i + 1; #end } // Low shrubs in clearing edges union { #declare j = 0; #while (j < 14) #declare a = j*25; #declare px = 2.7*cos(radians(a)); #declare pz = 2.1*sin(radians(a)) + 1.3; sphere { , 0.55 texture { Tex_Leaf1 } } sphere { , 0.40 texture { Tex_Leaf2 } } #declare j = j + 1; #end }