All Projects → JoshuaSenouf → tracer

JoshuaSenouf / tracer

Licence: MIT License
Renderer using C++, Embree and USD to achieve Path Tracing techniques on the CPU

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
objective c
16641 projects - #2 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to tracer

Signed
Signed is a 3D modeling and construction language based on Lua and SDFs. Signed will be available for macOS and iOS and is heavily optimized for Metal.
Stars: ✭ 90 (+125%)
Mutual labels:  bsdf, path-tracing
DynAdjust
Least squares adjustment software
Stars: ✭ 43 (+7.5%)
Mutual labels:  tbb
PyCPU
Central Processing Unit Information Gathering Tool
Stars: ✭ 19 (-52.5%)
Mutual labels:  cpu
MC6809
Implementation of the MC6809 CPU in Python (Extracted from https://github.com/jedie/DragonPy project)
Stars: ✭ 24 (-40%)
Mutual labels:  cpu
cpu
cpu command in Go, inspired by the Plan 9 cpu command
Stars: ✭ 135 (+237.5%)
Mutual labels:  cpu
folding-at-home
A Folding@Home Docker container with GPU support
Stars: ✭ 38 (-5%)
Mutual labels:  cpu
R8051
8051 soft CPU core. 700-lines statements for 111 instructions . Fully synthesizable Verilog-2001 core.
Stars: ✭ 70 (+75%)
Mutual labels:  cpu
vrcpu
Code, documentation, schematics, notes for my Ben Eater inspired breadboard computer and emulator
Stars: ✭ 98 (+145%)
Mutual labels:  cpu
libelas-gpu
Implementation of LIBELAS in cuda.
Stars: ✭ 41 (+2.5%)
Mutual labels:  cpu
BioExplorer
The Blue Brain BioExplorer (BBBE) is a tool for scientists to extract and analyze scientific data from visualization and interactive exploration
Stars: ✭ 18 (-55%)
Mutual labels:  rendering-engine
perfmonger
No description or website provided.
Stars: ✭ 39 (-2.5%)
Mutual labels:  cpu
bisml
Implementation of the paper: Adaptive BRDF-Oriented Multiple Importance Sampling of Many Lights
Stars: ✭ 26 (-35%)
Mutual labels:  path-tracing
Fuxi
Fuxi (伏羲) is a 32-bit pipelined RISC-V processor written in Chisel3.
Stars: ✭ 68 (+70%)
Mutual labels:  cpu
spu-mark-ii
CPU and home computer project
Stars: ✭ 14 (-65%)
Mutual labels:  cpu
commonpp
Small library helping you with basic stuff like getting metrics out of your code, thread naming, etc.
Stars: ✭ 29 (-27.5%)
Mutual labels:  tbb
darknet
Darknet on OpenCL Convolutional Neural Networks on OpenCL on Intel & NVidia & AMD & Mali GPUs for macOS & GNU/Linux
Stars: ✭ 160 (+300%)
Mutual labels:  cpu
firejailed-tor-browser
HOWTO: Firejailed Tor Browser
Stars: ✭ 18 (-55%)
Mutual labels:  tbb
RunCat
🐈 🐈 🐈 Running Cat
Stars: ✭ 31 (-22.5%)
Mutual labels:  cpu
c2clat
A tool to measure CPU core to core latency
Stars: ✭ 37 (-7.5%)
Mutual labels:  cpu
ncnn-android-squeezenet
The squeezenet image classification android example
Stars: ✭ 100 (+150%)
Mutual labels:  cpu

Tracer

Tracer is a renderer using C++, Embree and USD to produce photorealistic images using Path Tracing techniques on the CPU.

Screenshots

  • USD Kitchen, using the UDPT, Diffuse, Position, Normal and Debug integrators:

Features

  • Rendering:

    • Progressive rendering
    • Render/export to PPM
    • Render/export to EXR
  • Camera:

    • Types:
      • FPS
      • TODO : DCC-style
    • Subpixel jitter antialiasing
    • Depth of Field (using aperture radius and focal distance)
  • Integrator:

    • UDPT (Unidirectional Path Tracing):
      • TODO : Environment Sampling
        • TODO : Color-based sky/background
        • TODO : Image-Based Lighting (IBL)
      • TODO : Light Sampling/Next Event Estimation (NEE)
      • BSDF Sampling
    • Diffuse (WIP)
    • TODO : Occlusion
    • Position
    • Normal
    • Debug
      • Render the equivalent of Pixar USD's primID on the geometry
  • Sampling:

    • RNG:
      • Uniform
      • Stratified (WIP)
    • Methods:
      • Hemisphere:
        • Uniform
        • Cosine Weighted
      • Sphere:
        • Uniform
  • Material:

    • TODO : Default
    • TODO : Diffuse
    • TODO : Empirical (for experiment purposes)
    • TODO : Disney (2012)
  • BSDF/Lobes:

    • Diffuse:
      • Lambert
      • TODO : Oren-Nayar
      • TODO : Burley
      • TODO : Sheen
      • TODO : Subsurface Scattering
    • Specular:
      • TODO : GGX
      • TODO : Beckmann
      • TODO : Clearcoat
      • TODO : Thin Film
  • Light sources:

    • Sky/background light
    • TODO : Geometry light
  • Geometry types:

    • Meshes
      • Triangle-based
      • Quad-based
      • TODO : Subdivided
    • TODO : Curves
    • TODO : Primitives (sphere, cube...)
    • Instances:
      • Per-geometry instancing ("Everything is an instance" philosophy)
      • TODO : Native, multiple instancing of geometry prototypes
  • Acceleration structure:

    • Intel Embree native BVH
    • TODO : Custom-based
  • Scene:

    • Format:
      • Pixar USD
        • As .usd/usda/usdc/usdz
    • Ingested types:
      • TODO : Materials
      • TODO : Cameras
      • Geometry:
        • Meshes
        • TODO : Curves
        • TODO : Primitives
        • TODO : Instances
      • TODO : Light sources
  • Utility:

    • GUI using ImGui
    • Pause/resume render
    • Front/backbuffer swapping
    • FPS counter

How to use

Tracer was written using Linux, VSCode as the IDE, CMake as the building tool, and a C++14 compiler in mind.

Download the source, build the project structure using CMake 3.x, open the project using your favorite IDE (tested on VSCode), build the project, and everything should be ready to use.

  • In Tracer :
    • Hold the right mouse button to use the camera
    • Use the "+" and "-" buttons on the keypad control the aperture radius
    • Hold LeftCtrl and "+" or "-" to control the focal distance

Dependencies (included, aside from Intel Embree/TBB, as well as Pixar USD and its own dependencies)

  • Window & Input System: GLFW (3.3)
  • OpenGL Functions Loader: GLAD
  • GUI System: dear imgui (1.53)
  • EXR Handling: tinyexr (0.9.5)
  • Image Loading: stb (2.34)
  • Scene Description: Pixar USD (19.05)
  • Ray Tracing Kernels: Intel Embree (3.5.2)
  • Multithreading: Intel TBB (2019U5)
  • Math Operations: Intel Embree SIMD Library (3.5.2)

Credits

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