diff --git a/.todo b/.todo index dd7ca1d..2315ed4 100644 --- a/.todo +++ b/.todo @@ -4,12 +4,14 @@ FART To-Do List High Priority: - Add distribution infrastructure - Multi-threading + - Rework booleans to base them on regions instead of in/out for each side Medium Priority: - Shape definitions / reusability - Scene file pre-parser to allow includes, macros, and comments - Vim syntax file - Add jitter parameter to lights to effect soft shadow edges + - Allow >2 sub-shapes in boolean shape definitions in scene files Low Priority: - Refraction diff --git a/scenes/die.fart b/scenes/die.fart new file mode 100644 index 0000000..1c4e82d --- /dev/null +++ b/scenes/die.fart @@ -0,0 +1,138 @@ + +scene +{ + camera + { + position <1.5, -2.5, 1.5> + look_at <0, 0, 0> + } + + light + { + position <10, 4, 10> + } + + plane + { + position <0, 0, 1>, 0.501 + } + + union + { + union { + union { + box { size <1, 0.8, 0.8> } + union { + box { size <0.8, 1, 0.8> } + box { size <0.8, 0.8, 1> } + } + } + union { + union { + union { + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, 0.4, -0.4> + } + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, -0.4, -0.4> + } + } + union { + cyl { + size <0.1, 0.1, 0.8> + translate <-0.4, 0.4, -0.4> + } + cyl { + size <0.1, 0.1, 0.8> + translate <-0.4, -0.4, -0.4> + } + } + } + union { + union { + union { + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, -0.4, 0.4> + rotate -90, <1, 0, 0> + } + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, -0.4, -0.4> + rotate -90, <1, 0, 0> + } + } + union { + cyl { + size <0.1, 0.1, 0.8> + translate <-0.4, -0.4, 0.4> + rotate -90, <1, 0, 0> + } + cyl { + size <0.1, 0.1, 0.8> + translate <-0.4, -0.4, -0.4> + rotate -90, <1, 0, 0> + } + } + } + union { + union { + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, -0.4, 0.4> + rotate -90, <0, 1, 0> + } + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, -0.4, -0.4> + rotate -90, <0, 1, 0> + } + } + union { + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, 0.4, 0.4> + rotate -90, <0, 1, 0> + } + cyl { + size <0.1, 0.1, 0.8> + translate <0.4, 0.4, -0.4> + rotate -90, <0, 1, 0> + } + } + } + } + } + } + union { + union { + union { + sphere { radius 0.1 translate <0.4, 0.4, 0.4> } + sphere { radius 0.1 translate <0.4, 0.4, -0.4> } + } + union { + sphere { radius 0.1 translate <0.4, -0.4, 0.4> } + sphere { radius 0.1 translate <0.4, -0.4, -0.4> } + } + } + union { + union { + sphere { radius 0.1 translate <-0.4, 0.4, 0.4> } + sphere { radius 0.1 translate <-0.4, 0.4, -0.4> } + } + union { + sphere { radius 0.1 translate <-0.4, -0.4, 0.4> } + sphere { radius 0.1 translate <-0.4, -0.4, -0.4> } + } + } + } + + material + { + color <1, 0.2, 1> + transparency 0.5 + } + } +}