// Neat European-style castle in summer (clean lighting, simple shading, fast) #version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 6 } background { color rgb <0.62, 0.86, 1.00> } // clean summer sky // --- Camera (kept similar; slightly tidied framing) --- camera { location <0, 10.2, -27.5> look_at <0, 5.6, 0.0> angle 36 } // --- Neat summer lighting: warm sun + cool sky fill + soft rim + gentle bounce --- // Key "sun" (warm, soft shadows) light_source { <55, 75, -55> color rgb <1.00, 0.92, 0.78>*1.15 area_light <10,0,0>, <0,0,10>, 6, 6 adaptive 1 jitter } // Sky fill (cooler, very soft) light_source { <-40, 45, -10> color rgb <0.80, 0.90, 1.00>*0.45 area_light <14,0,0>, <0,0,14>, 6, 6 adaptive 1 jitter } // Rim/back light (tiny lift on silhouettes) light_source { <10, 35, 55> color rgb <1.00, 0.95, 0.90>*0.18 area_light <10,0,0>, <0,6,0>, 5, 3 adaptive 1 jitter } // Big soft "bounce" from ground direction (shadow lift; very subtle) light_source { <0, 8, -10> color rgb <1.00, 0.97, 0.92>*0.12 area_light <30,0,0>, <0,0,30>, 4, 4 adaptive 1 jitter } // --- Simple shading (no textures) --- #declare F_Stone = finish { diffuse 0.85 specular 0.10 roughness 0.06 }; #declare F_Roof = finish { diffuse 0.82 specular 0.10 roughness 0.07 }; #declare F_Wood = finish { diffuse 0.80 specular 0.06 roughness 0.10 }; #declare F_Grass = finish { diffuse 0.92 specular 0.02 roughness 0.25 }; #declare F_Dirt = finish { diffuse 0.88 specular 0.02 roughness 0.25 }; #declare F_Floor = finish { diffuse 0.72 specular 0.02 roughness 0.30 }; #declare F_Metal = finish { diffuse 0.55 specular 0.18 roughness 0.06 }; #declare C_Stone = color rgb <0.78, 0.79, 0.77>; // clean limestone feel #declare C_Roof = color rgb <0.55, 0.28, 0.20>; // clay tile #declare C_Wood = color rgb <0.32, 0.20, 0.11>; #declare C_Grass = color rgb <0.20, 0.62, 0.22>; #declare C_Dirt = color rgb <0.55, 0.46, 0.32>; #declare C_Floor = color rgb <0.22, 0.23, 0.24>; #declare T_Stone = texture { pigment { C_Stone } finish { F_Stone } } #declare T_Roof = texture { pigment { C_Roof } finish { F_Roof } } #declare T_Wood = texture { pigment { C_Wood } finish { F_Wood } } #declare T_Grass = texture { pigment { C_Grass } finish { F_Grass } } #declare T_Dirt = texture { pigment { C_Dirt } finish { F_Dirt } } #declare T_Floor = texture { pigment { C_Floor } finish { F_Floor } } // --- Ground --- plane { y, 0 texture { T_Grass } } // Dirt path strip leading to gate (slightly raised to sit on grass cleanly) box { <-1.8, 0.001, -28>, <1.8, 0.012, -6.9> texture { T_Dirt } } // Small widening near the gate box { <-3.0, 0.001, -8.2>, <3.0, 0.012, -6.7> texture { T_Dirt } } // --- Castle dimensions (kept for precise fit) --- #declare BaseY0 = 0.0; #declare WallH = 6.0; // --- Main castle union --- union { // --- Outer curtain wall (hollow box) --- difference { box { <-9, BaseY0, -7>, < 9, BaseY0+WallH, 7> } box { <-8, BaseY0-0.01, -6>, < 8, BaseY0+WallH-0.8, 6> } // front gate opening box { <-1.4, BaseY0, -7.2>, <1.4, BaseY0+3.2, -5.9> } texture { T_Stone } } // --- Wall crenellations --- union { #declare Step = 1.6; // front edge #declare X = -8.2; #while (X <= 8.2) box { , } #declare X = X + Step; #end // back edge #declare X2 = -8.2; #while (X2 <= 8.2) box { , } #declare X2 = X2 + Step; #end // left edge #declare Z = -5.6; #while (Z <= 5.6) box { <-9.0, BaseY0+WallH, Z>, <-8.2, BaseY0+WallH+1.0, Z+0.8> } #declare Z = Z + Step; #end // right edge #declare Z2 = -5.6; #while (Z2 <= 5.6) box { <8.2, BaseY0+WallH, Z2>, <9.0, BaseY0+WallH+1.0, Z2+0.8> } #declare Z2 = Z2 + Step; #end texture { T_Stone } } // --- Corner towers --- #declare TowerR = 2.1; #declare TowerH = 9.0; union { cylinder { <-9, BaseY0, -7>, <-9, BaseY0+TowerH, -7>, TowerR } cylinder { < 9, BaseY0, -7>, < 9, BaseY0+TowerH, -7>, TowerR } cylinder { <-9, BaseY0, 7>, <-9, BaseY0+TowerH, 7>, TowerR } cylinder { < 9, BaseY0, 7>, < 9, BaseY0+TowerH, 7>, TowerR } texture { T_Stone } } // --- Tower roofs --- union { cone { <-9, BaseY0+TowerH, -7>, TowerR+0.1, <-9, BaseY0+TowerH+2.4, -7>, 0.2 } cone { < 9, BaseY0+TowerH, -7>, TowerR+0.1, < 9, BaseY0+TowerH+2.4, -7>, 0.2 } cone { <-9, BaseY0+TowerH, 7>, TowerR+0.1, <-9, BaseY0+TowerH+2.4, 7>, 0.2 } cone { < 9, BaseY0+TowerH, 7>, TowerR+0.1, < 9, BaseY0+TowerH+2.4, 7>, 0.2 } texture { T_Roof } } // --- Central keep --- #declare KeepW = 7.0; #declare KeepD = 5.0; #declare KeepH = 10.5; difference { box { <-KeepW/2, BaseY0, -KeepD/2>, } // slit windows #declare WY0 = BaseY0+3.0; #declare WY1 = BaseY0+4.6; // front slits box { <-2.8, WY0, -KeepD/2-0.2>, <-2.4, WY1, -KeepD/2+0.4> } box { < 2.4, WY0, -KeepD/2-0.2>, < 2.8, WY1, -KeepD/2+0.4> } // side slits box { <-KeepW/2-0.2, WY0, -1.4>, <-KeepW/2+0.4, WY1, -1.0> } box { < KeepW/2-0.4, WY0, 1.0>, < KeepW/2+0.2, WY1, 1.4> } // higher slit #declare WY2 = BaseY0+6.3; #declare WY3 = BaseY0+7.9; box { <-0.2, WY2, -KeepD/2-0.2>, <0.2, WY3, -KeepD/2+0.4> } texture { T_Stone } } // Keep crenellations union { #declare S = 1.2; // front #declare KX = -KeepW/2; #while (KX <= KeepW/2-0.6) box { , } #declare KX = KX + S; #end // back #declare KX2 = -KeepW/2; #while (KX2 <= KeepW/2-0.6) box { , } #declare KX2 = KX2 + S; #end // left #declare KZ = -KeepD/2; #while (KZ <= KeepD/2-0.6) box { <-KeepW/2, BaseY0+KeepH, KZ>, <-KeepW/2+0.6, BaseY0+KeepH+1.0, KZ+0.6> } #declare KZ = KZ + S; #end // right #declare KZ2 = -KeepD/2; #while (KZ2 <= KeepD/2-0.6) box { , } #declare KZ2 = KZ2 + S; #end texture { T_Stone } } // --- Gatehouse block with wooden door inset --- union { difference { box { <-3.2, BaseY0, -8.6>, <3.2, BaseY0+5.0, -6.2> } // door recess box { <-1.2, BaseY0, -8.7>, <1.2, BaseY0+3.0, -7.6> } texture { T_Stone } } // wooden door slab box { <-1.15, BaseY0, -7.65>, <1.15, BaseY0+2.95, -7.62> texture { T_Wood } } // small gatehouse crenels #declare GX = -3.0; #while (GX <= 2.4) box { , } #declare GX = GX + 1.2; #end texture { T_Stone } } // --- Courtyard floor hint --- box { <-7.7, BaseY0+0.02, -5.7>, <7.7, BaseY0+0.04, 5.7> texture { T_Floor } } // --- Simple banner on the keep --- union { // pole cylinder { <0, BaseY0+KeepH-0.4, -KeepD/2-0.05>, <0, BaseY0+KeepH+2.0, -KeepD/2-0.05>, 0.06 texture { pigment { color rgb <0.25,0.25,0.26> } finish { F_Metal } } } // cloth box { <0.05, BaseY0+KeepH+1.1, -KeepD/2-0.04>, <1.85, BaseY0+KeepH+1.85, -KeepD/2-0.03> texture { pigment { gradient x color_map { [0.00 color rgb <0.78,0.12,0.12>] [0.50 color rgb <0.78,0.12,0.12>] [0.50 color rgb <0.98,0.93,0.72>] [1.00 color rgb <0.98,0.93,0.72>] } scale 1.8 } finish { diffuse 0.90 specular 0.06 roughness 0.10 } } } } translate <0, 0.001, 0> } // --- Simple shrubs (clean, fast) --- #declare T_Shrub = texture { pigment { color rgb <0.12, 0.36, 0.14> } finish { diffuse 0.88 specular 0.02 roughness 0.25 } } union { sphere { <-6.8, 0.55, -10.0>, 0.65 texture { T_Shrub } } sphere { <-7.6, 0.45, -9.2>, 0.55 texture { T_Shrub } } sphere { < 6.7, 0.55, -10.3>, 0.65 texture { T_Shrub } } sphere { < 7.5, 0.45, -9.4>, 0.55 texture { T_Shrub } } } // --- Very subtle summer atmosphere (cleaner than before) --- fog { distance 220 color rgb <0.62, 0.86, 1.00> fog_type 2 fog_offset 0.0 fog_alt 35 turbulence 0.0 }