#version 3.7; global_settings { assumed_gamma 1.0 max_trace_level 8 } background { color rgb <0.05, 0.06, 0.075> } // ---------------- Camera ---------------- camera { location <0.0, 2.55, -6.9> look_at <0.0, 1.25, 0.0> angle 33 } // ---------------- Lights ---------------- light_source { <-8.0, 10.5, -10.0> color rgb <1.0, 0.98, 0.92>*1.15 } light_source { < 7.0, 5.2, -3.0> color rgb <0.45, 0.52, 0.70>*0.55 } light_source { < 0.0, 9.0, 7.5> color rgb <0.30, 0.28, 0.26>*0.50 } light_source { <-2.0, 2.6, 5.5> color rgb <0.40, 0.45, 0.55>*0.30 } // Soft frontal boost for metal read (dim) light_source { <0.0, 3.0, -4.0> color rgb <1,1,1>*0.15 } // ---------------- Materials ---------------- // Stained / tarnished metal (procedural; fixed pigment_map syntax) #declare StainedMetalTex = texture { pigment { average pigment_map { [0.62 granite color_map { [0.00 rgb <0.18, 0.19, 0.21>] [0.55 rgb <0.30, 0.31, 0.33>] [1.00 rgb <0.44, 0.45, 0.47>] } scale 0.55 ] [0.25 bozo color_map { [0.00 rgb <0.15, 0.11, 0.08>] [0.55 rgb <0.25, 0.19, 0.13>] [1.00 rgb <0.07, 0.065, 0.06>] } turbulence 0.65 scale 0.33 translate <3.1, 1.7, -2.4> ] [0.13 wrinkles color_map { [0.00 rgb <0.06, 0.09, 0.08>] [0.55 rgb <0.12, 0.20, 0.17>] [1.00 rgb <0.05, 0.07, 0.06>] } scale 0.22 translate <-1.2, 2.6, 0.8> ] } } normal { average normal_map { [0.60 bumps 0.40 scale 0.030] [0.25 wrinkles 0.25 scale 0.11] [0.15 ripples 0.10 scale 0.18] } } finish { diffuse 0.70 ambient 0 specular 0.75 roughness 0.020 reflection 0.22 metallic conserve_energy } } #declare StoneBaseTex = texture { pigment { granite color_map { [0.00 rgb <0.065, 0.07, 0.085>] [0.55 rgb <0.12, 0.125, 0.145>] [1.00 rgb <0.045, 0.05, 0.065>] } scale 1.7 } normal { bumps 0.20 scale 0.22 } finish { diffuse 0.92 ambient 0 specular 0.10 roughness 0.10 reflection 0.04 conserve_energy } } // ---------------- Environment ---------------- // Floor plane { y, 0 texture { StoneBaseTex } } // Subtle backdrop (fast) plane { z, 6.0 texture { pigment { gradient y color_map { [0.00 rgb <0.07, 0.075, 0.09>] [1.00 rgb <0.03, 0.035, 0.05>] } scale 6 translate <0,-1,0> } finish { diffuse 0.9 ambient 0 } } hollow } // ---------------- Geometry: Crusader's Cross ---------------- // Dimensions (Crusader cross style: equal arms, flared ends) #declare ArmLen = 1.18; #declare ArmWid = 0.70; #declare Thick = 0.36; #declare EndFlare = 0.56; #declare EndHalf = 0.54; // Bevel amount (kept modest for speed/robustness) #declare Bevel = 0.08; // A 2D silhouette centered at origin; we will extrude by scaling in Z #declare Cross2D = union { // Center block box { <-ArmWid/2, -ArmWid/2, -0.001>, < ArmWid/2, ArmWid/2, 0.001> } // Up arm + flared cap box { <-ArmWid/2, ArmWid/2, -0.001>, < ArmWid/2, ArmWid/2 + ArmLen, 0.001> } box { <-EndHalf, ArmWid/2 + ArmLen - EndFlare, -0.001>, < EndHalf, ArmWid/2 + ArmLen, 0.001> } // Down arm + flared cap box { <-ArmWid/2, -ArmWid/2 - ArmLen, -0.001>, < ArmWid/2, -ArmWid/2, 0.001> } box { <-EndHalf, -ArmWid/2 - ArmLen, -0.001>, < EndHalf, -ArmWid/2 - ArmLen + EndFlare, 0.001> } // Right arm + flared cap box { < ArmWid/2, -ArmWid/2, -0.001>, < ArmWid/2 + ArmLen, ArmWid/2, 0.001> } box { < ArmWid/2 + ArmLen - EndFlare, -EndHalf, -0.001>, < ArmWid/2 + ArmLen, EndHalf, 0.001> } // Left arm + flared cap box { <-ArmWid/2 - ArmLen, -ArmWid/2, -0.001>, <-ArmWid/2, ArmWid/2, 0.001> } box { <-ArmWid/2 - ArmLen, -EndHalf, -0.001>, <-ArmWid/2 - ArmLen + EndFlare, EndHalf, 0.001> } } // Helper extents for bevel cutting volume #declare OuterX = (ArmWid/2 + ArmLen); #declare OuterY = (ArmWid/2 + ArmLen); // Main cross: difference of outer and slightly inset cross to simulate bevel #declare CrossBody = union { difference { // Outer solid object { Cross2D scale <1,1,Thick> } // Inset cut to create a chamfer-like rim object { Cross2D scale <(1 - Bevel), (1 - Bevel), (Thick*0.88)> translate <0,0,0> } // Keep only the rim by trimming interior cut to avoid hollowing too much // (This box limits subtraction mostly to edges) box { <-OuterX*(1-Bevel)-0.02, -OuterY*(1-Bevel)-0.02, -Thick*0.50>, < OuterX*(1-Bevel)+0.02, OuterY*(1-Bevel)+0.02, Thick*0.50> inverse } } // Fill: add back a slightly smaller core for solidity (prevents looking like a frame) object { Cross2D scale <(1 - Bevel*0.65), (1 - Bevel*0.65), (Thick*0.92)> } // Central boss/rivet (stained metal too) cylinder { <0,0,-Thick*0.52>, <0,0, Thick*0.52>, 0.165 } sphere { <0,0, Thick*0.52>, 0.165 } sphere { <0,0,-Thick*0.52>, 0.165 } texture { StainedMetalTex } } // Place cross #declare CrossY = 1.22; object { CrossBody rotate <0, 18, 0> translate <0, CrossY, 0> } // Subtle contact shadow helper (dark translucent disc) disc { <0, 0.001, 0>, y, 1.65 texture { pigment { color rgbt <0,0,0,0.78> } finish { ambient 0 diffuse 0 } } rotate <0, 18, 0> }