Git Product home page Git Product logo

inferno's Introduction

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

inferno's People

Contributors

benkyd avatar shreddan avatar

Stargazers

Ines Antunes avatar  avatar  avatar Zack Urben avatar YangJun avatar V. Fabiano avatar  avatar Diego Lopes avatar CobaltXII avatar Jennie avatar Josh avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.