#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 10 } background { color rgb <0.55, 0.70, 0.92> } // ---------------- Camera ---------------- camera { location <0, 3.9, -17.2> look_at <0, 2.0, 0.0> angle 45 } // ---------------- Lighting ---------------- light_source { <-18, 16, -18> color rgb <1.00, 0.98, 0.92>*1.05 } // sun/key light_source { < 14, 10, -10> color rgb <0.55, 0.70, 0.95>*0.55 } // cool fill light_source { < 0, 5, -6.0> color rgb <1.00, 0.72, 0.42>*0.65 } // warm facade bounce // Slight dusk haze fog { distance 60 color rgb <0.70, 0.78, 0.92> fog_type 2 fog_offset 0.5 fog_alt 2.8 turbulence 0.35 } // ---------------- Ground (grass) ---------------- plane { y, 0 texture { pigment { bozo color_map { [0.00 rgb <0.08, 0.22, 0.08>] [0.40 rgb <0.12, 0.30, 0.10>] [0.75 rgb <0.16, 0.40, 0.14>] [1.00 rgb <0.10, 0.26, 0.10>] } scale 1.1 } normal { bumps 0.35 scale 0.25 } finish { diffuse 0.9 specular 0.05 roughness 0.10 } } } // ---------------- Materials ---------------- #declare MortarColor = <0.72, 0.70, 0.66>; #declare BrickPig = pigment { // Simple brick-course pattern using gradient+warp; faster than image maps gradient x frequency 10 color_map { [0.00 rgb <0.46, 0.20, 0.14>] [0.07 rgb <0.46, 0.20, 0.14>] [0.071 rgb MortarColor] [0.10 rgb MortarColor] [0.101 rgb <0.58, 0.26, 0.18>] [0.18 rgb <0.58, 0.26, 0.18>] [0.181 rgb MortarColor] [0.21 rgb MortarColor] [0.211 rgb <0.40, 0.16, 0.12>] [0.29 rgb <0.40, 0.16, 0.12>] [0.291 rgb MortarColor] [0.33 rgb MortarColor] [0.331 rgb <0.62, 0.30, 0.22>] [1.00 rgb <0.62, 0.30, 0.22>] } warp { turbulence 0.15 } } #declare Brick_Tex = texture { pigment { average pigment_map { [0.70 BrickPig] [0.30 granite color_map { [0.00 rgb <0.44, 0.18, 0.14>] [0.40 rgb <0.58, 0.26, 0.19>] [1.00 rgb <0.62, 0.30, 0.22>] } scale 0.35 ] } scale <1.0, 0.35, 1.0> } normal { average normal_map { [0.6 bumps 0.35 scale 0.06] [0.4 wrinkles 0.25 scale 0.20] } } finish { diffuse 0.9 specular 0.12 roughness 0.06 } } #declare Trim_Tex = texture { pigment { color rgb <0.22, 0.22, 0.24> } finish { diffuse 0.85 specular 0.15 roughness 0.07 } } #declare Roof_Tex = texture { pigment { color rgb <0.30, 0.30, 0.34> } normal { bumps 0.15 scale 0.12 } finish { diffuse 0.85 specular 0.18 roughness 0.08 } } #declare Wood_Tex = texture { pigment { wood color_map { [0.00 rgb <0.26, 0.16, 0.10>] [0.35 rgb <0.40, 0.24, 0.14>] [0.70 rgb <0.24, 0.14, 0.09>] [1.00 rgb <0.48, 0.28, 0.16>] } turbulence 0.18 scale <0.22, 0.22, 2.1> rotate <0, 90, 0> } normal { bumps 0.25 scale 0.05 } finish { diffuse 0.9 specular 0.18 roughness 0.05 } } #declare Frame_Tex = texture { pigment { color rgb <0.14, 0.14, 0.15> } finish { diffuse 0.85 specular 0.18 roughness 0.05 } } #declare Glass_Tex = texture { pigment { color rgb <1.0, 0.82, 0.60> filter 0.85 transmit 0.75 } finish { diffuse 0.05 ambient 0.0 specular 0.75 roughness 0.01 reflection 0.05 } } #declare Curtain_Emissive_Tex = texture { pigment { color rgb <1.00, 0.74, 0.45>*1.35 } finish { diffuse 0.0 ambient 1.0 } } // ---------------- Building dimensions ---------------- #declare B_W = 7.5; // width (x) #declare B_H = 4.2; // height (y) #declare B_D = 5.0; // depth (z) #declare WallT = 0.25; #declare FrontZ = -B_D/2; #declare BackZ = B_D/2; #declare DoorW = 2.05; #declare DoorH = 2.65; #declare DoorY0 = 0.05; #declare WinW = 1.55; #declare WinH = 1.25; #declare WinY0 = 1.55; #declare WinX1 = -2.35; #declare WinX2 = 2.35; // ---------------- Main building + interior cavity ---------------- #declare Building = union { // Outer shell box { <-B_W/2, 0, -B_D/2>, texture { Brick_Tex } } // Hollow interior volume to allow "seeing" warm light through windows difference { box { <-B_W/2, 0, -B_D/2>, } box { <-B_W/2+WallT, 0.05, -B_D/2+WallT>, } texture { Brick_Tex } } // Roof slab box { <-B_W/2-0.05, B_H, -B_D/2-0.05>, < B_W/2+0.05, B_H+0.28, B_D/2+0.05> texture { Roof_Tex } } // Trim base box { <-B_W/2-0.07, 0, -B_D/2-0.07>, < B_W/2+0.07, 0.20, B_D/2+0.07> texture { Trim_Tex } } } // ---------------- Facade details (frames + recess) ---------------- #declare Mortar_Tex = texture { pigment { color rgb MortarColor } finish { diffuse 0.9 specular 0.06 roughness 0.10 } } #declare Facade_Details = union { // Door recess panel box { <-DoorW/2-0.22, DoorY0-0.12, FrontZ-0.01>, < DoorW/2+0.22, DoorY0+DoorH+0.20, FrontZ+0.09> texture { Mortar_Tex } } // Door frame (thin border) difference { box { <-DoorW/2-0.26, DoorY0-0.10, FrontZ-0.005>, } box { <-DoorW/2-0.12, DoorY0-0.02, FrontZ-0.02>, } texture { Frame_Tex } } #macro WinRecess(XC) box { , texture { Mortar_Tex } } difference { box { , } box { , } texture { Frame_Tex } } #end WinRecess(WinX1) WinRecess(WinX2) } // ---------------- Door ---------------- #declare Door = union { box { <-DoorW/2, DoorY0, FrontZ+0.11>, < 0.00, DoorY0+DoorH, FrontZ+0.25> texture { Wood_Tex } } box { < 0.00, DoorY0, FrontZ+0.11>, < DoorW/2, DoorY0+DoorH, FrontZ+0.25> texture { Wood_Tex } } box { <-0.03, DoorY0, FrontZ+0.25>, < 0.03, DoorY0+DoorH, FrontZ+0.265> texture { pigment { color rgb <0.10, 0.08, 0.06> } finish { diffuse 0.9 specular 0.10 roughness 0.08 } } } cylinder { <-0.40, DoorY0+1.35, FrontZ+0.27>, <-0.40, DoorY0+1.35, FrontZ+0.33>, 0.04 texture { pigment { color rgb <0.78, 0.65, 0.38> } finish { diffuse 0.35 specular 0.85 roughness 0.02 } } } cylinder { < 0.40, DoorY0+1.35, FrontZ+0.27>, < 0.40, DoorY0+1.35, FrontZ+0.33>, 0.04 texture { pigment { color rgb <0.78, 0.65, 0.38> } finish { diffuse 0.35 specular 0.85 roughness 0.02 } } } } // ---------------- Windows: glass + emissive "curtain" + stronger interior light ---------------- #declare WindowSet = union { #macro OneWindow(XC) // Glass pane (translucent) box { , texture { Glass_Tex } interior { ior 1.5 } } // Muntins box { , texture { Frame_Tex } } box { , texture { Frame_Tex } } // Emissive curtain plane behind glass (so you clearly "see light through the window") box { , texture { Curtain_Emissive_Tex } } // Warm interior light (inside) light_source { color rgb <1.0, 0.68, 0.38>*2.0 fade_distance 3.0 fade_power 2 } #end OneWindow(WinX1) OneWindow(WinX2) } // Subtle volumetric glow just inside the facade (fast: small box, low samples) #declare GlowBox = box { <-B_W/2+0.35, 0.35, FrontZ+0.30>, < B_W/2-0.35, B_H-0.35, FrontZ+1.10> hollow texture { pigment { rgbt 1 } } interior { media { scattering { 1, rgb <1.0, 0.78, 0.55>*0.08 } absorption rgb <0.20, 0.15, 0.10>*0.05 samples 8, 16 method 3 density { spherical color_map { [0.00 rgb 0.0] [0.50 rgb 0.2] [1.00 rgb 0.0] } scale 8 warp { turbulence 0.6 } } } } } // ---------------- Scene assembly ---------------- object { Building } object { Facade_Details } object { Door } object { WindowSet } object { GlowBox } // Path / worn patch box { <-1.55, 0.001, FrontZ-2.0>, <1.55, 0.003, FrontZ-0.40> texture { pigment { bozo color_map { [0.00 rgb <0.18, 0.16, 0.13>] [0.55 rgb <0.30, 0.28, 0.22>] [1.00 rgb <0.22, 0.20, 0.16>] } scale 0.55 } normal { bumps 0.25 scale 0.18 } finish { diffuse 0.9 specular 0.05 roughness 0.10 } } } // Simple sky gradient dome (cheap atmosphere) sphere { <0, 0, 0>, 200 hollow texture { pigment { gradient y color_map { [0.00 rgb <0.30, 0.45, 0.70>] [0.45 rgb <0.55, 0.70, 0.92>] [1.00 rgb <0.85, 0.92, 1.00>] } scale 2 translate y*-0.2 } finish { ambient 1 diffuse 0 } } no_shadow }