Skip to content

benkyd/inferno

Repository files navigation

Inferno Pathtracer

Build Status

Inferno is a CPU-Only, progressive, unidirectional pathtracing engine written in C++.

Latest Render

Features

  • 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

Build Instructions

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 modify the CurrentTest variable inside the CMakeLists.txt 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;
}

Example Render

References

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.

Samples

Stanford Dragon Stanford Dragon Cornell Box Specular Materials Cornell Box Cornell Box No Colours

About

Inferno v2.0 - A naive pathtracer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages