diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0318b0f..3639909 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,9 @@ jobs: runs-on: ubuntu-latest container: fedora:39 deps: dnf install -y gcc make libX11-devel libXext-devel zlib-devel + - distro: macos-15 + runs-on: macos-15 + deps: "true" runs-on: ${{ matrix.runs-on }} container: ${{ matrix.container || '' }} diff --git a/Makefile b/Makefile index cf2ce0d..063f706 100644 --- a/Makefile +++ b/Makefile @@ -100,12 +100,12 @@ CC = gcc RM = rm -f -CFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -g3 -O3 +CFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -Wno-strict-prototypes -g3 -O3 -DBGFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -g3 -O0 \ +DBGFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -Wno-strict-prototypes -g3 -O0 \ -fsanitize=address,undefined -fno-omit-frame-pointer -RELFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -O3 -DNDEBUG +RELFLAGS = -Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion -Wno-strict-prototypes -O3 -DNDEBUG SANFLAGS = $(DBGFLAGS) diff --git a/renders_preview/benchmark.png b/renders_preview/benchmark.png index 42877ef..77cf8b1 100644 Binary files a/renders_preview/benchmark.png and b/renders_preview/benchmark.png differ diff --git a/renders_preview/cathedral_ruins.png b/renders_preview/cathedral_ruins.png index 844915c..0d6f036 100644 Binary files a/renders_preview/cathedral_ruins.png and b/renders_preview/cathedral_ruins.png differ diff --git a/renders_preview/cornell_box.png b/renders_preview/cornell_box.png index 1a5db3b..a4fe26d 100644 Binary files a/renders_preview/cornell_box.png and b/renders_preview/cornell_box.png differ diff --git a/renders_preview/cylinder.png b/renders_preview/cylinder.png index 0f54a72..e4dcd3b 100644 Binary files a/renders_preview/cylinder.png and b/renders_preview/cylinder.png differ diff --git a/renders_preview/dof_test.png b/renders_preview/dof_test.png index a0321e7..31de9d2 100644 Binary files a/renders_preview/dof_test.png and b/renders_preview/dof_test.png differ diff --git a/renders_preview/example.png b/renders_preview/example.png index 6985252..2186269 100644 Binary files a/renders_preview/example.png and b/renders_preview/example.png differ diff --git a/renders_preview/glass_spheres.png b/renders_preview/glass_spheres.png index f2fdf0b..179a38d 100644 Binary files a/renders_preview/glass_spheres.png and b/renders_preview/glass_spheres.png differ diff --git a/renders_preview/lights.png b/renders_preview/lights.png index 4c762a1..2092263 100644 Binary files a/renders_preview/lights.png and b/renders_preview/lights.png differ diff --git a/renders_preview/materials.png b/renders_preview/materials.png index cf5afc7..692f743 100644 Binary files a/renders_preview/materials.png and b/renders_preview/materials.png differ diff --git a/renders_preview/mixed_shapes.png b/renders_preview/mixed_shapes.png index 81c8fbb..93e09f0 100644 Binary files a/renders_preview/mixed_shapes.png and b/renders_preview/mixed_shapes.png differ diff --git a/renders_preview/motion_blur.png b/renders_preview/motion_blur.png index 92fcfb4..3d5c214 100644 Binary files a/renders_preview/motion_blur.png and b/renders_preview/motion_blur.png differ diff --git a/renders_preview/new_shapes.png b/renders_preview/new_shapes.png index 9798263..a1aae89 100644 Binary files a/renders_preview/new_shapes.png and b/renders_preview/new_shapes.png differ diff --git a/renders_preview/objects.png b/renders_preview/objects.png index 9735138..db51551 100644 Binary files a/renders_preview/objects.png and b/renders_preview/objects.png differ diff --git a/renders_preview/pbr_showcase.png b/renders_preview/pbr_showcase.png index dac9cd7..081a7fa 100644 Binary files a/renders_preview/pbr_showcase.png and b/renders_preview/pbr_showcase.png differ diff --git a/renders_preview/quadrics.png b/renders_preview/quadrics.png index 9b04a41..86e208d 100644 Binary files a/renders_preview/quadrics.png and b/renders_preview/quadrics.png differ diff --git a/renders_preview/reflections.png b/renders_preview/reflections.png index 987b123..e11c478 100644 Binary files a/renders_preview/reflections.png and b/renders_preview/reflections.png differ diff --git a/renders_preview/solar_system.png b/renders_preview/solar_system.png index 70b195c..0409ad5 100644 Binary files a/renders_preview/solar_system.png and b/renders_preview/solar_system.png differ diff --git a/renders_preview/spiral.png b/renders_preview/spiral.png index 6f15815..93fcd5d 100644 Binary files a/renders_preview/spiral.png and b/renders_preview/spiral.png differ diff --git a/renders_preview/taurus.png b/renders_preview/taurus.png index 9c983c8..84b778f 100644 Binary files a/renders_preview/taurus.png and b/renders_preview/taurus.png differ diff --git a/renders_preview/triangle.png b/renders_preview/triangle.png index 86cc2a3..26b0565 100644 Binary files a/renders_preview/triangle.png and b/renders_preview/triangle.png differ diff --git a/saves/cathedral_ruins.bmp b/saves/cathedral_ruins.bmp index fe99969..2961ffd 100755 Binary files a/saves/cathedral_ruins.bmp and b/saves/cathedral_ruins.bmp differ diff --git a/scenes/cathedral_ruins.rt b/scenes/cathedral_ruins.rt index 771f7a3..652572e 100644 --- a/scenes/cathedral_ruins.rt +++ b/scenes/cathedral_ruins.rt @@ -155,16 +155,24 @@ sp -1.3,11.3,-29.3 0.5 200,100,255 trans:0.8 ior:1.5 sp -1.3,12.7,-29.3 0.5 255,200,100 trans:0.8 ior:1.5 sp 0.0,12.0,-29.3 0.7 255,255,220 trans:0.85 ior:1.5 spec:0.5 -bx 0.0,1.5,-27.0 3.0,1.5,1.5 220,210,190 spec:0.3 -bx 0.0,0.5,-27.0 3.5,0.5,2.0 210,200,180 - -cy -1.0,2.25,-27.0 0.0,1.0,0.0 0.15 1.5 240,230,200 spec:0.4 -sp -1.0,3.75,-27.0 0.25 255,220,100 spec:0.8 -cy 1.0,2.25,-27.0 0.0,1.0,0.0 0.15 1.5 240,230,200 spec:0.4 -sp 1.0,3.75,-27.0 0.25 255,220,100 spec:0.8 - -cy 0.0,2.25,-27.5 0.0,1.0,0.0 0.2 3.0 150,120,40 spec:0.6 refl:0.2 -cy 0.0,4.0,-27.5 1.0,0.0,0.0 0.2 1.5 150,120,40 spec:0.6 refl:0.2 +bx 0.0,0.15,-26.0 8.0,0.15,4.0 200,190,170 +bx 0.0,0.35,-26.5 6.0,0.15,3.0 200,190,170 +bx 0.0,1.2,-27.0 4.0,1.0,1.8 100,80,60 spec:0.25 +bx 0.0,1.75,-27.0 4.3,0.05,2.0 240,235,225 +cy -1.5,1.8,-27.0 0.0,1.0,0.0 0.1 1.0 240,230,200 +sp -1.5,2.85,-27.0 0.15 255,220,100 emit:200,150,50 +cy -1.2,1.8,-26.5 0.0,1.0,0.0 0.1 0.8 240,230,200 +sp -1.2,2.65,-26.5 0.15 255,220,100 emit:200,150,50 +cy -1.5,1.8,-27.5 0.0,1.0,0.0 0.1 0.9 240,230,200 +sp -1.5,2.75,-27.5 0.15 255,220,100 emit:200,150,50 +cy 1.5,1.8,-27.0 0.0,1.0,0.0 0.1 1.0 240,230,200 +sp 1.5,2.85,-27.0 0.15 255,220,100 emit:200,150,50 +cy 1.2,1.8,-26.5 0.0,1.0,0.0 0.1 0.8 240,230,200 +sp 1.2,2.65,-26.5 0.15 255,220,100 emit:200,150,50 +cy 1.5,1.8,-27.5 0.0,1.0,0.0 0.1 0.9 240,230,200 +sp 1.5,2.75,-27.5 0.15 255,220,100 emit:200,150,50 +bx 0.0,2.3,-27.0 0.08,0.8,0.08 210,180,80 spec:0.7 refl:0.2 +bx 0.0,2.6,-27.0 0.4,0.08,0.08 210,180,80 spec:0.7 refl:0.2 bx 0.0,0.15,-25.5 5.0,0.15,1.0 200,190,170 bx 0.0,0.30,-24.5 6.0,0.15,1.0 200,190,170 @@ -309,3 +317,268 @@ el -11.3,5.0,4.0 0.6,1.2,0.4 35,75,25 el -11.3,2.0,6.0 0.7,1.0,0.6 45,85,35 el 11.3,4.0,-7.0 0.5,1.3,0.5 40,80,30 el 11.3,6.0,-8.0 0.6,1.0,0.4 35,70,25 + +bx 0.0,6.0,-28.8 0.35,6.0,0.25 90,70,50 spec:0.2 +bx 0.0,8.0,-28.8 3.0,0.35,0.25 90,70,50 spec:0.2 +sp 0.0,9.0,-28.8 0.25 220,200,100 spec:0.8 refl:0.3 +sp 0.0,3.0,-28.8 0.25 220,200,100 spec:0.8 refl:0.3 +sp -1.5,8.0,-28.8 0.25 220,200,100 spec:0.8 refl:0.3 +sp 1.5,8.0,-28.8 0.25 220,200,100 spec:0.8 refl:0.3 +to 0.0,8.0,-28.7 0.0,0.0,1.0 1.0 0.08 220,200,100 spec:0.7 refl:0.3 + +bx 11.0,1.0,10.0 2.0,2.0,4.0 90,75,55 spec:0.2 +cy 11.0,2.0,12.0 0.0,1.0,0.0 0.5 12.0 200,180,100 spec:0.5 metal:0.3 +cy 11.0,2.0,11.5 0.0,1.0,0.0 0.45 11.0 195,175,95 spec:0.5 metal:0.3 +cy 11.0,2.0,11.0 0.0,1.0,0.0 0.4 10.0 200,180,100 spec:0.5 metal:0.3 +cy 11.0,2.0,10.5 0.0,1.0,0.0 0.5 13.0 205,185,105 spec:0.5 metal:0.3 +cy 11.0,2.0,10.0 0.0,1.0,0.0 0.45 11.5 200,180,100 spec:0.5 metal:0.3 +cy 11.0,2.0,9.5 0.0,1.0,0.0 0.4 9.5 195,175,95 spec:0.5 metal:0.3 +cy 11.0,2.0,9.0 0.0,1.0,0.0 0.5 12.5 200,180,100 spec:0.5 metal:0.3 +cy 11.0,2.0,8.5 0.0,1.0,0.0 0.45 10.5 205,185,105 spec:0.5 metal:0.3 +cy 11.0,2.0,8.0 0.0,1.0,0.0 0.4 8.0 200,180,100 spec:0.5 metal:0.3 +cy 10.5,2.0,12.0 0.0,1.0,0.0 0.35 8.0 200,180,100 spec:0.5 metal:0.3 +cy 10.5,2.0,11.0 0.0,1.0,0.0 0.35 9.0 200,180,100 spec:0.5 metal:0.3 +cy 10.5,2.0,10.0 0.0,1.0,0.0 0.35 8.5 200,180,100 spec:0.5 metal:0.3 +cy 10.5,2.0,9.0 0.0,1.0,0.0 0.35 9.5 200,180,100 spec:0.5 metal:0.3 +cy 10.5,2.0,8.0 0.0,1.0,0.0 0.25 5.5 200,180,100 spec:0.5 metal:0.3 +cy 11.5,2.0,12.0 0.0,1.0,0.0 0.3 6.0 210,190,110 spec:0.5 metal:0.3 +cy 11.5,2.0,11.0 0.0,1.0,0.0 0.25 5.0 210,190,110 spec:0.5 metal:0.3 +cy 11.5,2.0,10.0 0.0,1.0,0.0 0.3 7.0 210,190,110 spec:0.5 metal:0.3 +cy 11.5,2.0,9.0 0.0,1.0,0.0 0.25 5.5 210,190,110 spec:0.5 metal:0.3 +cy 11.5,2.0,8.0 0.0,1.0,0.0 0.3 6.5 210,190,110 spec:0.5 metal:0.3 +dk 11.0,15.0,10.5 0.0,1.0,0.0 0.6 220,200,100 spec:0.6 +dk 11.0,14.5,9.0 0.0,1.0,0.0 0.6 220,200,100 spec:0.6 +dk 11.0,14.0,12.0 0.0,1.0,0.0 0.6 220,200,100 spec:0.6 +bx 11.0,8.0,13.0 0.15,12.0,0.15 90,75,55 spec:0.2 +bx 11.0,8.0,7.0 0.15,12.0,0.15 90,75,55 spec:0.2 +bx 11.0,14.0,10.0 0.15,0.15,6.0 90,75,55 spec:0.2 + +cy -5.0,0.0,5.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk -5.0,3.5,5.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy -5.0,3.5,5.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp -5.0,4.35,5.0 0.12 255,220,100 emit:180,140,40 +cy -4.7,3.5,5.3 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -4.7,4.15,5.3 0.12 255,220,100 emit:180,140,40 +cy -5.3,3.5,4.7 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp -5.3,4.25,4.7 0.12 255,220,100 emit:180,140,40 + +cy -5.0,0.0,0.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk -5.0,3.5,0.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy -5.0,3.5,0.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp -5.0,4.35,0.0 0.12 255,220,100 emit:180,140,40 +cy -4.7,3.5,0.3 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -4.7,4.15,0.3 0.12 255,220,100 emit:180,140,40 +cy -5.3,3.5,-0.3 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp -5.3,4.25,-0.3 0.12 255,220,100 emit:180,140,40 + +cy -5.0,0.0,-5.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk -5.0,3.5,-5.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy -5.0,3.5,-5.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp -5.0,4.35,-5.0 0.12 255,220,100 emit:180,140,40 +cy -4.7,3.5,-4.7 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -4.7,4.15,-4.7 0.12 255,220,100 emit:180,140,40 +cy -5.3,3.5,-5.3 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp -5.3,4.25,-5.3 0.12 255,220,100 emit:180,140,40 + +cy 5.0,0.0,5.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk 5.0,3.5,5.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy 5.0,3.5,5.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp 5.0,4.35,5.0 0.12 255,220,100 emit:180,140,40 +cy 5.3,3.5,5.3 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 5.3,4.15,5.3 0.12 255,220,100 emit:180,140,40 +cy 4.7,3.5,4.7 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp 4.7,4.25,4.7 0.12 255,220,100 emit:180,140,40 + +cy 5.0,0.0,0.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk 5.0,3.5,0.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy 5.0,3.5,0.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp 5.0,4.35,0.0 0.12 255,220,100 emit:180,140,40 +cy 5.3,3.5,0.3 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 5.3,4.15,0.3 0.12 255,220,100 emit:180,140,40 +cy 4.7,3.5,-0.3 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp 4.7,4.25,-0.3 0.12 255,220,100 emit:180,140,40 + +cy 5.0,0.0,-5.0 0.0,1.0,0.0 0.15 3.5 70,60,55 spec:0.4 metal:0.5 +dk 5.0,3.5,-5.0 0.0,1.0,0.0 1.0 70,60,55 spec:0.4 metal:0.5 +cy 5.0,3.5,-5.0 0.0,1.0,0.0 0.08 0.8 240,230,200 +sp 5.0,4.35,-5.0 0.12 255,220,100 emit:180,140,40 +cy 5.3,3.5,-4.7 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 5.3,4.15,-4.7 0.12 255,220,100 emit:180,140,40 +cy 4.7,3.5,-5.3 0.0,1.0,0.0 0.08 0.7 240,230,200 +sp 4.7,4.25,-5.3 0.12 255,220,100 emit:180,140,40 + +bx -11.5,5.0,5.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy -11.5,5.3,5.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -11.5,5.95,5.0 0.12 255,220,100 emit:180,140,40 +bx -11.5,5.0,-3.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy -11.5,5.3,-3.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -11.5,5.95,-3.0 0.12 255,220,100 emit:180,140,40 +bx -11.5,5.0,-11.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy -11.5,5.3,-11.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -11.5,5.95,-11.0 0.12 255,220,100 emit:180,140,40 +bx -11.5,5.0,-19.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy -11.5,5.3,-19.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp -11.5,5.95,-19.0 0.12 255,220,100 emit:180,140,40 +bx 11.5,5.0,5.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy 11.5,5.3,5.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 11.5,5.95,5.0 0.12 255,220,100 emit:180,140,40 +bx 11.5,5.0,-3.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy 11.5,5.3,-3.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 11.5,5.95,-3.0 0.12 255,220,100 emit:180,140,40 +bx 11.5,5.0,-11.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy 11.5,5.3,-11.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 11.5,5.95,-11.0 0.12 255,220,100 emit:180,140,40 +bx 11.5,5.0,-19.0 0.3,0.3,0.3 70,60,55 spec:0.3 metal:0.4 +cy 11.5,5.3,-19.0 0.0,1.0,0.0 0.08 0.6 240,230,200 +sp 11.5,5.95,-19.0 0.12 255,220,100 emit:180,140,40 + +cy 0.0,16.5,5.0 0.0,1.0,0.0 0.06 3.5 70,60,55 spec:0.3 metal:0.5 +to 0.0,13.0,5.0 0.0,1.0,0.0 2.0 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.0,13.0,5.0 0.0,1.0,0.0 1.2 0.1 70,60,55 spec:0.4 metal:0.5 +sp 0.0,13.3,5.0 0.3 220,200,100 spec:0.6 refl:0.2 +cy 2.0,13.0,5.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 2.0,13.65,5.0 0.1 255,220,100 emit:180,140,40 +cy -2.0,13.0,5.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -2.0,13.65,5.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,6.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,6.41 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,6.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,6.41 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,7.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,7.0 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,3.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,3.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,3.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,3.59 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,3.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,3.59 0.1 255,220,100 emit:180,140,40 + +cy 0.0,16.5,-5.0 0.0,1.0,0.0 0.06 3.5 70,60,55 spec:0.3 metal:0.5 +to 0.0,13.0,-5.0 0.0,1.0,0.0 2.0 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.0,13.0,-5.0 0.0,1.0,0.0 1.2 0.1 70,60,55 spec:0.4 metal:0.5 +sp 0.0,13.3,-5.0 0.3 220,200,100 spec:0.6 refl:0.2 +cy 2.0,13.0,-5.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 2.0,13.65,-5.0 0.1 255,220,100 emit:180,140,40 +cy -2.0,13.0,-5.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -2.0,13.65,-5.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,-3.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,-3.59 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,-3.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,-3.59 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,-3.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,-3.0 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,-7.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,-7.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,-6.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,-6.41 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,-6.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,-6.41 0.1 255,220,100 emit:180,140,40 + +cy 0.0,16.5,-15.0 0.0,1.0,0.0 0.06 3.5 70,60,55 spec:0.3 metal:0.5 +to 0.0,13.0,-15.0 0.0,1.0,0.0 2.0 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.0,13.0,-15.0 0.0,1.0,0.0 1.2 0.1 70,60,55 spec:0.4 metal:0.5 +sp 0.0,13.3,-15.0 0.3 220,200,100 spec:0.6 refl:0.2 +cy 2.0,13.0,-15.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 2.0,13.65,-15.0 0.1 255,220,100 emit:180,140,40 +cy -2.0,13.0,-15.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -2.0,13.65,-15.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,-13.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,-13.59 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,-13.59 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,-13.59 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,-13.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,-13.0 0.1 255,220,100 emit:180,140,40 +cy 0.0,13.0,-17.0 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 0.0,13.65,-17.0 0.1 255,220,100 emit:180,140,40 +cy 1.41,13.0,-16.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp 1.41,13.65,-16.41 0.1 255,220,100 emit:180,140,40 +cy -1.41,13.0,-16.41 0.0,1.0,0.0 0.07 0.6 240,230,200 +sp -1.41,13.65,-16.41 0.1 255,220,100 emit:180,140,40 + +bx -3.0,0.4,8.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,8.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,8.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,8.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,6.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,6.25 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,6.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,6.25 2.8,0.5,0.08 90,75,55 spec:0.2 +bx -3.0,0.4,4.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,4.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,4.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,4.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,2.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,2.25 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,2.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,2.25 2.8,0.5,0.08 90,75,55 spec:0.2 +bx -3.0,0.4,0.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,0.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,0.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,0.25 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,-2.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,-1.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,-2.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,-1.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx -3.0,0.4,-4.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,-3.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,-4.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,-3.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,-6.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,-5.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,-6.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,-5.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx -3.0,0.4,-8.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,-7.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,-8.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,-7.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,-10.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,-9.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,-10.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,-9.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx -3.0,0.4,-12.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx -3.0,0.85,-11.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx 3.0,0.4,-12.0 2.8,0.4,0.5 95,78,58 spec:0.2 +bx 3.0,0.85,-11.75 2.8,0.5,0.08 95,78,58 spec:0.2 +bx -3.0,0.4,-14.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx -3.0,0.85,-13.75 2.8,0.5,0.08 90,75,55 spec:0.2 +bx 3.0,0.4,-14.0 2.8,0.4,0.5 90,75,55 spec:0.2 +bx 3.0,0.85,-13.75 2.8,0.5,0.08 90,75,55 spec:0.2 + +tr -6.0,14.0,10.0 -6.0,16.5,7.5 -6.0,14.0,5.0 200,185,160 spec:0.1 +tr -6.0,14.0,5.0 -6.0,16.5,2.5 -6.0,14.0,0.0 200,185,160 spec:0.1 +tr -6.0,14.0,0.0 -6.0,16.5,-2.5 -6.0,14.0,-5.0 200,185,160 spec:0.1 +tr -6.0,14.0,-5.0 -6.0,16.5,-7.5 -6.0,14.0,-10.0 200,185,160 spec:0.1 +tr -6.0,14.0,-10.0 -6.0,16.5,-12.5 -6.0,14.0,-15.0 200,185,160 spec:0.1 +tr -6.0,14.0,-15.0 -6.0,16.5,-17.5 -6.0,14.0,-20.0 200,185,160 spec:0.1 +tr -6.0,14.0,-20.0 -6.0,16.5,-22.5 -6.0,14.0,-25.0 200,185,160 spec:0.1 +tr 6.0,14.0,10.0 6.0,16.5,7.5 6.0,14.0,5.0 200,185,160 spec:0.1 +tr 6.0,14.0,5.0 6.0,16.5,2.5 6.0,14.0,0.0 200,185,160 spec:0.1 +tr 6.0,14.0,0.0 6.0,16.5,-2.5 6.0,14.0,-5.0 200,185,160 spec:0.1 +tr 6.0,14.0,-5.0 6.0,16.5,-7.5 6.0,14.0,-10.0 200,185,160 spec:0.1 +tr 6.0,14.0,-10.0 6.0,16.5,-12.5 6.0,14.0,-15.0 200,185,160 spec:0.1 +tr 6.0,14.0,-15.0 6.0,16.5,-17.5 6.0,14.0,-20.0 200,185,160 spec:0.1 +tr 6.0,14.0,-20.0 6.0,16.5,-22.5 6.0,14.0,-25.0 200,185,160 spec:0.1 + +cy -3.0,0.0,12.0 0.0,1.0,0.0 0.3 2.5 180,170,150 spec:0.2 +pa -3.0,2.5,12.0 0.0,1.0,0.0 0.5 1.2 180,170,150 spec:0.2 +dk -3.0,2.8,12.0 0.0,1.0,0.0 1.4 120,140,160 refl:0.5 spec:0.6 + +bx -10.5,1.2,-2.0 1.5,2.4,1.0 80,65,48 spec:0.15 +bx -10.5,1.2,-2.8 0.15,2.4,0.6 80,65,48 spec:0.15 +bx -10.5,1.2,-1.2 0.15,2.4,0.6 80,65,48 spec:0.15 +bx -10.5,2.5,-2.0 1.8,0.1,1.4 80,65,48 spec:0.15 +bx -10.5,1.2,-8.0 1.5,2.4,1.0 80,65,48 spec:0.15 +bx -10.5,1.2,-8.8 0.15,2.4,0.6 80,65,48 spec:0.15 +bx -10.5,1.2,-7.2 0.15,2.4,0.6 80,65,48 spec:0.15 +bx -10.5,2.5,-8.0 1.8,0.1,1.4 80,65,48 spec:0.15 + +bx 0.0,0.04,0.0 0.7,0.04,14.0 120,30,30 + +cy -3.0,0.0,-25.0 0.0,1.0,0.0 0.2 3.0 90,75,55 spec:0.3 +bx -3.0,3.0,-25.0 0.8,0.05,0.6 90,75,55 spec:0.3 +bx -3.0,3.3,-24.85 0.8,0.5,0.05 90,75,55 spec:0.3 + +sq -3.5,12.0,-29.5 0.0,0.0,1.0 1.5 80,40,180 trans:0.7 ior:1.4 +sq 3.5,12.0,-29.5 0.0,0.0,1.0 1.5 180,40,40 trans:0.7 ior:1.4 +sq -3.5,7.0,-29.5 0.0,0.0,1.0 1.2 40,160,80 trans:0.7 ior:1.4 +sq 3.5,7.0,-29.5 0.0,0.0,1.0 1.2 180,160,40 trans:0.7 ior:1.4 diff --git a/scenes/cathedral_ruins_gen.rt b/scenes/cathedral_ruins_gen.rt new file mode 100644 index 0000000..571e752 --- /dev/null +++ b/scenes/cathedral_ruins_gen.rt @@ -0,0 +1,527 @@ +R 1280 720 +A 0.08 200,190,170 +E + +c 0.0,12.0,25.0 0.055,0,0 70 +c -4.0,7.0,18.0 0.04,-0.03,0 70 +c 8.0,6.0,-15.0 0.03,0.3,0 70 +c 0.0,2.0,16.0 0.0,0,0 70 + +l -3.0,25.0,-5.0 0.9 255,240,200 +l 5.0,20.0,5.0 0.6 255,235,190 +l -8.0,15.0,-15.0 0.5 255,220,180 +l 0.0,12.0,-25.0 0.4 255,200,150 +l 10.0,18.0,-10.0 0.3 200,210,255 +l 0.0,3.0,10.0 0.2 180,190,210 + +pl 0.0,0.0,0.0 0.0,1.0,0.0 170,160,140 + +sq -2.0,0.0,-20.0 0.0,1.0,0.0 8 140,130,110 +sq 3.0,0.0,-8.0 0.0,1.0,0.0 6 155,145,125 +sq -5.0,0.0,0.0 0.0,1.0,0.0 5 145,135,120 +sq 6.0,0.0,-15.0 0.0,1.0,0.0 7 160,150,130 + +bx -12.00,6.00,-10.00 1.00,12.00,40.00 190,175,150 +bx -12.00,14.00,-25.00 1.00,4.00,10.00 185,170,145 +bx -12.00,3.00,8.00 1.00,6.00,8.00 195,180,155 +bx 12.00,7.00,-10.00 1.00,14.00,40.00 190,175,150 +bx 12.00,16.00,-5.00 1.00,2.00,15.00 185,170,145 +bx 0.00,7.00,-30.00 10.00,14.00,1.00 200,185,160 +bx -6.00,8.00,-29.50 2.00,16.00,1.00 195,180,155 +bx 6.00,8.00,-29.50 2.00,16.00,1.00 195,180,155 +bx -9.00,5.00,15.00 3.00,10.00,1.00 190,175,150 +bx 9.00,5.00,15.00 3.00,10.00,1.00 190,175,150 +bx 0.00,15.00,15.00 12.00,3.00,1.00 185,170,145 +bx -12.00,5.00,-15.00 3.00,10.00,1.00 195,180,155 +bx 12.00,5.00,-15.00 3.00,10.00,1.00 195,180,155 +bx -12.00,5.00,-16.00 1.00,10.00,3.00 190,175,150 +bx 12.00,5.00,-16.00 1.00,10.00,3.00 190,175,150 +bx -12.50,4.00,0.00 1.50,8.00,2.00 185,170,145 +bx 12.50,4.00,0.00 1.50,8.00,2.00 185,170,145 +bx -12.50,4.00,-20.00 1.50,8.00,2.00 180,165,140 +bx 12.50,4.00,-20.00 1.50,8.00,2.00 180,165,140 + +cy -6.00,0.00,10.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,10.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,10.00 1.60 200,185,160 spec:0.2 +cy -6.00,0.00,5.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,5.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,5.00 1.60 200,185,160 spec:0.2 +cy -6.00,0.00,0.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,0.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,0.00 1.60 200,185,160 spec:0.2 +cy -6.00,0.00,-5.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,-5.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,-5.00 1.60 200,185,160 spec:0.2 +cy -6.00,0.00,-10.00 0.00,1.00,0.00 1.40 8.00 200,185,160 spec:0.2 +dk -6.00,0.01,-10.00 0.0,1.0,0.0 2.40 190,175,150 +cy -6.00,0.00,-15.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,-15.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,-15.00 1.60 200,185,160 spec:0.2 +cy -6.00,0.00,-20.00 0.00,1.00,0.00 1.40 5.00 200,185,160 spec:0.2 +dk -6.00,0.01,-20.00 0.0,1.0,0.0 2.40 190,175,150 +cy -6.00,0.00,-25.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk -6.00,0.01,-25.00 0.0,1.0,0.0 2.40 190,175,150 +sp -6.00,14.00,-25.00 1.60 200,185,160 spec:0.2 + +cy 6.00,0.00,10.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,10.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,10.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,5.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,5.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,5.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,0.00 0.00,1.00,0.00 1.40 6.00 200,185,160 spec:0.2 +dk 6.00,0.01,0.00 0.0,1.0,0.0 2.40 190,175,150 +cy 6.00,0.00,-5.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,-5.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,-5.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,-10.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,-10.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,-10.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,-15.00 0.00,1.00,0.00 1.40 10.00 200,185,160 spec:0.2 +dk 6.00,0.01,-15.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,10.00,-15.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,-20.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,-20.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,-20.00 1.60 200,185,160 spec:0.2 +cy 6.00,0.00,-25.00 0.00,1.00,0.00 1.40 14.00 200,185,160 spec:0.2 +dk 6.00,0.01,-25.00 0.0,1.0,0.0 2.40 190,175,150 +sp 6.00,14.00,-25.00 1.60 200,185,160 spec:0.2 + +to -6.00,14.00,7.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,7.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to -6.00,14.00,2.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,2.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to -6.00,14.00,-2.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,-7.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to -6.00,14.00,-7.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,-10.00 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to -6.00,14.00,-17.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,-17.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to -6.00,14.00,-22.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 6.00,14.00,-22.50 0.0,0.0,1.0 2.50 0.40 205,190,165 spec:0.1 +to 0.00,15.00,-15.00 1.0,0.0,0.0 6.00 0.50 210,195,170 spec:0.15 +to 0.00,15.00,-5.00 1.0,0.0,0.0 6.00 0.50 210,195,170 spec:0.15 +to 0.00,15.00,5.00 1.0,0.0,0.0 6.00 0.50 210,195,170 spec:0.15 +to 0.00,14.00,-28.00 1.0,0.0,0.0 5.00 0.50 210,195,170 spec:0.15 +to -3.00,1.00,-12.00 0.3,0.1,0.7 2.00 0.30 195,180,155 +to 5.00,0.50,3.00 0.5,0.2,0.6 1.80 0.30 190,175,150 + +to 0.00,12.00,-29.20 0.0,0.0,1.0 3.50 0.30 180,170,155 spec:0.3 +to 0.00,12.00,-29.20 0.0,0.0,1.0 2.20 0.20 175,165,150 spec:0.3 +sp 0.00,15.20,-29.30 0.80 200,50,50 trans:0.7 ior:1.3 +sp 1.60,14.77,-29.30 0.80 220,100,30 trans:0.7 ior:1.3 +sp 2.77,13.60,-29.30 0.80 230,200,50 trans:0.7 ior:1.3 +sp 3.20,12.00,-29.30 0.80 50,200,50 trans:0.7 ior:1.3 +sp 2.77,10.40,-29.30 0.80 50,150,200 trans:0.7 ior:1.3 +sp 1.60,9.23,-29.30 0.80 80,50,200 trans:0.7 ior:1.3 +sp 0.00,8.80,-29.30 0.80 150,50,200 trans:0.7 ior:1.3 +sp -1.60,9.23,-29.30 0.80 200,50,150 trans:0.7 ior:1.3 +sp -2.77,10.40,-29.30 0.80 50,100,220 trans:0.7 ior:1.3 +sp -3.20,12.00,-29.30 0.80 100,200,100 trans:0.7 ior:1.3 +sp -2.77,13.60,-29.30 0.80 220,180,50 trans:0.7 ior:1.3 +sp -1.60,14.77,-29.30 0.80 200,80,80 trans:0.7 ior:1.3 +sp 0.00,13.30,-29.30 0.50 255,220,100 trans:0.8 ior:1.5 +sp 1.13,12.65,-29.30 0.50 100,180,255 trans:0.8 ior:1.5 +sp 1.13,11.35,-29.30 0.50 255,100,100 trans:0.8 ior:1.5 +sp 0.00,10.70,-29.30 0.50 100,255,150 trans:0.8 ior:1.5 +sp -1.13,11.35,-29.30 0.50 200,100,255 trans:0.8 ior:1.5 +sp -1.13,12.65,-29.30 0.50 255,200,100 trans:0.8 ior:1.5 +sp 0.00,12.00,-29.30 0.70 255,255,220 trans:0.85 ior:1.5 spec:0.5 + +bx 0.00,0.15,-26.00 8.00,0.15,4.00 200,190,170 +bx 0.00,0.35,-26.50 6.00,0.15,3.00 200,190,170 +bx 0.00,1.20,-27.00 4.00,1.00,1.80 100,80,60 spec:0.25 +bx 0.00,1.75,-27.00 4.30,0.05,2.00 240,235,225 +cy -1.50,1.80,-27.00 0.00,1.00,0.00 0.10 1.00 240,230,200 +sp -1.50,2.85,-27.00 0.15 255,220,100 emit:200,150,50 +cy -1.20,1.80,-26.50 0.00,1.00,0.00 0.10 0.80 240,230,200 +sp -1.20,2.65,-26.50 0.15 255,220,100 emit:200,150,50 +cy -1.50,1.80,-27.50 0.00,1.00,0.00 0.10 0.90 240,230,200 +sp -1.50,2.75,-27.50 0.15 255,220,100 emit:200,150,50 +cy 1.50,1.80,-27.00 0.00,1.00,0.00 0.10 1.00 240,230,200 +sp 1.50,2.85,-27.00 0.15 255,220,100 emit:200,150,50 +cy 1.20,1.80,-26.50 0.00,1.00,0.00 0.10 0.80 240,230,200 +sp 1.20,2.65,-26.50 0.15 255,220,100 emit:200,150,50 +cy 1.50,1.80,-27.50 0.00,1.00,0.00 0.10 0.90 240,230,200 +sp 1.50,2.75,-27.50 0.15 255,220,100 emit:200,150,50 +bx 0.00,2.30,-27.00 0.08,0.80,0.08 210,180,80 spec:0.7 refl:0.2 +bx 0.00,2.60,-27.00 0.40,0.08,0.08 210,180,80 spec:0.7 refl:0.2 +bx 0.00,0.15,-25.50 5.00,0.15,1.00 200,190,170 +bx 0.00,0.30,-24.50 6.00,0.15,1.00 200,190,170 + +bx 0.00,6.00,-28.80 0.35,6.00,0.25 90,70,50 spec:0.2 +bx 0.00,8.00,-28.80 3.00,0.35,0.25 90,70,50 spec:0.2 +sp 0.00,9.00,-28.80 0.25 220,200,100 spec:0.8 refl:0.3 +sp 0.00,3.00,-28.80 0.25 220,200,100 spec:0.8 refl:0.3 +sp -1.50,8.00,-28.80 0.25 220,200,100 spec:0.8 refl:0.3 +sp 1.50,8.00,-28.80 0.25 220,200,100 spec:0.8 refl:0.3 +to 0.00,8.00,-28.70 0.0,0.0,1.0 1.00 0.08 220,200,100 spec:0.7 refl:0.3 + +bx 11.00,1.00,10.00 2.00,2.00,4.00 90,75,55 spec:0.2 +cy 11.00,2.00,12.00 0.00,1.00,0.00 0.50 12.00 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,11.50 0.00,1.00,0.00 0.45 11.00 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,11.00 0.00,1.00,0.00 0.40 10.00 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,10.50 0.00,1.00,0.00 0.50 13.00 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,10.00 0.00,1.00,0.00 0.45 11.50 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,9.50 0.00,1.00,0.00 0.40 9.50 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,9.00 0.00,1.00,0.00 0.50 12.50 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,8.50 0.00,1.00,0.00 0.45 10.50 200,180,100 spec:0.5 metal:0.3 +cy 11.00,2.00,8.00 0.00,1.00,0.00 0.40 8.00 200,180,100 spec:0.5 metal:0.3 +cy 10.50,2.00,12.00 0.00,1.00,0.00 0.35 8.00 200,180,100 spec:0.5 metal:0.3 +cy 10.50,2.00,11.00 0.00,1.00,0.00 0.35 9.00 200,180,100 spec:0.5 metal:0.3 +cy 10.50,2.00,10.00 0.00,1.00,0.00 0.35 8.50 200,180,100 spec:0.5 metal:0.3 +cy 10.50,2.00,9.00 0.00,1.00,0.00 0.35 9.50 200,180,100 spec:0.5 metal:0.3 +cy 10.50,2.00,8.00 0.00,1.00,0.00 0.35 5.50 200,180,100 spec:0.5 metal:0.3 +cy 11.50,2.00,12.00 0.00,1.00,0.00 0.30 6.00 210,190,110 spec:0.5 metal:0.3 +cy 11.50,2.00,11.00 0.00,1.00,0.00 0.30 5.00 210,190,110 spec:0.5 metal:0.3 +cy 11.50,2.00,10.00 0.00,1.00,0.00 0.30 7.00 210,190,110 spec:0.5 metal:0.3 +cy 11.50,2.00,9.00 0.00,1.00,0.00 0.30 5.50 210,190,110 spec:0.5 metal:0.3 +cy 11.50,2.00,8.00 0.00,1.00,0.00 0.30 6.50 210,190,110 spec:0.5 metal:0.3 +dk 11.00,15.00,10.50 0.0,1.0,0.0 0.60 220,200,100 spec:0.6 +dk 11.00,14.50,9.00 0.0,1.0,0.0 0.60 220,200,100 spec:0.6 +dk 11.00,14.00,12.00 0.0,1.0,0.0 0.60 220,200,100 spec:0.6 +bx 11.00,8.00,13.00 0.15,12.00,0.15 90,75,55 spec:0.2 +bx 11.00,8.00,7.00 0.15,12.00,0.15 90,75,55 spec:0.2 +bx 11.00,14.00,10.00 0.15,0.15,6.00 90,75,55 spec:0.2 + +cy -4.00,0.50,-11.00 0.20,0.10,0.90 1.30 3.00 195,180,155 +cy -3.00,0.60,-9.00 0.80,0.10,0.30 1.30 2.50 200,185,160 +cy 5.00,0.50,1.00 0.10,0.05,0.95 1.30 4.00 190,175,150 +cy 7.00,0.60,-18.00 0.70,0.15,0.50 1.20 2.00 195,180,155 +bx -8.99,0.42,-7.16 0.84,0.58,0.50 178,163,148 +bx 8.57,0.36,-7.58 0.72,0.40,0.65 178,163,148 +bx 7.21,0.27,-9.63 0.55,0.33,0.36 178,163,148 +bx -7.14,0.36,2.45 0.72,0.63,0.39 187,172,157 +bx 0.70,0.46,-20.55 0.92,0.68,0.67 181,166,151 +bx -4.80,0.21,-24.58 0.41,0.40,0.37 189,174,159 +bx 1.27,0.39,1.15 0.77,0.53,0.49 180,165,150 +bx -2.67,0.31,-3.21 0.62,0.47,0.36 175,160,145 +bx -0.83,0.26,-13.80 0.52,0.51,0.40 175,160,145 +bx -7.40,0.33,8.77 0.66,0.39,0.51 185,170,155 +bx 8.92,0.41,-18.54 0.81,0.58,0.71 180,165,150 +bx -5.79,0.44,2.57 0.88,0.45,0.50 176,161,146 +bx 2.47,0.27,-12.07 0.55,0.42,0.30 182,167,152 +bx 8.70,0.43,-13.15 0.86,0.72,0.82 178,163,148 +bx -0.61,0.48,-10.01 0.95,0.94,0.63 182,167,152 +sp 5.30,0.17,4.43 0.35 178,163,148 +sp 5.88,0.13,-6.94 0.26 175,160,145 +sp -3.40,0.16,-9.82 0.31 179,164,149 +sp -7.87,0.15,-8.35 0.29 170,155,140 +sp 3.62,0.14,-11.80 0.29 184,169,154 +sp -6.75,0.13,-10.44 0.26 176,161,146 +sp -4.61,0.17,-12.57 0.34 184,169,154 +sp -8.68,0.18,-8.75 0.36 177,162,147 +sp -6.73,0.11,-11.39 0.23 182,167,152 +sp -1.95,0.16,-22.41 0.32 175,160,145 +sp -4.44,0.13,-11.86 0.26 179,164,149 +sp -5.32,0.20,-15.33 0.40 172,157,142 +sp 2.91,0.18,-7.52 0.36 171,156,141 +sp -2.55,0.13,-17.44 0.26 172,157,142 +sp 8.22,0.16,-0.32 0.32 177,162,147 +tr -3.5,0.1,-10.0 -2.5,0.8,-10.5 -3.0,0.1,-11.0 185,170,145 +tr 4.0,0.1,-12.0 5.0,0.6,-11.5 4.5,0.1,-12.5 180,165,140 +tr -7.0,0.1,-5.0 -6.5,0.5,-4.5 -7.5,0.1,-5.5 175,160,135 +tr 7.5,0.1,-8.0 8.0,0.7,-7.5 7.0,0.1,-8.5 185,170,145 +tr -1.5,0.1,7.0 -0.5,0.6,6.5 -1.0,0.1,7.5 180,165,140 +tr 2.5,0.1,2.5 3.5,0.5,2.0 3.0,0.1,3.0 175,160,135 +sp -6.00,0.60,-10.50 0.70 195,180,155 +sp 6.00,0.50,0.50 0.60 200,185,160 +sp -5.50,0.40,-20.50 0.50 190,175,150 +sp 6.50,0.55,-15.50 0.65 195,180,155 + +tr -6.0,14.0,-8.0 -2.0,10.0,-6.0 -6.0,14.0,-4.0 175,165,145 +tr -2.0,10.0,-6.0 2.0,10.0,-6.0 0.0,16.0,-6.0 180,170,150 +tr 6.0,14.0,-8.0 2.0,10.0,-6.0 6.0,14.0,-4.0 175,165,145 +tr -6.0,15.0,2.0 -3.0,12.0,3.0 -6.0,15.0,4.0 180,170,150 +tr 6.0,15.0,2.0 3.0,12.0,3.0 6.0,15.0,4.0 175,165,145 +tr -4.0,16.0,-20.0 0.0,18.0,-20.0 4.0,16.0,-20.0 180,170,150 +sq -4.0,10.0,-10.0 0.3,0.7,0.1 4 170,160,140 +sq 5.0,11.0,-3.0 0.2,0.8,0.3 4 175,165,145 +sq -3.0,9.0,5.0 0.4,0.6,0.2 3 165,155,135 +tr -8.0,0.2,-8.0 -5.0,0.2,-7.0 -7.0,0.2,-10.0 170,160,140 +tr 3.0,0.2,4.0 5.0,0.2,3.0 4.0,0.2,6.0 165,155,135 +tr -2.0,0.2,-18.0 1.0,0.2,-17.0 -1.0,0.2,-20.0 175,165,145 +tr 7.0,0.2,-20.0 9.0,0.2,-19.0 8.0,0.2,-22.0 170,160,140 +bx 0.00,17.00,-5.00 0.40,0.40,15.00 190,180,160 +bx 0.00,17.00,-22.00 0.40,0.40,6.00 185,175,155 +cy -3.00,15.50,-5.00 0.50,0.30,0.00 0.30 7.00 195,185,165 +cy 3.00,15.50,-5.00 0.50,0.30,0.00 0.30 7.00 195,185,165 +cy -3.00,15.50,-20.00 0.50,0.30,0.00 0.30 7.00 190,180,160 + +cy -14.00,0.00,14.00 0.00,1.00,0.00 5.00 18.00 195,180,155 spec:0.15 +cy -14.00,18.00,14.00 0.00,1.00,0.00 4.50 5.00 190,175,150 spec:0.15 +co -14.00,23.00,14.00 0.00,1.00,0.00 5.00 4.00 120,100,80 spec:0.2 +bx -11.80,12.00,14.00 0.50,2.00,1.00 60,55,50 +bx -14.00,12.00,11.80 1.00,2.00,0.50 60,55,50 +bx -11.80,8.00,14.00 0.50,1.50,0.80 65,60,55 +bx -14.00,8.00,11.80 0.80,1.50,0.50 65,60,55 +bx -12.00,23.00,14.00 0.80,1.00,0.80 200,185,160 +bx -14.00,23.00,12.00 0.80,1.00,0.80 200,185,160 +bx -16.00,23.00,14.00 0.80,1.00,0.80 195,180,155 +bx -14.00,23.00,16.00 0.80,1.00,0.80 195,180,155 +cy -10.00,0.40,11.00 0.60,0.10,0.70 2.00 3.00 190,175,150 +sp -11.00,0.50,10.00 0.80 185,170,145 + +sp -2.00,8.00,-4.00 0.15 255,250,230 trans:0.9 ior:1.0 +sp -1.00,10.00,-3.00 0.12 255,250,230 trans:0.9 ior:1.0 +sp 0.50,9.00,-5.00 0.10 255,250,230 trans:0.9 ior:1.0 +sp -0.50,11.00,-6.00 0.13 255,250,230 trans:0.9 ior:1.0 +sp 1.00,7.00,-2.00 0.11 255,250,230 trans:0.9 ior:1.0 +dk -2.00,0.02,-8.00 0.0,1.0,0.0 3.00 100,110,130 refl:0.6 spec:0.8 +dk 3.00,0.02,-3.00 0.0,1.0,0.0 2.50 95,105,125 refl:0.6 spec:0.8 +dk -5.00,0.02,4.00 0.0,1.0,0.0 2.00 100,110,130 refl:0.5 spec:0.7 +dk 7.00,0.02,-15.00 0.0,1.0,0.0 1.80 95,105,125 refl:0.5 spec:0.7 +dk 0.00,0.02,-18.00 0.0,1.0,0.0 3.50 100,115,135 refl:0.7 spec:0.9 +dk -8.00,0.02,-12.00 0.0,1.0,0.0 1.50 90,100,120 refl:0.5 spec:0.7 +dk 4.00,0.02,8.00 0.0,1.0,0.0 2.20 100,110,130 refl:0.6 spec:0.8 +dk -1.00,0.02,-24.00 0.0,1.0,0.0 2.80 95,110,130 refl:0.65 spec:0.85 + +sq -11.5,10.0,-5.0 1.0,0.0,0.0 2 180,40,40 trans:0.75 ior:1.4 +sq -11.5,10.0,-15.0 1.0,0.0,0.0 2 40,80,180 trans:0.75 ior:1.4 +sq 11.5,10.0,-10.0 1.0,0.0,0.0 2 40,160,80 trans:0.7 ior:1.4 +sq 11.5,10.0,0.0 1.0,0.0,0.0 2 180,160,40 trans:0.75 ior:1.4 +sq 11.5,10.0,-20.0 1.0,0.0,0.0 2 160,40,160 trans:0.7 ior:1.4 +el -3.00,0.10,-6.00 0.50,0.05,0.30 200,50,50 trans:0.6 ior:1.3 +el 2.00,0.10,-14.00 0.40,0.05,0.40 50,50,200 trans:0.6 ior:1.3 +el -6.00,0.10,-19.00 0.30,0.05,0.50 50,180,50 trans:0.6 ior:1.3 +el 4.00,0.10,5.00 0.50,0.05,0.30 200,180,50 trans:0.6 ior:1.3 +el -1.00,0.10,-2.00 0.40,0.05,0.40 180,50,180 trans:0.6 ior:1.3 +sq 0.0,11.0,-29.5 0.0,0.0,1.0 3 240,220,180 trans:0.5 ior:1.4 spec:0.3 +sp -11.50,12.50,-5.00 0.50 220,60,60 trans:0.6 ior:1.3 +sp -11.50,12.50,-15.00 0.50 60,100,220 trans:0.6 ior:1.3 +sp 11.50,12.50,-10.00 0.50 60,200,100 trans:0.6 ior:1.3 +sp 11.50,12.50,0.00 0.50 220,200,60 trans:0.6 ior:1.3 + +pa -3.00,0.00,10.00 0.0,1.0,0.0 0.60 1.50 200,190,170 spec:0.3 +dk -3.00,1.50,10.00 0.0,1.0,0.0 1.80 180,190,210 refl:0.3 spec:0.5 +bx 3.00,0.20,-22.00 2.50,0.20,1.20 170,165,155 spec:0.15 +sp 3.00,0.45,-22.00 0.30 160,155,145 +cy -2.00,0.00,-20.00 0.00,1.00,0.00 0.20 4.00 80,60,50 spec:0.7 refl:0.3 +dk -2.00,4.00,-20.00 0.0,1.0,0.0 1.20 80,60,50 spec:0.7 refl:0.3 +sp -2.00,4.20,-20.00 0.15 255,200,80 spec:0.9 +sp -1.50,4.20,-20.00 0.15 255,200,80 spec:0.9 +sp -2.50,4.20,-20.00 0.15 255,200,80 spec:0.9 +el -11.30,3.00,5.00 0.80,1.50,0.50 40,80,30 +el -11.30,5.00,4.00 0.60,1.20,0.40 35,75,25 +el -11.30,2.00,6.00 0.70,1.00,0.60 45,85,35 +el 11.30,4.00,-7.00 0.50,1.30,0.50 40,80,30 +el 11.30,6.00,-8.00 0.60,1.00,0.40 35,70,25 + +cy -5.00,0.00,5.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk -5.00,3.50,5.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy -5.00,3.50,5.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp -5.00,4.35,5.00 0.12 255,220,100 emit:180,140,40 +cy -5.30,3.50,5.30 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -5.30,4.15,5.30 0.12 255,220,100 emit:180,140,40 +cy -4.70,3.50,4.70 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp -4.70,4.25,4.70 0.12 255,220,100 emit:180,140,40 +cy -5.00,0.00,0.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk -5.00,3.50,0.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy -5.00,3.50,0.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp -5.00,4.35,0.00 0.12 255,220,100 emit:180,140,40 +cy -5.30,3.50,0.30 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -5.30,4.15,0.30 0.12 255,220,100 emit:180,140,40 +cy -4.70,3.50,-0.30 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp -4.70,4.25,-0.30 0.12 255,220,100 emit:180,140,40 +cy -5.00,0.00,-5.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk -5.00,3.50,-5.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy -5.00,3.50,-5.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp -5.00,4.35,-5.00 0.12 255,220,100 emit:180,140,40 +cy -5.30,3.50,-4.70 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -5.30,4.15,-4.70 0.12 255,220,100 emit:180,140,40 +cy -4.70,3.50,-5.30 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp -4.70,4.25,-5.30 0.12 255,220,100 emit:180,140,40 +cy 5.00,0.00,5.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk 5.00,3.50,5.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy 5.00,3.50,5.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp 5.00,4.35,5.00 0.12 255,220,100 emit:180,140,40 +cy 4.70,3.50,5.30 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 4.70,4.15,5.30 0.12 255,220,100 emit:180,140,40 +cy 5.30,3.50,4.70 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp 5.30,4.25,4.70 0.12 255,220,100 emit:180,140,40 +cy 5.00,0.00,0.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk 5.00,3.50,0.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy 5.00,3.50,0.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp 5.00,4.35,0.00 0.12 255,220,100 emit:180,140,40 +cy 4.70,3.50,0.30 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 4.70,4.15,0.30 0.12 255,220,100 emit:180,140,40 +cy 5.30,3.50,-0.30 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp 5.30,4.25,-0.30 0.12 255,220,100 emit:180,140,40 +cy 5.00,0.00,-5.00 0.00,1.00,0.00 0.15 3.50 70,60,55 spec:0.4 metal:0.5 +dk 5.00,3.50,-5.00 0.0,1.0,0.0 1.00 70,60,55 spec:0.4 metal:0.5 +cy 5.00,3.50,-5.00 0.00,1.00,0.00 0.08 0.80 240,230,200 +sp 5.00,4.35,-5.00 0.12 255,220,100 emit:180,140,40 +cy 4.70,3.50,-4.70 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 4.70,4.15,-4.70 0.12 255,220,100 emit:180,140,40 +cy 5.30,3.50,-5.30 0.00,1.00,0.00 0.08 0.70 240,230,200 +sp 5.30,4.25,-5.30 0.12 255,220,100 emit:180,140,40 +bx -11.50,5.00,5.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy -11.50,5.30,5.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -11.50,5.95,5.00 0.12 255,220,100 emit:180,140,40 +bx -11.50,5.00,-3.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy -11.50,5.30,-3.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -11.50,5.95,-3.00 0.12 255,220,100 emit:180,140,40 +bx -11.50,5.00,-11.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy -11.50,5.30,-11.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -11.50,5.95,-11.00 0.12 255,220,100 emit:180,140,40 +bx -11.50,5.00,-19.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy -11.50,5.30,-19.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp -11.50,5.95,-19.00 0.12 255,220,100 emit:180,140,40 +bx 11.50,5.00,5.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy 11.50,5.30,5.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 11.50,5.95,5.00 0.12 255,220,100 emit:180,140,40 +bx 11.50,5.00,-3.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy 11.50,5.30,-3.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 11.50,5.95,-3.00 0.12 255,220,100 emit:180,140,40 +bx 11.50,5.00,-11.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy 11.50,5.30,-11.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 11.50,5.95,-11.00 0.12 255,220,100 emit:180,140,40 +bx 11.50,5.00,-19.00 0.30,0.30,0.30 70,60,55 spec:0.3 metal:0.4 +cy 11.50,5.30,-19.00 0.00,1.00,0.00 0.08 0.60 240,230,200 +sp 11.50,5.95,-19.00 0.12 255,220,100 emit:180,140,40 + +cy 0.00,16.50,5.00 0.00,1.00,0.00 0.06 3.50 70,60,55 spec:0.3 metal:0.5 +to 0.00,13.00,5.00 0.0,1.0,0.0 2.00 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.00,13.00,5.00 0.0,1.0,0.0 1.20 0.10 70,60,55 spec:0.4 metal:0.5 +sp 0.00,13.30,5.00 0.30 220,200,100 spec:0.6 refl:0.2 +cy 2.00,13.00,5.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 2.00,13.65,5.00 0.10 255,220,100 emit:180,140,40 +cy -2.00,13.00,5.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -2.00,13.65,5.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,6.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,6.41 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,6.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,6.41 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,7.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,7.00 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,3.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,3.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,3.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,3.59 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,3.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,3.59 0.10 255,220,100 emit:180,140,40 +cy 0.00,16.50,-5.00 0.00,1.00,0.00 0.06 3.50 70,60,55 spec:0.3 metal:0.5 +to 0.00,13.00,-5.00 0.0,1.0,0.0 2.00 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.00,13.00,-5.00 0.0,1.0,0.0 1.20 0.10 70,60,55 spec:0.4 metal:0.5 +sp 0.00,13.30,-5.00 0.30 220,200,100 spec:0.6 refl:0.2 +cy 2.00,13.00,-5.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 2.00,13.65,-5.00 0.10 255,220,100 emit:180,140,40 +cy -2.00,13.00,-5.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -2.00,13.65,-5.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,-3.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,-3.59 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,-3.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,-3.59 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,-3.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,-3.00 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,-7.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,-7.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,-6.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,-6.41 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,-6.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,-6.41 0.10 255,220,100 emit:180,140,40 +cy 0.00,16.50,-15.00 0.00,1.00,0.00 0.06 3.50 70,60,55 spec:0.3 metal:0.5 +to 0.00,13.00,-15.00 0.0,1.0,0.0 2.00 0.15 70,60,55 spec:0.4 metal:0.5 +to 0.00,13.00,-15.00 0.0,1.0,0.0 1.20 0.10 70,60,55 spec:0.4 metal:0.5 +sp 0.00,13.30,-15.00 0.30 220,200,100 spec:0.6 refl:0.2 +cy 2.00,13.00,-15.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 2.00,13.65,-15.00 0.10 255,220,100 emit:180,140,40 +cy -2.00,13.00,-15.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -2.00,13.65,-15.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,-13.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,-13.59 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,-13.59 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,-13.59 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,-13.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,-13.00 0.10 255,220,100 emit:180,140,40 +cy 0.00,13.00,-17.00 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 0.00,13.65,-17.00 0.10 255,220,100 emit:180,140,40 +cy 1.41,13.00,-16.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp 1.41,13.65,-16.41 0.10 255,220,100 emit:180,140,40 +cy -1.41,13.00,-16.41 0.00,1.00,0.00 0.07 0.60 240,230,200 +sp -1.41,13.65,-16.41 0.10 255,220,100 emit:180,140,40 + +bx -3.00,0.40,8.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,8.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,8.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,8.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,6.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,6.25 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,6.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,6.25 2.80,0.50,0.08 90,75,55 spec:0.2 +bx -3.00,0.40,4.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,4.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,4.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,4.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,2.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,2.25 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,2.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,2.25 2.80,0.50,0.08 90,75,55 spec:0.2 +bx -3.00,0.40,0.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,0.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,0.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,0.25 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,-2.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,-1.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,-2.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,-1.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx -3.00,0.40,-4.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,-3.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,-4.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,-3.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,-6.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,-5.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,-6.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,-5.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx -3.00,0.40,-8.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,-7.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,-8.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,-7.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,-10.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,-9.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,-10.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,-9.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx -3.00,0.40,-12.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx -3.00,0.85,-11.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx 3.00,0.40,-12.00 2.80,0.40,0.50 95,78,58 spec:0.2 +bx 3.00,0.85,-11.75 2.80,0.50,0.08 95,78,58 spec:0.2 +bx -3.00,0.40,-14.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx -3.00,0.85,-13.75 2.80,0.50,0.08 90,75,55 spec:0.2 +bx 3.00,0.40,-14.00 2.80,0.40,0.50 90,75,55 spec:0.2 +bx 3.00,0.85,-13.75 2.80,0.50,0.08 90,75,55 spec:0.2 + +tr -6.0,14.0,10.0 -6.0,16.5,7.5 -6.0,14.0,5.0 200,185,160 spec:0.1 +tr 6.0,14.0,10.0 6.0,16.5,7.5 6.0,14.0,5.0 200,185,160 spec:0.1 +tr -6.0,14.0,5.0 -6.0,16.5,2.5 -6.0,14.0,0.0 200,185,160 spec:0.1 +tr 6.0,14.0,5.0 6.0,16.5,2.5 6.0,14.0,0.0 200,185,160 spec:0.1 +tr -6.0,14.0,0.0 -6.0,16.5,-2.5 -6.0,14.0,-5.0 200,185,160 spec:0.1 +tr 6.0,14.0,0.0 6.0,16.5,-2.5 6.0,14.0,-5.0 200,185,160 spec:0.1 +tr -6.0,14.0,-5.0 -6.0,16.5,-7.5 -6.0,14.0,-10.0 200,185,160 spec:0.1 +tr 6.0,14.0,-5.0 6.0,16.5,-7.5 6.0,14.0,-10.0 200,185,160 spec:0.1 +tr -6.0,14.0,-10.0 -6.0,16.5,-12.5 -6.0,14.0,-15.0 200,185,160 spec:0.1 +tr 6.0,14.0,-10.0 6.0,16.5,-12.5 6.0,14.0,-15.0 200,185,160 spec:0.1 +tr -6.0,14.0,-15.0 -6.0,16.5,-17.5 -6.0,14.0,-20.0 200,185,160 spec:0.1 +tr 6.0,14.0,-15.0 6.0,16.5,-17.5 6.0,14.0,-20.0 200,185,160 spec:0.1 +tr -6.0,14.0,-20.0 -6.0,16.5,-22.5 -6.0,14.0,-25.0 200,185,160 spec:0.1 +tr 6.0,14.0,-20.0 6.0,16.5,-22.5 6.0,14.0,-25.0 200,185,160 spec:0.1 + +cy -3.00,0.00,12.00 0.00,1.00,0.00 0.30 2.50 180,170,150 spec:0.2 +pa -3.00,2.50,12.00 0.0,1.0,0.0 0.50 1.20 180,170,150 spec:0.2 +dk -3.00,2.80,12.00 0.0,1.0,0.0 1.40 120,140,160 refl:0.5 spec:0.6 +bx -10.50,1.20,-2.00 1.50,2.40,1.00 80,65,48 spec:0.15 +bx -10.50,1.20,-2.80 0.15,2.40,0.60 80,65,48 spec:0.15 +bx -10.50,1.20,-1.20 0.15,2.40,0.60 80,65,48 spec:0.15 +bx -10.50,2.50,-2.00 1.80,0.10,1.40 80,65,48 spec:0.15 +bx -10.50,1.20,-8.00 1.50,2.40,1.00 80,65,48 spec:0.15 +bx -10.50,1.20,-8.80 0.15,2.40,0.60 80,65,48 spec:0.15 +bx -10.50,1.20,-7.20 0.15,2.40,0.60 80,65,48 spec:0.15 +bx -10.50,2.50,-8.00 1.80,0.10,1.40 80,65,48 spec:0.15 +bx 0.00,0.04,0.00 0.70,0.04,14.00 120,30,30 +cy -3.00,0.00,-25.00 0.00,1.00,0.00 0.20 3.00 90,75,55 spec:0.3 +bx -3.00,3.00,-25.00 0.80,0.05,0.60 90,75,55 spec:0.3 +bx -3.00,3.30,-24.85 0.80,0.50,0.05 90,75,55 spec:0.3 +sq -3.5,12.0,-29.5 0.0,0.0,1.0 2 80,40,180 trans:0.7 ior:1.4 +sq 3.5,12.0,-29.5 0.0,0.0,1.0 2 180,40,40 trans:0.7 ior:1.4 +sq -3.5,7.0,-29.5 0.0,0.0,1.0 1 40,160,80 trans:0.7 ior:1.4 +sq 3.5,7.0,-29.5 0.0,0.0,1.0 1 180,160,40 trans:0.7 ior:1.4 diff --git a/scripts/render_cathedral.sh b/scripts/render_cathedral.sh index d5f65e7..0ae877a 100755 --- a/scripts/render_cathedral.sh +++ b/scripts/render_cathedral.sh @@ -63,7 +63,8 @@ done # Build miniRT if missing if [ ! -f "$PROJECT_DIR/miniRT" ]; then echo "Building miniRT..." - make -C "$PROJECT_DIR" -j"$(nproc)" 2>&1 | tail -1 + NJOBS=$(nproc 2>/dev/null || sysctl -n hw.logicalcpu 2>/dev/null || echo 4) + make -C "$PROJECT_DIR" -j"$NJOBS" 2>&1 | tail -1 fi # Build gen_scene if missing @@ -101,10 +102,16 @@ echo "" START=$(date +%s) cd "$PROJECT_DIR" -xvfb-run -a "$PROJECT_DIR/miniRT" "$SCENE_FILE" -save \ +if command -v xvfb-run >/dev/null 2>&1; then + RUNNER="xvfb-run -a" +else + RUNNER="" +fi + +$RUNNER "$PROJECT_DIR/miniRT" "$SCENE_FILE" -save \ --output "$OUTPUT" --threads="$THREADS" || { echo "Retrying with default output path..." - xvfb-run -a "$PROJECT_DIR/miniRT" "$SCENE_FILE" -save \ + $RUNNER "$PROJECT_DIR/miniRT" "$SCENE_FILE" -save \ --threads="$THREADS" mv -f "$PROJECT_DIR/miniRT.bmp" "$OUTPUT" } diff --git a/src/ft_bzero_struct.c b/src/ft_bzero_struct.c index 09e0838..6773c67 100644 --- a/src/ft_bzero_struct.c +++ b/src/ft_bzero_struct.c @@ -49,6 +49,7 @@ int ft_window_init(t_window *win) win->path_trace_spp = 0; win->path_trace_bounces = PT_DEFAULT_BOUNCES; win->motion_blur_samples = 0; + win->use_env_sky = 0; return (0); } diff --git a/src/ft_check_parsing.c b/src/ft_check_parsing.c index fb14d35..d403741 100644 --- a/src/ft_check_parsing.c +++ b/src/ft_check_parsing.c @@ -33,7 +33,7 @@ int ft_check_amb_light(t_window *win) if (!win) return (ft_error(7, win, "amb_light params, no amb_light")); - if (!win->ratio) + if (win->ratio == 0.0) return (ft_error(7, win, "amb_light params, no ratio")); if (win->ratio < 0.0 || 1.0 < win->ratio) return (ft_error(9, win, "amb_light ratio")); diff --git a/src/ft_cylinder.c b/src/ft_cylinder.c index c499a65..a73808b 100644 --- a/src/ft_cylinder.c +++ b/src/ft_cylinder.c @@ -44,8 +44,11 @@ static double ft_cylinder_calc_three(t_pt *calc, t_argb *dist, t_argb *dot, t_ray *ray) { dist->a = calc->y * calc->y - calc->x * calc->z; - if (dist->a < EPSILON_NORMAL && (ray->lenght = -1)) + if (dist->a < EPSILON_NORMAL) + { + ray->lenght = -1; return (-1); + } ft_cylinder_calc_four(calc, dist, dot); return (0); } @@ -206,9 +209,9 @@ void ft_intersect_ray_cylinder(t_shape *sh, t_ray *ray) ft_cylinder_cap_check(sh, ray, &best_t); return; } - if ((fabs(calc.y + calc.x * dist.r)) < dist.a && - (ray->lenght = dist.r + EPSILON_NORMAL)) + if ((fabs(calc.y + calc.x * dist.r)) < dist.a) { + ray->lenght = dist.r + EPSILON_NORMAL; best_t = ray->lenght; ft_cylinder_cap_check(sh, ray, &best_t); if (ft_dot_product(ray->dir, ray->hit_n) > 0) diff --git a/src/ft_sphere.c b/src/ft_sphere.c index 236d149..6944a06 100644 --- a/src/ft_sphere.c +++ b/src/ft_sphere.c @@ -84,8 +84,11 @@ void ft_intersect_ray_sphere(t_shape *sh, t_ray *ray) b = 2 * ft_dot_product(oc, ray->dir); c = ft_dot_product(oc, oc) - sh->radius_sq; calc.x = (b * b) - (4 * c); - if (calc.x < 0 && (ray->lenght = -1)) + if (calc.x < 0) + { + ray->lenght = -1; return; + } calc.y = (-b - sqrt(calc.x)) / 2; calc.z = (-b + sqrt(calc.x)) / 2; if (calc.z > EPSILON_HIT && calc.z < calc.y) diff --git a/tests/test_camera.c b/tests/test_camera.c index 50c301a..ead0e3e 100644 --- a/tests/test_camera.c +++ b/tests/test_camera.c @@ -187,7 +187,7 @@ TEST(test_keycode_to_bit) ASSERT_TRUE(ft_keycode_to_bit(LK_DWN) == KEY_BIT_LK_D); ASSERT_TRUE(ft_keycode_to_bit(LK_ZL) == KEY_BIT_LK_ZL); ASSERT_TRUE(ft_keycode_to_bit(LK_ZR) == KEY_BIT_LK_ZR); - ASSERT_TRUE(ft_keycode_to_bit(0) == 0); + ASSERT_TRUE(ft_keycode_to_bit(-1) == 0); ASSERT_TRUE(ft_keycode_to_bit(999999) == 0); } diff --git a/tools/bmp_to_png.py b/tools/bmp_to_png.py index 2c10d5c..ae8e9ed 100755 --- a/tools/bmp_to_png.py +++ b/tools/bmp_to_png.py @@ -11,16 +11,18 @@ import os import sys import glob -from PIL import Image +import subprocess def convert_bmp_to_png(bmp_path, output_dir): - """Convert a single BMP file to PNG.""" + """Convert a single BMP file to PNG using macOS sips.""" name = os.path.splitext(os.path.basename(bmp_path))[0] png_path = os.path.join(output_dir, name + ".png") try: - img = Image.open(bmp_path) - img.save(png_path, "PNG", optimize=True) + subprocess.run( + ["sips", "-s", "format", "png", bmp_path, "--out", png_path], + check=True, capture_output=True, + ) size_kb = os.path.getsize(png_path) / 1024 print(f" {name}.bmp -> {name}.png ({size_kb:.0f} KB)") return True diff --git a/tools/gen_scene.c b/tools/gen_scene.c index 269433b..4a14f98 100644 --- a/tools/gen_scene.c +++ b/tools/gen_scene.c @@ -243,6 +243,18 @@ static void write_triangle(FILE *f, t_vec p1, t_vec p2, t_vec p3, col.r, col.g, col.b); } +static void write_triangle_mat(FILE *f, t_vec p1, t_vec p2, t_vec p3, + t_color col, const char *mat) +{ + fprintf(f, "tr\t%.1f,%.1f,%.1f\t%.1f,%.1f,%.1f\t%.1f,%.1f,%.1f" + "\t%d,%d,%d", + p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p3.x, p3.y, p3.z, + col.r, col.g, col.b); + if (mat) + fprintf(f, "\t%s", mat); + fprintf(f, "\n"); +} + static void write_paraboloid(FILE *f, t_vec pos, t_vec ori, double scale, double height, t_color col, const char *mat) { @@ -666,30 +678,288 @@ static void cathedral_rose_window(FILE *f) (t_color){255, 255, 220}, "trans:0.85 ior:1.5\tspec:0.5"); } +static void cathedral_altar_candle(FILE *f, double x, double z, double h) +{ + write_cylinder(f, (t_vec){x, 1.8, z}, (t_vec){0, 1, 0}, 0.1, h, + (t_color){240, 230, 200}); + write_sphere(f, (t_vec){x, 1.8 + h + 0.05, z}, 0.15, + (t_color){255, 220, 100}, "emit:200,150,50"); +} + static void cathedral_altar(FILE *f) { - t_color gold = {150, 120, 40}; - - write_box_mat(f, (t_vec){0, 1.5, -27}, (t_vec){3, 1.5, 1.5}, - (t_color){220, 210, 190}, "spec:0.3"); - write_box(f, (t_vec){0, 0.5, -27}, (t_vec){3.5, 0.5, 2}, - (t_color){210, 200, 180}); - write_cylinder_mat(f, (t_vec){-1, 2.25, -27}, (t_vec){0, 1, 0}, 0.15, - 1.5, (t_color){240, 230, 200}, "spec:0.4"); - write_sphere(f, (t_vec){-1, 3.75, -27}, 0.25, - (t_color){255, 220, 100}, "spec:0.8"); - write_cylinder_mat(f, (t_vec){1, 2.25, -27}, (t_vec){0, 1, 0}, 0.15, - 1.5, (t_color){240, 230, 200}, "spec:0.4"); - write_sphere(f, (t_vec){1, 3.75, -27}, 0.25, - (t_color){255, 220, 100}, "spec:0.8"); - write_cylinder_mat(f, (t_vec){0, 2.25, -27.5}, (t_vec){0, 1, 0}, 0.2, - 3.0, gold, "spec:0.6 refl:0.2"); - write_cylinder_mat(f, (t_vec){0, 4.0, -27.5}, (t_vec){1, 0, 0}, 0.2, - 1.5, gold, "spec:0.6 refl:0.2"); - write_box(f, (t_vec){0, 0.15, -25.5}, (t_vec){5, 0.15, 1}, - (t_color){200, 190, 170}); - write_box(f, (t_vec){0, 0.30, -24.5}, (t_vec){6, 0.15, 1}, - (t_color){200, 190, 170}); + t_color stone = {200, 190, 170}; + t_color gold = {210, 180, 80}; + + write_box(f, (t_vec){0, 0.15, -26}, (t_vec){8, 0.15, 4}, stone); + write_box(f, (t_vec){0, 0.35, -26.5}, (t_vec){6, 0.15, 3}, stone); + write_box_mat(f, (t_vec){0, 1.2, -27}, (t_vec){4, 1.0, 1.8}, + (t_color){100, 80, 60}, "spec:0.25"); + write_box(f, (t_vec){0, 1.75, -27}, (t_vec){4.3, 0.05, 2}, + (t_color){240, 235, 225}); + cathedral_altar_candle(f, -1.5, -27.0, 1.0); + cathedral_altar_candle(f, -1.2, -26.5, 0.8); + cathedral_altar_candle(f, -1.5, -27.5, 0.9); + cathedral_altar_candle(f, 1.5, -27.0, 1.0); + cathedral_altar_candle(f, 1.2, -26.5, 0.8); + cathedral_altar_candle(f, 1.5, -27.5, 0.9); + write_box_mat(f, (t_vec){0, 2.3, -27}, (t_vec){0.08, 0.8, 0.08}, + gold, "spec:0.7 refl:0.2"); + write_box_mat(f, (t_vec){0, 2.6, -27}, (t_vec){0.4, 0.08, 0.08}, + gold, "spec:0.7 refl:0.2"); + write_box(f, (t_vec){0, 0.15, -25.5}, (t_vec){5, 0.15, 1}, stone); + write_box(f, (t_vec){0, 0.30, -24.5}, (t_vec){6, 0.15, 1}, stone); +} + +static void cathedral_cross(FILE *f) +{ + t_color wood = {90, 70, 50}; + t_color gold = {220, 200, 100}; + + write_box_mat(f, (t_vec){0, 6, -28.8}, (t_vec){0.35, 6, 0.25}, + wood, "spec:0.2"); + write_box_mat(f, (t_vec){0, 8, -28.8}, (t_vec){3, 0.35, 0.25}, + wood, "spec:0.2"); + write_sphere(f, (t_vec){0, 9, -28.8}, 0.25, gold, "spec:0.8 refl:0.3"); + write_sphere(f, (t_vec){0, 3, -28.8}, 0.25, gold, "spec:0.8 refl:0.3"); + write_sphere(f, (t_vec){-1.5, 8, -28.8}, 0.25, + gold, "spec:0.8 refl:0.3"); + write_sphere(f, (t_vec){1.5, 8, -28.8}, 0.25, + gold, "spec:0.8 refl:0.3"); + write_torus(f, (t_vec){0, 8, -28.7}, (t_vec){0, 0, 1}, 1.0, 0.08, + gold, "spec:0.7 refl:0.3"); +} + +static void cathedral_organ(FILE *f) +{ + double z; + double heights_b[] = {12, 11, 10, 13, 11.5, 9.5, 12.5, 10.5, 8}; + double heights_f[] = {8, 9, 8.5, 9.5, 5.5, 0, 0, 0, 0}; + double heights_o[] = {6, 5, 7, 5.5, 6.5}; + int i; + + write_box_mat(f, (t_vec){11, 1, 10}, (t_vec){2, 2, 4}, + (t_color){90, 75, 55}, "spec:0.2"); + i = 0; + while (i < 9) + { + z = 12.0 - (double)i * 0.5; + write_cylinder_mat(f, (t_vec){11, 2, z}, (t_vec){0, 1, 0}, + 0.5 - (double)(i % 3) * 0.05, heights_b[i], + (t_color){200, 180, 100}, "spec:0.5 metal:0.3"); + i++; + } + i = 0; + while (i < 5) + { + z = 12.0 - (double)i * 1.0; + write_cylinder_mat(f, (t_vec){10.5, 2, z}, (t_vec){0, 1, 0}, + 0.35, heights_f[i], + (t_color){200, 180, 100}, "spec:0.5 metal:0.3"); + i++; + } + i = 0; + while (i < 5) + { + z = 12.0 - (double)i * 1.0; + write_cylinder_mat(f, (t_vec){11.5, 2, z}, (t_vec){0, 1, 0}, + 0.3, heights_o[i], + (t_color){210, 190, 110}, "spec:0.5 metal:0.3"); + i++; + } + write_disk(f, (t_vec){11, 15, 10.5}, (t_vec){0, 1, 0}, 0.6, + (t_color){220, 200, 100}, "spec:0.6"); + write_disk(f, (t_vec){11, 14.5, 9}, (t_vec){0, 1, 0}, 0.6, + (t_color){220, 200, 100}, "spec:0.6"); + write_disk(f, (t_vec){11, 14, 12}, (t_vec){0, 1, 0}, 0.6, + (t_color){220, 200, 100}, "spec:0.6"); + write_box_mat(f, (t_vec){11, 8, 13}, (t_vec){0.15, 12, 0.15}, + (t_color){90, 75, 55}, "spec:0.2"); + write_box_mat(f, (t_vec){11, 8, 7}, (t_vec){0.15, 12, 0.15}, + (t_color){90, 75, 55}, "spec:0.2"); + write_box_mat(f, (t_vec){11, 14, 10}, (t_vec){0.15, 0.15, 6}, + (t_color){90, 75, 55}, "spec:0.2"); +} + +static void cathedral_candelabra(FILE *f, double x, double z) +{ + t_color iron = {70, 60, 55}; + t_color wax = {240, 230, 200}; + t_color flame = {255, 220, 100}; + + write_cylinder_mat(f, (t_vec){x, 0, z}, (t_vec){0, 1, 0}, 0.15, 3.5, + iron, "spec:0.4 metal:0.5"); + write_disk(f, (t_vec){x, 3.5, z}, (t_vec){0, 1, 0}, 1.0, + iron, "spec:0.4 metal:0.5"); + write_cylinder(f, (t_vec){x, 3.5, z}, (t_vec){0, 1, 0}, 0.08, 0.8, + wax); + write_sphere(f, (t_vec){x, 4.35, z}, 0.12, + flame, "emit:180,140,40"); + write_cylinder(f, (t_vec){x - 0.3, 3.5, z + 0.3}, (t_vec){0, 1, 0}, + 0.08, 0.6, wax); + write_sphere(f, (t_vec){x - 0.3, 4.15, z + 0.3}, 0.12, + flame, "emit:180,140,40"); + write_cylinder(f, (t_vec){x + 0.3, 3.5, z - 0.3}, (t_vec){0, 1, 0}, + 0.08, 0.7, wax); + write_sphere(f, (t_vec){x + 0.3, 4.25, z - 0.3}, 0.12, + flame, "emit:180,140,40"); +} + +static void cathedral_wall_sconce(FILE *f, double x, double z) +{ + t_color iron = {70, 60, 55}; + + write_box_mat(f, (t_vec){x, 5, z}, (t_vec){0.3, 0.3, 0.3}, + iron, "spec:0.3 metal:0.4"); + write_cylinder(f, (t_vec){x, 5.3, z}, (t_vec){0, 1, 0}, 0.08, 0.6, + (t_color){240, 230, 200}); + write_sphere(f, (t_vec){x, 5.95, z}, 0.12, + (t_color){255, 220, 100}, "emit:180,140,40"); +} + +static void cathedral_candelabras(FILE *f) +{ + cathedral_candelabra(f, -5, 5); + cathedral_candelabra(f, -5, 0); + cathedral_candelabra(f, -5, -5); + cathedral_candelabra(f, 5, 5); + cathedral_candelabra(f, 5, 0); + cathedral_candelabra(f, 5, -5); + cathedral_wall_sconce(f, -11.5, 5); + cathedral_wall_sconce(f, -11.5, -3); + cathedral_wall_sconce(f, -11.5, -11); + cathedral_wall_sconce(f, -11.5, -19); + cathedral_wall_sconce(f, 11.5, 5); + cathedral_wall_sconce(f, 11.5, -3); + cathedral_wall_sconce(f, 11.5, -11); + cathedral_wall_sconce(f, 11.5, -19); +} + +static void cathedral_chandelier(FILE *f, double z) +{ + t_color iron = {70, 60, 55}; + t_color wax = {240, 230, 200}; + t_color flame = {255, 220, 100}; + t_color gold = {220, 200, 100}; + double offsets[][2] = {{2, 0}, {-2, 0}, {1.41, 1.41}, {-1.41, 1.41}, + {0, 2}, {0, -2}, {1.41, -1.41}, {-1.41, -1.41}}; + int i; + + write_cylinder_mat(f, (t_vec){0, 16.5, z}, (t_vec){0, 1, 0}, 0.06, + 3.5, iron, "spec:0.3 metal:0.5"); + write_torus(f, (t_vec){0, 13, z}, (t_vec){0, 1, 0}, 2.0, 0.15, + iron, "spec:0.4 metal:0.5"); + write_torus(f, (t_vec){0, 13, z}, (t_vec){0, 1, 0}, 1.2, 0.1, + iron, "spec:0.4 metal:0.5"); + write_sphere(f, (t_vec){0, 13.3, z}, 0.3, + gold, "spec:0.6 refl:0.2"); + i = 0; + while (i < 8) + { + write_cylinder(f, (t_vec){offsets[i][0], 13, z + offsets[i][1]}, + (t_vec){0, 1, 0}, 0.07, 0.6, wax); + write_sphere(f, + (t_vec){offsets[i][0], 13.65, z + offsets[i][1]}, 0.1, + flame, "emit:180,140,40"); + i++; + } +} + +static void cathedral_chandeliers(FILE *f) +{ + cathedral_chandelier(f, 5); + cathedral_chandelier(f, -5); + cathedral_chandelier(f, -15); +} + +static void cathedral_pews(FILE *f) +{ + t_color wood_a = {95, 78, 58}; + t_color wood_b = {90, 75, 55}; + t_color *w; + double z; + int i; + + i = 0; + while (i < 12) + { + z = 8.0 - (double)i * 2.0; + w = (i % 2 == 0) ? &wood_a : &wood_b; + write_box_mat(f, (t_vec){-3, 0.4, z}, (t_vec){2.8, 0.4, 0.5}, + *w, "spec:0.2"); + write_box_mat(f, (t_vec){-3, 0.85, z + 0.25}, + (t_vec){2.8, 0.5, 0.08}, *w, "spec:0.2"); + write_box_mat(f, (t_vec){3, 0.4, z}, (t_vec){2.8, 0.4, 0.5}, + *w, "spec:0.2"); + write_box_mat(f, (t_vec){3, 0.85, z + 0.25}, + (t_vec){2.8, 0.5, 0.08}, *w, "spec:0.2"); + i++; + } +} + +static void cathedral_gothic_arches(FILE *f) +{ + t_color stone = {200, 185, 160}; + double z; + int i; + + i = 0; + while (i < 7) + { + z = 10.0 - (double)i * 5.0; + write_triangle_mat(f, (t_vec){-6, 14, z}, + (t_vec){-6, 16.5, z - 2.5}, (t_vec){-6, 14, z - 5}, + stone, "spec:0.1"); + write_triangle_mat(f, (t_vec){6, 14, z}, + (t_vec){6, 16.5, z - 2.5}, (t_vec){6, 14, z - 5}, + stone, "spec:0.1"); + i++; + } +} + +static void cathedral_extras(FILE *f) +{ + t_color stone = {180, 170, 150}; + t_color wood = {80, 65, 48}; + + write_cylinder_mat(f, (t_vec){-3, 0, 12}, (t_vec){0, 1, 0}, 0.3, 2.5, + stone, "spec:0.2"); + write_paraboloid(f, (t_vec){-3, 2.5, 12}, (t_vec){0, 1, 0}, 0.5, 1.2, + stone, "spec:0.2"); + write_disk(f, (t_vec){-3, 2.8, 12}, (t_vec){0, 1, 0}, 1.4, + (t_color){120, 140, 160}, "refl:0.5 spec:0.6"); + write_box_mat(f, (t_vec){-10.5, 1.2, -2}, (t_vec){1.5, 2.4, 1}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 1.2, -2.8}, (t_vec){0.15, 2.4, 0.6}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 1.2, -1.2}, (t_vec){0.15, 2.4, 0.6}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 2.5, -2}, (t_vec){1.8, 0.1, 1.4}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 1.2, -8}, (t_vec){1.5, 2.4, 1}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 1.2, -8.8}, (t_vec){0.15, 2.4, 0.6}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 1.2, -7.2}, (t_vec){0.15, 2.4, 0.6}, + wood, "spec:0.15"); + write_box_mat(f, (t_vec){-10.5, 2.5, -8}, (t_vec){1.8, 0.1, 1.4}, + wood, "spec:0.15"); + write_box(f, (t_vec){0, 0.04, 0}, (t_vec){0.7, 0.04, 14}, + (t_color){120, 30, 30}); + write_cylinder_mat(f, (t_vec){-3, 0, -25}, (t_vec){0, 1, 0}, 0.2, + 3.0, (t_color){90, 75, 55}, "spec:0.3"); + write_box_mat(f, (t_vec){-3, 3, -25}, (t_vec){0.8, 0.05, 0.6}, + (t_color){90, 75, 55}, "spec:0.3"); + write_box_mat(f, (t_vec){-3, 3.3, -24.85}, (t_vec){0.8, 0.5, 0.05}, + (t_color){90, 75, 55}, "spec:0.3"); + write_square_mat(f, (t_vec){-3.5, 12, -29.5}, (t_vec){0, 0, 1}, 1.5, + (t_color){80, 40, 180}, "trans:0.7 ior:1.4"); + write_square_mat(f, (t_vec){3.5, 12, -29.5}, (t_vec){0, 0, 1}, 1.5, + (t_color){180, 40, 40}, "trans:0.7 ior:1.4"); + write_square_mat(f, (t_vec){-3.5, 7, -29.5}, (t_vec){0, 0, 1}, 1.2, + (t_color){40, 160, 80}, "trans:0.7 ior:1.4"); + write_square_mat(f, (t_vec){3.5, 7, -29.5}, (t_vec){0, 0, 1}, 1.2, + (t_color){180, 160, 40}, "trans:0.7 ior:1.4"); } static void cathedral_debris(FILE *f, int seed) @@ -983,6 +1253,10 @@ static void gen_cathedral_ruins(FILE *f, t_config *cfg) fprintf(f, "\n"); cathedral_altar(f); fprintf(f, "\n"); + cathedral_cross(f); + fprintf(f, "\n"); + cathedral_organ(f); + fprintf(f, "\n"); cathedral_debris(f, cfg->seed); fprintf(f, "\n"); cathedral_roof(f); @@ -994,6 +1268,16 @@ static void gen_cathedral_ruins(FILE *f, t_config *cfg) cathedral_stained_glass(f); fprintf(f, "\n"); cathedral_decorations(f); + fprintf(f, "\n"); + cathedral_candelabras(f); + fprintf(f, "\n"); + cathedral_chandeliers(f); + fprintf(f, "\n"); + cathedral_pews(f); + fprintf(f, "\n"); + cathedral_gothic_arches(f); + fprintf(f, "\n"); + cathedral_extras(f); } static void print_usage(void)