Skip to content
/ IMRT Public

Real-time CPU/CUDA/OPTIX path-tracer using ImGui

Notifications You must be signed in to change notification settings

wm1511/IMRT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMRT

Real-time CPU/CUDA/OPTIX path-tracer using ImGui

Description

IMRT (Immediate Mode Ray Tracer) is an engine developed as my engineering thesis, based on a path-tracing technique. Main goals set for the project were maximal interactivity with user and availability of implementations for many platforms, including one offering hardware accelerated path-tracing.

Screenshot

image

Architecture

The application is divided into two layers implemented mainly in the object-oriented paradigm. The first one is responsible for drawing the window and interface, allows control over the interface and processes the rendered data. The second is a rendering layer responsible for rendering a scene defined by the user. Rendering is performed by one of 3 available engines: CPU, CUDA or OPTIX. Each of them communicates with the interface using shared data structures.

Libraries

UML Class Diagram

Klasy

Performance

The scenes in the image below were generated using available engines. The number of generated frames for each engine is 100. Not all scenes were generated using each engine due to excessive rendering time. Sceny Render time depending on used scene and engine

CPU Engine CUDA Engine OPTIX Engine
Scene 1 2s 759ms 142ms 207ms
Scene 2 4s 845ms 303ms 517ms
Scene 3 4s 658ms 401ms 548ms
Scene 4 4m 43s 552ms 19s 51ms 662ms
Scene 5 - 30m 14s 216ms 1s 794ms
Scene 6 - - 7s 434ms

Potential development

  • Texture and material system (probably based on some material definition language)
  • More capable 3D model importer
  • Instancing support
  • CPU and CUDA BVH implementation