#version 3.7; //global_settings { // assumed_gamma 1.0 // max_trace_level 8 //} global_settings { assumed_gamma 1.7 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.72,0.78,0.85> } #default { finish { ambient 0 diffuse 1 } } #include "colors.inc" camera { location <1.0, 1.85, -2.9> look_at <0.5, 1.25, 1.2> angle 45 } light_source { <0, 2.78, -0.2> color rgb <1,1,1>*1.05 area_light <1.0,0,0>, <0,0,1.0>, 6, 6 adaptive 1 jitter } light_source { <-3.1, 2.1, -2.8> color rgb <1,1,1>*0.32 area_light <0,0,1.2>, <0,1.0,0>, 4, 4 adaptive 1 jitter } light_source { <2.5, 1.8, -5.3> color rgb <1,1,1>*0.18 } // soft ceiling fill to reduce flatness light_source { <0, 2.75, 0.8> color rgb <1.0,0.98,0.94>*0.35 area_light <1.6,0,0>, <0,0,1.6>, 5, 5 adaptive 1 jitter } #declare RoomHalfW = 3.2; #declare RoomHalfD = 3.6; #declare RoomH = 2.8; // -------------------- Textures (procedural, fast) -------------------- #declare TexPaintWall = texture { pigment { color rgb <0.93,0.93,0.92> } normal { bumps 0.10 scale 0.12 } finish { diffuse 0.85 specular 0.06 roughness 0.10 } }; #declare TexPaintAccent = texture { pigment { color rgb <0.88,0.91,0.95> } normal { bumps 0.08 scale 0.14 } finish { diffuse 0.85 specular 0.06 roughness 0.10 } }; #declare TexCeil = texture { pigment { color rgb <0.97,0.97,0.98> } normal { bumps 0.06 scale 0.18 } finish { diffuse 0.92 specular 0.03 roughness 0.16 } }; #declare TexTrim = texture { pigment { color rgb <0.96,0.96,0.97> } finish { diffuse 0.9 specular 0.10 roughness 0.06 } }; #declare TexWoodFloor = texture { pigment { wood color_map { [0.00 color rgb <0.33,0.23,0.15>] [0.35 color rgb <0.46,0.32,0.20>] [0.70 color rgb <0.39,0.27,0.17>] [1.00 color rgb <0.50,0.36,0.23>] } turbulence 0.12 scale <0.35, 0.35, 3.2> rotate <0, 90, 0> } normal { average normal_map { [1 bumps 0.08 scale 0.10] [1 wrinkles 0.04 scale 0.25] } } finish { diffuse 0.9 specular 0.20 roughness 0.05 reflection 0.02 } }; #declare TexDeskWood = texture { pigment { wood color_map { [0.00 color rgb <0.40,0.26,0.14>] [0.40 color rgb <0.52,0.34,0.18>] [0.75 color rgb <0.46,0.30,0.17>] [1.00 color rgb <0.56,0.38,0.22>] } turbulence 0.10 scale <0.20, 0.20, 1.6> rotate <0, 90, 0> } normal { bumps 0.10 scale 0.08 } finish { diffuse 0.85 specular 0.18 roughness 0.05 reflection 0.01 } }; #declare TexPlasticDark = texture { pigment { color rgb <0.10,0.11,0.12> } normal { bumps 0.25 scale 0.03 } finish { diffuse 0.75 specular 0.35 roughness 0.04 } }; #declare TexPlasticLight = texture { pigment { color rgb <0.73,0.75,0.78> } normal { bumps 0.20 scale 0.035 } finish { diffuse 0.82 specular 0.25 roughness 0.05 } }; #declare TexRubber = texture { pigment { color rgb <0.07,0.07,0.075> } normal { bumps 0.55 scale 0.02 } finish { diffuse 0.85 specular 0.10 roughness 0.10 } }; #declare TexBrushedMetal = texture { pigment { color rgb <0.70,0.72,0.75> } normal { average normal_map { [1 dents 0.25 scale 0.07] [1 ripples 0.08 scale <0.02,0.02,0.18>] } } finish { diffuse 0.45 specular 0.65 roughness 0.025 reflection 0.06 } }; // --- Computer/monitor-specific materials --- #declare TexMonitorPlastic = texture { pigment { granite color_map { [0.0 color rgb <0.08,0.085,0.09>] [1.0 color rgb <0.12,0.125,0.13>] } scale 0.25 } normal { average normal_map { [1 bumps 0.20 scale 0.03] [1 wrinkles 0.05 scale 0.10] } } finish { diffuse 0.75 specular 0.35 roughness 0.045 } }; #declare TexMonitorBezelEdge = texture { pigment { color rgb <0.06,0.06,0.065> } normal { bumps 0.35 scale 0.02 } finish { diffuse 0.70 specular 0.40 roughness 0.035 } }; #declare TexScreenGlass = texture { pigment { color rgb <0.02,0.03,0.04> } finish { diffuse 0.05 specular 0.95 roughness 0.006 reflection 0.20 } }; #declare TexScreenImage = texture { pigment { // FIXED: use a single valid pigment stack (no illegal pigment_map nesting) average pigment_map { [0.68 gradient y color_map { [0.00 color rgb <0.03,0.07,0.12>] [0.55 color rgb <0.05,0.24,0.36>] [1.00 color rgb <0.10,0.55,0.62>] } scale 0.55 translate <0, -0.12, 0> ] [0.32 checker color rgb <0.12,0.62,0.78>, color rgb <0.86,0.92,0.98> scale 0.08 translate <0.02,0.01,0> ] } } finish { diffuse 0.80 specular 0.10 roughness 0.07 emission 0.22 } }; #declare TexPCPaintedMetal = texture { pigment { granite color_map { [0.0 color rgb <0.16,0.17,0.18>] [1.0 color rgb <0.22,0.23,0.24>] } scale 0.35 } normal { bumps 0.16 scale 0.05 } finish { diffuse 0.72 specular 0.35 roughness 0.05 reflection 0.03 } }; #declare TexPCFrontPlastic = texture { pigment { color rgb <0.09,0.095,0.10> } normal { bumps 0.35 scale 0.025 } finish { diffuse 0.75 specular 0.25 roughness 0.06 } }; #declare TexPCVent = texture { pigment { color rgb <0.03,0.03,0.032> } finish { diffuse 0.65 specular 0.12 roughness 0.10 } }; #declare TexPCLogo = texture { pigment { gradient x color_map { [0.00 color rgb <0.06,0.58,0.82>] [0.50 color rgb <0.90,0.94,0.98>] [1.00 color rgb <0.14,0.70,0.35>] } scale 0.12 } finish { diffuse 0.85 specular 0.35 roughness 0.04 } }; #declare TexRug = texture { pigment { checker color rgb <0.22,0.24,0.28>, color rgb <0.18,0.19,0.22> scale 0.25 } normal { bumps 0.65 scale 0.03 } finish { diffuse 0.95 specular 0.05 roughness 0.12 } }; // -------------------- Room geometry -------------------- union { box { <-RoomHalfW, 0, -RoomHalfD>, < RoomHalfW, 0.02, RoomHalfD> texture {TexWoodFloor} } box { <-RoomHalfW, RoomH, -RoomHalfD>, < RoomHalfW, RoomH+0.02, RoomHalfD> texture {TexCeil} } box { <-RoomHalfW, 0, RoomHalfD-0.02>, texture {TexPaintAccent} } box { <-RoomHalfW, 0, -RoomHalfD>, <-RoomHalfW+0.02, RoomH, RoomHalfD> texture {TexPaintWall} } box { , texture {TexPaintWall} } } #declare TrimH = 0.10; #declare TrimT = 0.03; union { box { <-RoomHalfW, 0, RoomHalfD-TrimT>, texture {TexTrim} } box { <-RoomHalfW, 0, -RoomHalfD>, <-RoomHalfW+TrimT, TrimH, RoomHalfD> texture {TexTrim} } box { , texture {TexTrim} } } // Window panel on left wall union { box { <0, 1.05, -1.2>, <0.01, 2.10, 0.20> texture { pigment { color rgbt <0.85,0.92,1.0, 0.70> } finish { specular 0.65 roughness 0.02 reflection 0.06 } } } box { <-0.005, 1.02, -1.23>, <0.02, 2.13, 0.23> texture {TexTrim} } translate <-RoomHalfW+0.02, 0, 0> } // Rug box { <-1.15, 0.021, 1.05>, <1.15, 0.035, 2.65> texture {TexRug} } // -------------------- Desk + computer setup -------------------- #declare DeskTopY = 0.75; #declare DeskW = 1.70; #declare DeskD = 0.80; #declare DeskT = 0.05; #declare DeskPos = <0.0, 0.0, 2.45>; #declare TexDeskLeg = texture { pigment { color rgb <0.35,0.22,0.13> } normal { bumps 0.10 scale 0.06 } finish { diffuse 0.85 specular 0.15 roughness 0.06 } }; union { box { <-DeskW/2, DeskTopY, -DeskD/2>, texture {TexDeskWood} } box { <-DeskW/2, DeskTopY-0.08, -DeskD/2>, texture {TexDeskWood} } #declare LegW = 0.085; #declare LegH = DeskTopY-0.01; #declare OffX = DeskW/2 - 0.12; #declare OffZ = DeskD/2 - 0.12; box { <-OffX-LegW/2, 0, -OffZ-LegW/2>, <-OffX+LegW/2, LegH, -OffZ+LegW/2> texture {TexDeskLeg} } box { < OffX-LegW/2, 0, -OffZ-LegW/2>, < OffX+LegW/2, LegH, -OffZ+LegW/2> texture {TexDeskLeg} } box { <-OffX-LegW/2, 0, OffZ-LegW/2>, <-OffX+LegW/2, LegH, OffZ+LegW/2> texture {TexDeskLeg} } box { < OffX-LegW/2, 0, OffZ-LegW/2>, < OffX+LegW/2, LegH, OffZ+LegW/2> texture {TexDeskLeg} } // subtle desk grommet cylinder { <0.72, DeskTopY+DeskT+0.001, 0.30>, <0.72, DeskTopY+DeskT+0.008, 0.30>, 0.035 texture {TexPlasticDark} } translate DeskPos } // Monitor (textured) #declare MonitorPos = DeskPos + <0.00, DeskTopY+DeskT, 0.12>; union { // outer frame box { <-0.34, 0.12, -0.040>, <0.34, 0.52, 0.040> texture {TexMonitorPlastic} } // bezel lip box { <-0.332, 0.128, -0.0405>, <0.332, 0.512, -0.0340> texture {TexMonitorBezelEdge} } // inner bezel box { <-0.31, 0.15, -0.034>, <0.31, 0.49, 0.030> texture {TexMonitorPlastic} } // screen image plane box { <-0.29, 0.17, -0.033>, <0.29, 0.47, -0.029> texture {TexScreenImage} } // screen glass (thin, reflective) box { <-0.29, 0.17, -0.0285>, <0.29, 0.47, -0.0270> texture {TexScreenGlass} } // status LED box { <0.315, 0.132, -0.039>, <0.330, 0.145, -0.034> texture { pigment { color rgb <0.05,0.95,0.35> } finish { emission 0.6 diffuse 0.4 } } } // stand neck box { <-0.045, 0.00, -0.025>, <0.045, 0.16, 0.025> texture {TexBrushedMetal} } // hinge block box { <-0.08, 0.14, -0.03>, <0.08, 0.20, 0.03> texture {TexMonitorPlastic} } // base box { <-0.22, -0.01, -0.12>, <0.22, 0.02, 0.12> texture {TexMonitorPlastic} } box { <-0.18, 0.020, -0.10>, <0.18, 0.028, 0.10> texture {TexRubber} } translate MonitorPos } // Keyboard union { box { <-0.30, 0.00, -0.11>, <0.30, 0.03, 0.11> texture {TexPlasticDark} } box { <-0.28, 0.0305, -0.09>, <0.28, 0.0340, 0.09> texture {TexPlasticLight} } box { <-0.27, 0.0341, -0.085>, <0.27, 0.0346, 0.085> texture { pigment { checker color rgb <0.78,0.80,0.83>, color rgb <0.70,0.72,0.75> scale 0.045 } finish { diffuse 0.75 specular 0.12 roughness 0.08 } } } translate (DeskPos + <0.00, DeskTopY+DeskT, -0.22>) } // Mouse union { sphere { <0,0.035,0>, 0.055 texture {TexPlasticDark} scale <1.25,0.75,1.65> } box { <-0.02, 0.045, -0.02>, <0.02, 0.055, 0.05> texture {TexPlasticLight} } translate (DeskPos + <0.46, DeskTopY+DeskT, -0.22>) } // Computer tower on desk right (textured) union { // main body (painted metal) box { <-0.11, 0.00, -0.19>, <0.11, 0.46, 0.19> texture {TexPCPaintedMetal} } // side panel inset (brushed metal accent) box { <-0.097, 0.05, -0.188>, <0.097, 0.43, -0.168> texture {TexBrushedMetal} } // front fascia (plastic) box { <-0.112, 0.01, 0.158>, <0.112, 0.45, 0.192> texture {TexPCFrontPlastic} } // front "logo" stripe box { <-0.070, 0.30, 0.1921>, <0.070, 0.33, 0.196> texture {TexPCLogo} } // front I/O hint box { <-0.070, 0.10, 0.1921>, <0.070, 0.125, 0.196> texture { pigment { color rgb <0.20,0.21,0.22> } finish { diffuse 0.8 specular 0.15 roughness 0.08 } } } cylinder { <-0.045, 0.113, 0.196>, <-0.045, 0.113, 0.202>, 0.006 texture { pigment { color rgb <0.04,0.04,0.045> } finish { diffuse 0.8 } } } cylinder { <-0.020, 0.113, 0.196>, <-0.020, 0.113, 0.202>, 0.006 texture { pigment { color rgb <0.04,0.04,0.045> } finish { diffuse 0.8 } } } box { <0.020, 0.107, 0.196>, <0.060, 0.119, 0.202> texture { pigment { color rgb <0.04,0.04,0.045> } finish { diffuse 0.8 } } } // rear vents #declare i = 0; #while (i < 9) box { <-0.090, 0.08 + i*0.038, -0.190>, <0.090, 0.09 + i*0.038, -0.176> texture {TexPCVent} } #declare i = i + 1; #end // power button with LED ring cylinder { <0.065, 0.41, 0.1922>, <0.065, 0.41, 0.198>, 0.012 texture { pigment { color rgb <0.70,0.72,0.75> } finish { diffuse 0.5 specular 0.6 roughness 0.03 } } } cylinder { <0.065, 0.41, 0.198>, <0.065, 0.41, 0.205>, 0.008 texture { pigment { color rgb <0.10,0.95,0.45> } finish { emission 0.45 diffuse 0.35 } } } // subtle edge wear strip box { <-0.1122, 0.00, -0.1902>, <-0.1095, 0.46, 0.1902> texture { pigment { color rgb <0.28,0.29,0.30> } finish { diffuse 0.6 specular 0.25 roughness 0.07 } } } translate (DeskPos + <0.68, DeskTopY+DeskT, 0.20>) } // Cables union { cylinder { <0.72, DeskTopY+DeskT+0.005, 0.30>, <0.72, 0.05, 0.30>, 0.006 texture {TexRubber} } cylinder { <0.00, DeskTopY+DeskT+0.005, 0.00>, <0.20, DeskTopY+DeskT+0.005, -0.22>, 0.004 texture {TexRubber} } translate DeskPos } // Chair #declare ChairPos = <0.0, 0.0, 1.60>; #declare TexChairFabric = texture { pigment { color rgb <0.18,0.19,0.20> } normal { bumps 0.55 scale 0.03 } finish { diffuse 0.90 specular 0.12 roughness 0.08 } }; union { box { <-0.23, 0.45, -0.23>, <0.23, 0.53, 0.23> texture {TexChairFabric} } box { <-0.23, 0.53, 0.16>, <0.23, 1.05, 0.24> texture {TexChairFabric} } box { <-0.16, 0.66, 0.155>, <0.16, 0.88, 0.245> texture {TexPlasticDark} } cylinder { <0,0.12,0>, <0,0.45,0>, 0.055 texture {TexBrushedMetal} } cylinder { <0,0.09,0>, <0,0.12,0>, 0.24 texture {TexBrushedMetal} } cylinder { <0,0.085,0>, <0,0.09,0>, 0.26 texture {TexPlasticDark} } translate ChairPos } // Wall picture on left wall union { box { <-0.012, 1.12, 0.50>, <0.012, 1.70, 1.52> texture { pigment { color rgb <0.12,0.12,0.13> } normal { bumps 0.25 scale 0.03 } finish { diffuse 0.7 specular 0.25 roughness 0.05 } } } box { <-0.006, 1.16, 0.54>, <0.006, 1.66, 1.48> texture { pigment { gradient y color_map { [0 color rgb <0.15,0.35,0.60>] [0.6 color rgb <0.85,0.90,0.95>] [1 color rgb <0.95,0.95,0.96>] } } finish { diffuse 0.9 specular 0.12 roughness 0.06 } } } translate <-RoomHalfW+0.02, 0, 0> } // Shelf on right wall with books union { box { <-0.45, 1.12, -0.13>, <0.45, 1.18, 0.13> texture {TexDeskWood} } box { <-0.40, 0.98, -0.11>, <-0.33, 1.12, 0.11> texture {TexDeskWood} } box { < 0.33, 0.98, -0.11>, < 0.40, 1.12, 0.11> texture {TexDeskWood} } box { <-0.20, 1.18, -0.085>, <-0.11, 1.46, 0.085> texture { pigment {color rgb <0.78,0.20,0.22>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } box { <-0.10, 1.18, -0.085>, <-0.02, 1.42, 0.085> texture { pigment {color rgb <0.22,0.55,0.28>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } box { < 0.00, 1.18, -0.085>, < 0.09, 1.48, 0.085> texture { pigment {color rgb <0.22,0.32,0.72>} normal {bumps 0.25 scale 0.04} finish {diffuse 0.85 specular 0.10 roughness 0.08} } } translate rotate <0,180,0> }