#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.75,0.88,0.90> fog_offset 0.2 fog_alt 4.5 turbulence 0.2 } #declare Mat_Ground = finish { diffuse 0.85 specular 0.05 roughness 0.08 }; #declare Mat_Bark = finish { diffuse 0.85 specular 0.08 roughness 0.06 }; #declare Mat_Leaf = finish { diffuse 0.90 specular 0.15 roughness 0.05 }; #declare Mat_Stone = finish { diffuse 0.80 specular 0.12 roughness 0.05 }; #declare C_Ground = rgb <0.26, 0.20, 0.14>; #declare C_Dirt = rgb <0.30, 0.23, 0.16>; #declare C_Bark = rgb <0.38, 0.28, 0.18>; #declare C_Vine = rgb <0.20, 0.30, 0.16>; #declare C_Leaf1 = rgb <0.12, 0.32, 0.16>; #declare C_Leaf2 = rgb <0.16, 0.40, 0.18>; #declare C_Stone = rgb <0.35, 0.35, 0.36>; // --- Ground and clearing props (no outer union wrapper to avoid CSG warnings) --- plane { y, 0 pigment { color rgb <0.22,0.20,0.16> } finish { diffuse 0.9 specular 0.02 roughness 0.1 } } // Slight mound in the clearing sphere { <0,0.55,1.5>, 1.25 pigment { color C_Dirt } finish { Mat_Ground } } // A few stones sphere { <-1.4,0.20,0.3>, 0.25 pigment { color C_Stone } finish { Mat_Stone } } sphere { <-1.1,0.16,0.9>, 0.20 pigment { color C_Stone } finish { Mat_Stone } } sphere { < 1.6,0.18,0.6>, 0.22 pigment { color C_Stone } finish { Mat_Stone } } sphere { < 1.2,0.14,1.2>, 0.18 pigment { color C_Stone } finish { Mat_Stone } } #macro Tree(Pos, TrunkH, TrunkR, LeanX, LeanZ, LeafR) union { cylinder { <0,0,0>, , TrunkR pigment { color C_Bark } finish { Mat_Bark } } sphere { , LeafR pigment { color C_Leaf2 } finish { Mat_Leaf } } sphere { , LeafR*0.85 pigment { color C_Leaf1 } finish { Mat_Leaf } } sphere { , LeafR*0.75 pigment { color C_Leaf1 } finish { Mat_Leaf } } translate Pos } #end #macro PalmLeaf(Ang, Len, Wide) union { // A broad leaf made from a scaled sphere, anchored at origin sphere { <0,0,0>, 1 scale translate <0, 0.10, Len*0.55> pigment { color C_Leaf2 } finish { Mat_Leaf } } rotate <0, Ang, 0> } #end #macro BroadPlant(Pos, StemH) union { cylinder { <0,0,0>, <0,StemH,0>, 0.07 pigment { color C_Vine } finish { Mat_Bark } } 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; // avoid using identifier 'x' cylinder { , , 0.05 pigment { color C_Vine } finish { Mat_Bark } } cylinder { , , 0.04 pigment { color C_Vine } finish { Mat_Bark } } #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 pigment { color C_Leaf1 } finish { Mat_Leaf } } sphere { , 0.40 pigment { color C_Leaf2 } finish { Mat_Leaf } } #declare j = j + 1; #end }