A higher-dimensional "non-euclidean" ray tracing prototype written in Rust.
Dual-licensed under MIT or the UNLICENSE.
- Install the Rust language via Rustup
- Use nightly rust via
rustup default nightly
- Clone this repository and
- Build with
cargo build --release
- Run with
- Open a scene with
target/release/euclider --scene scenes/3d_room.json
- Mouse wheel - resolution adjustment
Esc] - exit
- Mouse - camera rotation
Control] - camera movement
- Generalized rotations happen in a plane, not around an axis. A plane is given by two axes of the camera. Rotate by holding two buttons bound to the following axes and pressing [
I] - x axis
O] - Y axis
K] - Z axis
L] - W axis
E] - camera movement
A simple sphere displaying Fresnel equations.
A scene containing a room with several entities. Listed from left to right:
- a blue sphere with a partially reflective surface;
- a cuboid with an animated perlin noise surface;
- a glass material in the shape of the complement set operation on a cube and a sphere;
- an infinite cylinder passing through the ceiling and the floor
A non-euclidean 3D scene consisting of hallways that either stretch the space inside (left) or shrink it (right).
A frame of a 4D hypercube made of cylinders as edges. Notice how the rays on the cyan cylinder in the bottom right are reflected to the fourth dimension, revealing more of the frame.