All Projects → yumcyaWiz → photon_mapping

yumcyaWiz / photon_mapping

Licence: MIT license
minimal but extensible header only implementation of photon mapping in C++

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to photon mapping

CLUSEK-RT
Vulkan based C++ ray-tracing game engine.
Stars: ✭ 24 (-63.08%)
Mutual labels:  rendering, computer-graphics, raytracing
C-Raytracer
A CPU raytracer from scratch in C
Stars: ✭ 49 (-24.62%)
Mutual labels:  rendering, computer-graphics, raytracing
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+3095.38%)
Mutual labels:  rendering, computer-graphics, raytracing
Photon-v2
A program that takes photographs of a virtual world.
Stars: ✭ 75 (+15.38%)
Mutual labels:  rendering, computer-graphics, raytracing
Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+261.54%)
Mutual labels:  rendering, computer-graphics, raytracing
Tinyraytracer
A brief computer graphics / rendering course
Stars: ✭ 3,971 (+6009.23%)
Mutual labels:  rendering, computer-graphics, raytracing
odak
🔬 Scientific computing library for optics 🔭, computer graphics 💻 and visual perception 👀
Stars: ✭ 99 (+52.31%)
Mutual labels:  computer-graphics, raytracing
Yocto Gl
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics
Stars: ✭ 1,391 (+2040%)
Mutual labels:  rendering, computer-graphics
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+18016.92%)
Mutual labels:  rendering, computer-graphics
Gears Vk
Powerful low-level C++20 rendering framework for Vulkan 1.2, including Real-Time Ray Tracing (RTX) support, built atop Auto-Vk.
Stars: ✭ 71 (+9.23%)
Mutual labels:  rendering, raytracing
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+3195.38%)
Mutual labels:  rendering, raytracing
Ssrt
Real-time indirect diffuse illuminaton using screen-space information for Unity.
Stars: ✭ 176 (+170.77%)
Mutual labels:  rendering, raytracing
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+2027.69%)
Mutual labels:  rendering, computer-graphics
Monte carlo ray tracer
A program with an implemented Monte Carlo Ray Tracer algorithm for global illumination of a virtual 3D scene.
Stars: ✭ 90 (+38.46%)
Mutual labels:  rendering, raytracing
Herebedragons
A basic 3D scene implemented with various engines, frameworks or APIs.
Stars: ✭ 1,616 (+2386.15%)
Mutual labels:  rendering, computer-graphics
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (+20%)
Mutual labels:  rendering, raytracing
Usd Resources
A curated list of USD projects and resources
Stars: ✭ 250 (+284.62%)
Mutual labels:  rendering, computer-graphics
Python Raytracer
A basic Ray Tracer that exploits numpy arrays and functions to work fast.
Stars: ✭ 204 (+213.85%)
Mutual labels:  rendering, raytracing
CompenNet
[CVPR'19] End-to-end Projector Photometric Compensation
Stars: ✭ 35 (-46.15%)
Mutual labels:  rendering, computer-graphics
Raytracer
a simple RayTracer based on the Monte Carlo Path Tracing
Stars: ✭ 14 (-78.46%)
Mutual labels:  rendering, raytracing

photon_mapping

minimal but extensible header only implementation of photon mapping in C++.

Features

  • Direct illumination with explicit light sampling
  • Indirect illumination with final gathering
  • Caustics photon map
  • Reference path tracing integrator
  • Load obj model

Requirements

Build

CMake option Description
BUILD_TESTS build tests
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

Run

place obj model under build and run

./examples/main

Structure

Name Description
include/camera.h ray generation from camera
include/core.h basic data types
include/image.h image
include/integrator.h implementation of photon mapping, path tracing(for reference)
include/light.h light
include/material.h implementation of BRDF, BTDFs
include/photon_map.h implementation of photon map with kdtree
include/primitive.h primitive
include/sampler.h random number generation, sampling utilities
include/scene.h ray-scene intersection, model loading
include/triangle.h point sampling on a triangle

Gallery

Cornell box without final gathering

Parameter Value
number of photons 1000000
number of nearest neighbors 100
number of samples 100
final gathering false

Cornell box with final gathering

Parameter Value
number of photons 1000000
number of nearest neighbors 100
number of samples 100
final gathering true

Cornell box with mirror spheres

Parameter Value
number of photons 1000000
number of nearest neighbors 100
number of photons for caustics photon map 1000000
number of samples 100

Cornell box with water

Parameter Value
number of photons 100000
number of nearest neighbors 100
number of photons for caustics photon map 10000000
number of samples 256

This model is available under models/

Externals

References

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