Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Limeth/euclider
A higher dimensional raytracing prototype with non-euclidean-like features
https://github.com/Limeth/euclider
Last synced: 7 days ago
JSON representation
A higher dimensional raytracing prototype with non-euclidean-like features
- Host: GitHub
- URL: https://github.com/Limeth/euclider
- Owner: Limeth
- License: unlicense
- Created: 2016-05-15T08:55:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-07T13:10:35.000Z (almost 6 years ago)
- Last Synced: 2024-08-01T03:21:05.970Z (3 months ago)
- Language: Rust
- Homepage:
- Size: 37 MB
- Stars: 213
- Watchers: 7
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
- awesome-rust - Limeth/euclider - time 4D CPU ray tracer [<img src="https://api.travis-ci.org/Limeth/euclider.svg?branch=master">](https://travis-ci.org/Limeth/euclider) (Applications / Graphics)
- awesome-rust - Limeth/euclider - time 4D CPU ray tracer (Applications / Graphics)
- awesome-rust-cn - Limeth/euclider
- awesome-physics - euclider - A higher-dimensional "non-euclidean" ray tracing prototype written in Rust (Optics / Sound)
- awesome-rust-zh - Limeth/euclider - 实时 4D CPU 光线跟踪器 [<img src="https://api.travis-ci.org/Limeth/euclider.svg?branch=master">](https://travis-ci.org/Limeth/euclider) (应用 / 图像)
- awesome-rust - Limeth/euclider - A real-time 4D CPU ray tracer (Applications / Graphics)
- awesome-rust - Limeth/euclider - time 4D CPU ray tracer [<img src="https://api.travis-ci.org/Limeth/euclider.svg?branch=master">](https://travis-ci.org/Limeth/euclider) (应用 Applications / 图像处理 Graphics)
- awesome-rust-cn - Limeth/euclider - time 4D CPU ray tracer [<img src="https://api.travis-ci.org/Limeth/euclider.svg?branch=master">](https://travis-ci.org/Limeth/euclider) (应用 / Graphics)
- fucking-awesome-rust - Limeth/euclider - A real-time 4D CPU ray tracer (Applications / Graphics)
- fucking-awesome-rust - Limeth/euclider - A real-time 4D CPU ray tracer (Applications / Graphics)
README
# euclider
[![Build Status](https://travis-ci.org/Limeth/euclider.svg?branch=master)](https://travis-ci.org/Limeth/euclider)
[![Build status](https://ci.appveyor.com/api/projects/status/gcp1wxqfhjjk70vg/branch/master?svg=true)](https://ci.appveyor.com/project/Limeth/euclider/branch/master)A higher-dimensional "non-euclidean" ray tracing prototype written in Rust.
Dual-licensed under [MIT](https://opensource.org/licenses/MIT) or the [UNLICENSE](http://unlicense.org).
# Installation
1. Install the Rust language via [Rustup](https://www.rustup.rs/)
2. Use nightly rust via `rustup default nightly`
3. Clone this repository and `cd` into it
4. Build with `cargo build --release`
5. Run with `target/release/euclider`
6. Open a scene with `target/release/euclider --scene scenes/3d_room.json`# Controls
* Mouse wheel - resolution adjustment
* [`Esc`] - exit## 3D Scenes
* Mouse - camera rotation
* [`W`/`A`/`S`/`D`/`Shift`/`Control`] - camera movement## 4D Scenes
* 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 [`C`/`M`]:
* [`I`] - x axis
* [`O`] - Y axis
* [`K`] - Z axis
* [`L`] - W axis
* [`W`/`A`/`S`/`D`/`Shift`/`Control`/`Q`/`E`] - camera movement# Preview
![Fresnel Sphere](preview/preview_3d_fresnel_sphere.png)
A simple sphere displaying Fresnel equations.![3D Room](preview/preview_3d_room.png)
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![3D Hallways](preview/preview_3d_hallways.png)
A non-euclidean 3D scene consisting of hallways that either stretch the space inside (left) or shrink it (right).![4D Cylindric Hypercube Frame](preview/preview_4d_cylinder_frame.png)
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.