All Projects → joaovbs96 → Optix Path Tracer

joaovbs96 / Optix Path Tracer

Licence: apache-2.0
OptiX Path Tracer

Projects that are alternatives of or similar to Optix Path Tracer

Plotoptix
Data visualisation in Python based on OptiX 7.2 ray tracing framework.
Stars: ✭ 252 (+320%)
Mutual labels:  nvidia, raytracing, gpu, cuda
peakperf
Achieve peak performance on x86 CPUs and NVIDIA GPUs
Stars: ✭ 33 (-45%)
Mutual labels:  gpu, cuda, nvidia
Nvidia Modded Inf
Modified nVidia .inf files to run drivers on all video cards, research & telemetry free drivers
Stars: ✭ 227 (+278.33%)
Mutual labels:  nvidia, gpu, cuda
Cub
Cooperative primitives for CUDA C++.
Stars: ✭ 883 (+1371.67%)
Mutual labels:  nvidia, gpu, cuda
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+1216.67%)
Mutual labels:  nvidia, gpu, cuda
Genomeworks
SDK for GPU accelerated genome assembly and analysis
Stars: ✭ 215 (+258.33%)
Mutual labels:  nvidia, gpu, cuda
Cuda
Experiments with CUDA and Rust
Stars: ✭ 31 (-48.33%)
Mutual labels:  nvidia, gpu, cuda
Xmrminer
🐜 A CUDA based miner for Monero
Stars: ✭ 158 (+163.33%)
Mutual labels:  nvidia, gpu, cuda
Deep Diamond
A fast Clojure Tensor & Deep Learning library
Stars: ✭ 288 (+380%)
Mutual labels:  nvidia, gpu, cuda
Komputation
Komputation is a neural network framework for the Java Virtual Machine written in Kotlin and CUDA C.
Stars: ✭ 295 (+391.67%)
Mutual labels:  nvidia, gpu, cuda
Thrust
The C++ parallel algorithms library.
Stars: ✭ 3,595 (+5891.67%)
Mutual labels:  nvidia, gpu, cuda
Macos Egpu Cuda Guide
Set up CUDA for machine learning (and gaming) on macOS using a NVIDIA eGPU
Stars: ✭ 187 (+211.67%)
Mutual labels:  nvidia, gpu, cuda
Cuml
cuML - RAPIDS Machine Learning Library
Stars: ✭ 2,504 (+4073.33%)
Mutual labels:  nvidia, gpu, cuda
Gmonitor
gmonitor is a GPU monitor (Nvidia only at the moment)
Stars: ✭ 169 (+181.67%)
Mutual labels:  nvidia, gpu, cuda
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+523.33%)
Mutual labels:  nvidia, gpu, cuda
opencv-cuda-docker
Dockerfiles for OpenCV compiled with CUDA, opencv_contrib modules and Python 3 bindings
Stars: ✭ 55 (-8.33%)
Mutual labels:  gpu, cuda, nvidia
Deep Learning Boot Camp
A community run, 5-day PyTorch Deep Learning Bootcamp
Stars: ✭ 1,270 (+2016.67%)
Mutual labels:  nvidia, gpu, cuda
Libcudacxx
The C++ Standard Library for your entire system.
Stars: ✭ 1,861 (+3001.67%)
Mutual labels:  nvidia, gpu, cuda
Gprmax
gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Penetrating Radar (GPR)
Stars: ✭ 268 (+346.67%)
Mutual labels:  nvidia, gpu, cuda
Cuda Api Wrappers
Thin C++-flavored wrappers for the CUDA Runtime API
Stars: ✭ 362 (+503.33%)
Mutual labels:  nvidia, gpu, cuda

OptiX Path Tracer

various output images

Overview

NVIDIA's OptiX based GPU Path Tracer. Project originally forked from Ingo Wald's OptiX version of Peter Shirley's "Ray Tracing" series, still being expanded with new features being added even after being done with the final book, "The Rest of Your Life". Accompanying blog posts describing the implemention are available in the following links:

Features

  • Pinhole Camera
  • BRDFs:
    • Lambertian
    • Ideal Dielectric(Glass)
    • Ideal Metal
    • Ashikhmin-Shirley
    • Torrance-Sparrow
    • Oren-Nayar
    • Normal Shader
    • Volumetric Material(WIP)
  • Surfaces:
    • Triangle Meshes
    • Spheres
    • Rectangles
    • Boxes
  • Russian Roulette Path Termination
  • Multiple Importance Sampling
  • HDRi Environmental Mapping & Tone Mapping

TODO:

  • BRDFs:
  • Surfaces:
    • Torus
    • Cone
    • Cylinder
  • OptiX's Motion Blur
  • Bump Mapping
  • Spectral Rendering

Further reading

Prerequisites

  • A install of CUDA, preferably CUDA 10 or above. Make sure to put your CUDA binary directory into your path;
  • A install of OptiX 6.0.0 or above. A Maxwell or newer GPU is also needed, as we make use of RTX-mode only features.
  • Compiler and build tools - GCC, MSVC, CLang, etc;
  • CMake.

Included Third-Party Libraries

Building

  • This project is built with CMake. On Linux, simply create a build directory, and start the build with with ccmake:

    mkdir build cd build cmake .. make

  • Assuming you have NVCC (CUDA) in your path, and have set a OptiX_INSTALL_DIR environment variable to point to the OptiX install dir, everything should be configured automatically;

  • You can set NVCC flags through the macro cuda_compile_ptx in the file OptiX-Path-Tracer/cmake/configure_optix.cmake. Keep in mind that the flag --relocatable-device-code=true; is needed to make use of callable programs if you are building the project using the CUDA SDK 8.0 or superior. An InvalidSource exception will happen if you fail to do so.

Running

  • Run the ./OptiX-Path-Tracer binary (OptiX-Path-Tracer.exe on windows). This should render a PNG image under the output folder(that needs to be created on ahead). To change image resolution, and number of samples just edit OptiX-Path-Tracer/main.cpp;
  • On Windows, you might see a "DLL File is Missing" warning. Just copy the missing file from OptiX SDK X.X.X/SDK-precompiled-samples to the build folder.

Code Overview

  • Host code, functions and constructors are separated into the main.cpp and different header files under the host_includes/ folder;
  • Device related code is in the programs/ folder;
  • The OptiX-Path-Tracer/CMakeLists scripts sets up the build; in particular, it defines all the CMake rules for compiling the device programs, embedding them into host object files, and linking them tothe final binary;
  • Ingo Wald made two different versions of the code, a recursive one and an iterative one(better suited to GPUs). On my fork, I decided to keep the iterative version only, but you can still check his original code on his repository;
  • This project uses Clang-Format(Google's style with tab width equal to 2) to keep code style consistent.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].