Giter VIP home page Giter VIP logo

3d-graphics-engine's Introduction

3D Graphics Engine

A 3D graphics engine written in c++ with openGL. Used primarily for testing global illumination algorithms.

editor sample

Features

  • add entities, supports wavefront (.obj) / point clouds (.pcl, custom data structure).
  • set entity parameters:
    • position, scale, rotation, index of refraction, microfacet roughness, absorption, reduced scattering.
  • add lights.
  • set light parameters:
    • light intensity.
  • set shading type:
    • Direct Shadow Map.
    • Stochastic Ray tracing (offline).
    • Photon Map (offline).
    • Reflective Shadow Map.
    • instant radiosity.
  • file->Export Scene, exports the scene data to a file.
  • file->Import Scene, imports the scene data from a file.
  • delete entities.
  • delete lights.

Controls:

  • wasd or right mouse button moves camera.
  • shift moves the camera down.
  • space bar moves the camera up.
  • left mouse selects entities.
  • choose an entity from a list to edit.

Dependencies

Headers and library files must be included into your project:

GLEW, freeglut, OpenCL, OpenCV

Install

Include and build source located at 'src'.

Two separate Builds may exist: an editor build and a viewer build. The Editor build includes editing function whereas the viewer build does not. The viewer build simply loads the scene file and allows the user to move the camera.

For editor builds add preprocessor '_EDITOR' for viewer builds add '_VIEWER'.

Algorithms

A comprehensive global illumination survey can be found here: Global illumination survey

Offline

Stochastic Ray Tracing [1]

Stochastic Ray Tracing

Photon Map [2]

Photon Map

Online

Reflective Shadow Map [3]

Direct Lighting + Indirect Lighting + Subsurface Scattering

Reflective Shadow Map

Instant Radiosity [4]

Instant Radiosity

License

This project is licensed under the terms of the MIT license.

[1] [Kajiya, James T. "The rendering equation." ACM Siggraph Computer Graphics. Vol. 20. No. 4. ACM, 1986.]

[2] [Jensen, Henrik Wann. "Global illumination using photon maps." Rendering Techniques’ 96. Springer Vienna, 1996. 21-30.]

[3] [Dachsbacher, Carsten, and Marc Stamminger. "Reflective shadow maps." Proceedings of the 2005 symposium on Interactive 3D graphics and games. ACM, 2005.]

[4] [Keller, Alexander. "Instant radiosity." Proceedings of the 24th annual conference on Computer graphics and interactive techniques. ACM Press/Addison-Wesley Publishing Co., 1997.]

3d-graphics-engine's People

Contributors

gregjksmith 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.