#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 } // -------------------- Warm conical lights (spot) + soft shadows -------------------- light_source { <6, 10, -10> color rgb <1.00, 0.82, 0.65>*1.35 spotlight point_at <0, 1.8, 1.0> radius 14 falloff 24 tightness 8 // soften shadows area_light <1.8,0,0>, <0,0,1.8>, 5, 5 adaptive 1 jitter } light_source { <-8, 7, -6> color rgb <1.00, 0.88, 0.72>*0.70 spotlight point_at <0, 1.4, 0.6> radius 12 falloff 22 tightness 10 // soften shadows area_light <1.4,0,0>, <0,0,1.4>, 5, 5 adaptive 1 jitter } // Gentle ambient fill so shadows aren't crushed light_source { <0, 18, -2> color rgb <1.00, 0.92, 0.82>*0.18 shadowless } // -------------------- Atmosphere: ground haze + visible light cones -------------------- fog { fog_type 2 distance 38 color rgb <0.70,0.86,0.86> fog_offset 0.2 fog_alt 4.8 turbulence 0.20 } // A bounded media volume (keeps render fast vs infinite media) #declare AtmosBox = box { <-40,0,-45>, <40,18,30> } object { AtmosBox hollow // slightly bluish/greenish jungle air pigment { rgbt <1,1,1, 1> } // fully transparent container interior { media { method 3 intervals 1 samples 8, 16 // scattering makes the cones visible scattering { 1, rgb <0.85, 0.95, 0.90>*0.10 } absorption rgb <0.06,0.08,0.06>*0.15 density { // subtle variation so beams feel atmospheric bozo color_map { [0.00 rgb 0.20] [0.55 rgb 0.45] [1.00 rgb 0.10] } scale 6 turbulence 0.9 } } } } // -------------------- Simple, texture-free materials -------------------- #declare Fin_Matte = finish { diffuse 0.90 specular 0.05 roughness 0.12 }; #declare Fin_Leaf = finish { diffuse 0.85 specular 0.12 roughness 0.08 }; #declare Fin_Bark = finish { diffuse 0.88 specular 0.08 roughness 0.10 }; #declare Fin_Stone = finish { diffuse 0.85 specular 0.10 roughness 0.08 }; #declare Col_Ground = pigment { color rgb <0.20,0.18,0.12> }; #declare Col_Mound = pigment { color rgb <0.26,0.21,0.14> }; #declare Col_Bark = pigment { color rgb <0.40,0.29,0.18> }; #declare Col_Vine = pigment { color rgb <0.14,0.26,0.14> }; #declare Col_Leaf1 = pigment { color rgb <0.12,0.36,0.18> }; #declare Col_Leaf2 = pigment { color rgb <0.10,0.30,0.16> }; #declare Col_Stone = pigment { color rgb <0.38,0.38,0.40> }; // -------------------- Scene geometry -------------------- plane { y, 0 texture { Col_Ground finish { Fin_Matte } } } // Slight mound in the clearing sphere { <0,0.55,1.5>, 1.25 texture { Col_Mound finish { Fin_Matte } } } // A few stones sphere { <-1.4,0.20,0.3>, 0.25 texture { Col_Stone finish { Fin_Stone } } } sphere { <-1.1,0.16,0.9>, 0.20 texture { Col_Stone finish { Fin_Stone } } } sphere { < 1.6,0.18,0.6>, 0.22 texture { Col_Stone finish { Fin_Stone } } } sphere { < 1.2,0.14,1.2>, 0.18 texture { Col_Stone finish { Fin_Stone } } } #macro Tree(Pos, TrunkH, TrunkR, LeanX, LeanZ, LeafR) union { cylinder { <0,0,0>, , TrunkR texture { Col_Bark finish { Fin_Bark } } } sphere { , LeafR texture { Col_Leaf2 finish { Fin_Leaf } } } sphere { , LeafR*0.85 texture { Col_Leaf1 finish { Fin_Leaf } } } sphere { , LeafR*0.75 texture { Col_Leaf1 finish { Fin_Leaf } } } translate Pos } #end #macro PalmLeaf(Ang, Len, Wide) union { sphere { <0,0,0>, 1 scale translate <0, 0.10, Len*0.55> texture { Col_Leaf2 finish { Fin_Leaf } } } rotate <0, Ang, 0> } #end #macro BroadPlant(Pos, StemH) union { cylinder { <0,0,0>, <0,StemH,0>, 0.07 texture { Col_Vine finish { Fin_Matte } } } 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 { Col_Vine finish { Fin_Matte } } } cylinder { , , 0.04 texture { Col_Vine finish { Fin_Matte } } } #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 { Col_Leaf1 finish { Fin_Leaf } } } sphere { , 0.40 texture { Col_Leaf2 finish { Fin_Leaf } } } #declare j = j + 1; #end }