All Projects → slightknack → keikan

slightknack / keikan

Licence: MIT license
An elegant (imo) rendering engine written in Rust.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to keikan

Softwarerenderer
Software rendering engine with PBR. Built from scratch on C++.
Stars: ✭ 323 (+487.27%)
Mutual labels:  rendering-engine, 3d-graphics
Legion-Engine
Rythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Stars: ✭ 502 (+812.73%)
Mutual labels:  rendering-engine, 3d-graphics
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+2414.55%)
Mutual labels:  rendering-engine, 3d-graphics
Hybridrenderingengine
Clustered Forward/Deferred renderer with Physically Based Shading, Image Based Lighting and a whole lot of OpenGL.
Stars: ✭ 563 (+923.64%)
Mutual labels:  rendering-engine, 3d-graphics
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+21310.91%)
Mutual labels:  rendering-engine, 3d-graphics
Overload
3D Game engine with editor
Stars: ✭ 335 (+509.09%)
Mutual labels:  rendering-engine, 3d-graphics
3D interactive graphics rendering engine
Develop a 3D interactive graphics rendering engine
Stars: ✭ 31 (-43.64%)
Mutual labels:  rendering-engine, 3d-graphics
Tinyraytracer
A brief computer graphics / rendering course
Stars: ✭ 3,971 (+7120%)
Mutual labels:  rendering-engine, 3d-graphics
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+798.18%)
Mutual labels:  rendering-engine, 3d-graphics
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+3676.36%)
Mutual labels:  rendering-engine, 3d-graphics
Hvvr
Hierarchical Visibility for Virtual Reality, which implements a hybrid CPU/GPU ray-caster, suited for real time rendering of effects such as lens distortion.
Stars: ✭ 100 (+81.82%)
Mutual labels:  rendering-engine
Nimble
An OpenGL renderer with a modern and extensible rendering pipeline.
Stars: ✭ 144 (+161.82%)
Mutual labels:  rendering-engine
Spmathkit
Render math exercises for your view. Contains the rendering of mathematical formulas and mathematical graphics, as well as the general text
Stars: ✭ 81 (+47.27%)
Mutual labels:  rendering-engine
Dgle
Powerful independent cross-platform engine for 2D/3D games and visualizations. Young, strong and crazy!
Stars: ✭ 149 (+170.91%)
Mutual labels:  rendering-engine
Monte carlo ray tracer
A program with an implemented Monte Carlo Ray Tracer algorithm for global illumination of a virtual 3D scene.
Stars: ✭ 90 (+63.64%)
Mutual labels:  rendering-engine
Simplerenderengine
Small C++14 render engine
Stars: ✭ 253 (+360%)
Mutual labels:  rendering-engine
Graphics Algorithm
3D图形学算法Code。包括软渲染、光线追踪、PBR等等~
Stars: ✭ 67 (+21.82%)
Mutual labels:  rendering-engine
Parser Javascript
Browser sniffing gone too far — A useragent parser library for JavaScript
Stars: ✭ 66 (+20%)
Mutual labels:  rendering-engine
Fractal-Inferno
An Online Fractal Flame Generator.
Stars: ✭ 41 (-25.45%)
Mutual labels:  fractals
Nuomodelviewer
A simple Wavefront OBJ viewer.
Stars: ✭ 207 (+276.36%)
Mutual labels:  rendering-engine

Keikan (警官)

An elegant (imo) rendering engine written in Rust.

Keikan is a multithreaded photorealistic rendering engine that supports path-tracing, ray-marching, Photo Based Rendering (through a principled implementation), and more.

I've tried my hand a few toy path-tracers and ray-marchers in the past, and I wanted to write something more than just a toy. Having just stumbled upon Rust, I decided to try my hand at it by implementing a rendering engine from scratch.

This project was originally inspired by Ray Tracing in One Weekend, but after I knocked out the core engine, I've pulled from a number of different sources and my own experience to develop it further.

Results

Here's a recent render of a ray-marched Mandelbulb (a type of fractal):

A Mandelbulb fractal

Rendered in a little over 2 minutes on a potato.

There are some images bundles in this repository under the keikan/renders/ folder, ordered chronologically. Go check them out!

Design Goals

Keikan is able to render a large variety of objects, including fractals to near-infinite precision, due to its support of both path-tracing and ray-marching.

Ray-marching is rendering through the use of a signed distance field. I personally got interested in computer graphics through writing ray-marching renderer, so I decided that if I wrote another rendering engine, I'd have include ray-marching as a technique.

Getting Started

To render a small demo, clone this repository and run Keikan:

git clone https://github.com/slightknack/keikan.git
cd keikan
cargo run --release -- ~/Desktop/demo.png  # where to save the image

You should see some output right away. Keikan will spawn as many threads as detected CPU cores, so it should be pretty relatively fast (for non-GPU-based rendering code, haha).

I'd like to use GPU features, as I've made some ray marchers in GLSL, but it seems like Rust doesn't have standardized GPU support. If you know how to run Rust on the GPU, open an issue so we can discuss it further!

Why (the Name) Keikan?

It's Japanese for policeman.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].