Skip to content

3D graphics engine and scene editor. Capable of rendering online and offline global illumination using a number of different methods. Written in c++ with OpenGL/GLSL.

License

Notifications You must be signed in to change notification settings

rodrigobmg/3D-Graphics-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

3D graphics engine and scene editor. Capable of rendering online and offline global illumination using a number of different methods. Written in c++ with OpenGL/GLSL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published