# rmarcher A ray marching renderer in rust ![small example](prod/small.png) ## Dependencies - `rust >= 1.51` for const generics - `crossbeam` && `crossbeam-channel` for multithreading - `rand` for rng - `image` for png export - `rlua` for lua scene building ## What currently works - Simple shapes (half-spaces, spheres, cylinders and torus are the only tested ones so far) - Spectral simulation (currently using 4 color components) - Global illumination (with diffuse and reflective surfaces) - Punctual illumination - Defining scenes in lua ## What is planned - Testing of more shapes - Support for controlling the whole application from lua - Support for linking against a `scene.so` exporting a scene - Support for using as a library ## Examples ![1st test scene](prod/1.png) ![2nd test scene](prod/2.png) ![3rd test scene](prod/3.png) ![randomly generated spheres](prod/randomspheres.png) ![randomly generated objects](prod/smolgalaxy.png) ![inside a spherical mirror](prod/insidemirror.png) ## License MIT