|
|
|
# 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
|