#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.05, 0.07, 0.10> } camera { location <42, 22, -58> look_at <0, 10, 0> angle 40 up <0,9,0> right <16,0,0> // right,up -> 16:9 } // Warm, soft lights light_source { <80, 90, -60> color rgb <1.0, 0.78, 0.60>*1.15 area_light <18,0,0>, <0,0,18>, 6, 6 adaptive 1 jitter } light_source { <-70, 55, -20> color rgb <1.0, 0.82, 0.65>*0.55 area_light <14,0,0>, <0,0,14>, 5, 5 adaptive 1 jitter } light_source { <0, 120, 0> color rgb <1.0, 0.90, 0.80>*0.25 } // Atmospheric haze fog { fog_type 2 distance 140 color rgb <0.12, 0.14, 0.18> fog_offset 0 fog_alt 12 turbulence 0.6 } // --- Simple materials (no image textures) --- #declare Mat_Concrete = texture { pigment { color rgb <0.20, 0.22, 0.26> } finish { diffuse 0.75 specular 0.10 roughness 0.05 } }; #declare Mat_DarkMetal = texture { pigment { color rgb <0.12, 0.13, 0.15> } finish { diffuse 0.60 specular 0.25 roughness 0.03 } }; #declare Mat_Glass = texture { pigment { color rgbt <0.20, 0.35, 0.45, 0.65> } finish { diffuse 0.10 specular 0.45 roughness 0.01 reflection 0.10 } }; #declare Mat_LightCyan = texture { pigment { color rgb <0.25, 0.85, 0.95> } finish { diffuse 0.40 specular 0.25 roughness 0.02 ambient 0.0 } }; #declare Mat_LightMagenta = texture { pigment { color rgb <0.95, 0.30, 0.75> } finish { diffuse 0.40 specular 0.25 roughness 0.02 ambient 0.0 } }; #declare Mat_LightAmber = texture { pigment { color rgb <1.0, 0.70, 0.25> } finish { diffuse 0.45 specular 0.20 roughness 0.03 ambient 0.0 } }; #declare Mat_Road = texture { pigment { color rgb <0.06, 0.07, 0.08> } finish { diffuse 0.9 specular 0.05 roughness 0.08 } }; // --- Ground + base slab --- plane { y, 0 texture { Mat_Road } } box { <-120, 0, -120>, <120, 0.6, 120> texture { Mat_DarkMetal } } // --- Macros --- #macro Building(BaseX, BaseZ, W, D, H, StepCount, StepInset) union { // stepped massing #local i = 0; #while (i < StepCount) #local w2 = W - 2*StepInset*i; #local d2 = D - 2*StepInset*i; #local hh = (H/StepCount)*0.70; // per-step height #local y0 = 0.6 + i*(H/StepCount)*0.55; #if (w2 < 1) #local w2 = 1; #end #if (d2 < 1) #local d2 = 1; #end box { , texture { Mat_Concrete } } #local i = i + 1; #end // crown block box { , texture { Mat_DarkMetal } } // antenna mast + tip cylinder { , , W*0.06 texture { Mat_DarkMetal } } cone { , W*0.06, , 0.0 texture { Mat_LightCyan } } // window bands #local bandCount = 7; #local b = 0; #while (b < bandCount) #local yy = 0.6 + H*(0.10 + 0.11*b); box { , texture { pigment { color rgb <0.10, 0.12, 0.14> } finish { diffuse 0.35 specular 0.25 roughness 0.02 } } } box { , texture { Mat_Glass } } #local b = b + 1; #end } #end #macro SignPanel(Cx, Cy, Cz, W, H, ColTex) box { , texture { ColTex } } #end #macro SkyBridge(X1,Z1, X2,Z2, Y, W) union { box { , texture { Mat_DarkMetal } } box { , texture { Mat_Glass } } } #end #macro TransitTube(P1, P2, R) union { cylinder { P1, P2, R texture { Mat_DarkMetal } } cylinder { P1, P2, R*0.78 texture { Mat_Glass } } // thin glow core (still simple, not emissive) cylinder { P1, P2, R*0.10 texture { Mat_LightAmber } } } #end #macro LowBlock(Cx,Cz,W,D,H, T) box { , texture { T } } #end // --- City core --- union { // main towers Building( 0, 0, 18, 18, 36, 6, 1.0) Building( 18, -8, 14, 12, 28, 5, 0.9) Building(-18, 6, 16, 14, 30, 6, 0.9) Building( 10, 18, 12, 12, 24, 5, 0.8) Building(-10, -18, 12, 16, 26, 5, 0.8) // secondary towers Building( 34, 10, 10, 10, 20, 4, 0.7) Building( 34, -18, 10, 14, 22, 4, 0.7) Building(-34, 16, 12, 10, 22, 4, 0.7) Building(-34, -12, 10, 12, 20, 4, 0.7) // skybridges SkyBridge(-18, 6, 0, 0, 16, 3.5) SkyBridge( 0, 0, 18, -8, 14, 3.5) SkyBridge(-10,-18, 10, 18, 12, 2.8) // transit tubes TransitTube(<-60, 10, -40>, < 60, 12, -10>, 1.6) TransitTube(<-55, 14, 30>, < 55, 15, 10>, 1.4) TransitTube(<-30, 18, -70>, < 10, 19, 70>, 1.2) // hover platforms #declare PlatTex = texture { pigment { color rgb <0.10,0.11,0.13> } finish { diffuse 0.55 specular 0.25 roughness 0.03 } }; union { cylinder { <22, 9.5, 8>, <22, 10.0, 8>, 4.2 texture { PlatTex } } torus { 4.2, 0.25 rotate <90,0,0> translate <22,10.0, 8> texture { Mat_LightCyan } } } union { cylinder { <-26, 11.0, -6>, <-26, 11.5, -6>, 3.6 texture { PlatTex } } torus { 3.6, 0.22 rotate <90,0,0> translate <-26,11.5,-6> texture { Mat_LightMagenta } } } // neon signage SignPanel( 9, 9.5, 8.8, 5.5, 2.0, Mat_LightMagenta) SignPanel( -7, 13.0, -8.2, 6.0, 2.2, Mat_LightCyan) SignPanel( 18.8, 11.0, -8.0, 4.0, 1.8, Mat_LightAmber) } // --- Outer low-rise blocks for depth + elevated ring road --- union { LowBlock(-70, -30, 18, 14, 7, Mat_Concrete) LowBlock(-85, -10, 14, 18, 6, Mat_DarkMetal) LowBlock(-78, 20, 20, 16, 7, Mat_Concrete) LowBlock( 70, -28, 18, 18, 7, Mat_Concrete) LowBlock( 86, -6, 16, 20, 6, Mat_DarkMetal) LowBlock( 78, 24, 22, 16, 7, Mat_Concrete) // elevated ring road torus { 58, 1.10 rotate <90,0,0> translate <0, 7.2, 0> texture { Mat_DarkMetal } } torus { 58, 0.65 rotate <90,0,0> translate <0, 7.2, 0> texture { Mat_Glass } } torus { 58, 0.18 rotate <90,0,0> translate <0, 7.2, 0> texture { Mat_LightAmber } } }