C++11 Ray Tracing / Marching Framework
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img
meshes
.gitignore
Makefile
README.md
aabb.h
aabb_tri_internal.h
application.cpp
application.h
bmp_writer.cpp
bmp_writer.h
camera.h
cornell_box.cpp
cornell_box.h
font_rendering.cpp
font_rendering.h
framebuffer.cpp
framebuffer.h
grid.cpp
grid.h
lin_alg.cpp
lin_alg.h
main.cpp
mesh.cpp
mesh.h
misc_fixed_6x12.h
primes.cpp
renderer.cpp
renderer.h
sampling.cpp
sampling.h
scene.cpp
scene.h
timer.cpp
timer.h
trace.cpp
trace.h
triangle.h
types.cpp
types.h

README.md

C++11 Ray Tracing / Marching Framework

This is a basic C++11 OpenGL viewer application running a ray tracing / marching kernel for each tile in a pool of worker threads. The purpose of this application is to be a test framework for some rendering ideas I plan to explore.

Features

A basic rendering framework and a collection of different libraries.

  • Point, ray and triangle with AABB intersection
  • Two different ray / triangle intersection tests
  • Triangle / line segment distance functions
  • Ray / plane intersection
  • Template classes for vectors and matrices with common computer graphics operations implemented
  • OpenGL viewer with text rendering and frame limiter
  • Ten runtime switchable test scenes
  • Screenshot feature, writing of BMP images
  • Ray generation for orthographic and perspective cameras
  • Build-in Cornell Box scene
  • Tiled, parallel, CPU writeable + OpenGL drawable frame buffer system
  • 3D DDA based grid intersection accelerator
  • Basic mesh processing pipeline (load from disk, transform, compute normals etc.)
  • Sampling module supporting various Low Discrepancy Sequences / QMC methods
  • Time helpers for logging and performance measurement
  • Basic tracing / logging system
  • Super-sampling
  • Gamma correction

Building

Compiling has no prerequisites aside from a C++11 ready Clang and GLUT. I tested with Apple's command line development tools. Building should succeed with a simple

$ make

Images

Not much to see, just the basic are in place.

viewer scenes

Legal

This program is published under the MIT License.

Author

Developed by Tim C. Schroeder, visit my website to learn more.