c14ac1329252bda11d1315f233ee6a85e114c1b6
Inferno Pathtracer
Inferno is a CPU Only, progressive unidirectional pathtracing engine written in C++.
Features
- Supports OBJ Files
- Supports many material properties
- Uses multiple types of acceleration structures
- Fully capable GUI adds much runtime customization to the scene and render settings
- Custom threadpool for best performance
Installation
git clone https://github.com/plane000/inferno
cd inferno
mkdir build
cd build
cmake ..
make
Examples
There are many example scenes that I have made already. Just change the CurrentTest variable inside the CMakeList to the name of the file you wish to demo.
Basic Scene
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;
}
References
While programming this I found a few resources especially useful. Below is some listed.
Samples
Languages
C++
85.6%
C
14.3%
CMake
0.1%






