Inferno is a CPU-Only, progressive, unidirectional pathtracing engine written in C++.
- Supports OBJ Files
- Supports many material properties
- Uses multiple types of acceleration structures
- Fully capable GUI adds many runtime customizations to the scene and render settings
- Custom threadpool for best performance
git clone https://github.com/plane000/inferno
cd inferno
mkdir build
cd build
cmake ..
make
There are many example scenes that I have made already. Just modify the CurrentTest variable inside the CMakeLists.txt to the name of the file you wish to demo.
The basic use of the API is demonstrated below. More documentation will come once the project is more mature.
#include "../src/inferno.hpp"
static const int width = 1000;
static const int height = 1000;
int main(int argc, char** argv) {
InfernoEngine inferno;
inferno.SetMode(MODE_OPERATION_PROGRESSIVE_GUI);
inferno.InitWindow(width, height);
Scene* scene = new Scene(width, height);
scene->sky = new SolidColourSky({ 0.0f, 0.0f, 0.0f } 0.0f);
scene->camera = new Camera(width, height);
// Light
Sphere light({ 35.0f, 56.0f, 25.0f }, 35.0f, new Material({ 1.0f, 1.0f, 1.0f }, 0.0f, 5.0f));
scene->objects.push_back(&light);
Sphere sphere({ 0.0f, 0.0f, -8.0f }, 1.0f, new Material({ 0.817f, 0.374, 0.574 }, 0.5f));
scene->objects.push_back(&sphere);
Plane plane({ 0.0f,-1.0f, 0.0f }, { 0.0f, -1.0f, 0.0f }, new Material({ 0.9f, 0.9f, 0.9f }, 0.0f));
scene->objects.push_back(&plane);
inferno.SetScene(scene);
inferno.Ready();
inferno.Render();
return 0;
}
While I have been working on this project, I have found a few resources to be especially useful. Below are a few I have listed.