All Projects → kbladin → Monte_carlo_ray_tracer

kbladin / Monte_carlo_ray_tracer

Licence: mit
A program with an implemented Monte Carlo Ray Tracer algorithm for global illumination of a virtual 3D scene.

Programming Languages

cplusplus
227 projects

Projects that are alternatives of or similar to Monte carlo ray tracer

Photon-v2
A program that takes photographs of a virtual world.
Stars: ✭ 75 (-16.67%)
Mutual labels:  rendering, raytracing, rendering-engine, ray-tracing
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+2207.78%)
Mutual labels:  rendering, raytracing, rendering-engine
Tinyraytracer
A brief computer graphics / rendering course
Stars: ✭ 3,971 (+4312.22%)
Mutual labels:  rendering, raytracing, rendering-engine
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+2280%)
Mutual labels:  rendering, raytracing, ray-tracing
C-Raytracer
A CPU raytracer from scratch in C
Stars: ✭ 49 (-45.56%)
Mutual labels:  rendering, raytracing, rendering-engine
C Ray
C-Ray is a small, simple path tracer written in C
Stars: ✭ 323 (+258.89%)
Mutual labels:  raytracing, ray-tracing
Raytracing.github.io
Main Web Site (Online Books)
Stars: ✭ 4,485 (+4883.33%)
Mutual labels:  raytracing, ray-tracing
Awesome Ray Tracing
Curated list of ray tracing resources
Stars: ✭ 414 (+360%)
Mutual labels:  raytracing, ray-tracing
Lighthouse2
Lighthouse 2 framework for real-time ray tracing
Stars: ✭ 542 (+502.22%)
Mutual labels:  rendering, rendering-engine
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-47.78%)
Mutual labels:  rendering, ray-tracing
Sort
Simple Open-source Ray Tracer
Stars: ✭ 485 (+438.89%)
Mutual labels:  raytracing, ray-tracing
Voxel Cone Tracing
A real-time global illumination implementation using voxel cone tracing. Implemented in C++ and GLSL.
Stars: ✭ 555 (+516.67%)
Mutual labels:  raytracing, ray-tracing
Minpt
A path tracer in 300 lines of C++
Stars: ✭ 299 (+232.22%)
Mutual labels:  rendering, ray-tracing
Edxray
A physically based renderer which implements many state of the art techniques in light transport simulation, material modeling, sampling and reconstruction.
Stars: ✭ 270 (+200%)
Mutual labels:  rendering, raytracing
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (+192.22%)
Mutual labels:  raytracing, ray-tracing
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+448.89%)
Mutual labels:  rendering, rendering-engine
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-13.33%)
Mutual labels:  rendering, raytracing
Ospray
An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
Stars: ✭ 734 (+715.56%)
Mutual labels:  rendering, ray-tracing
Raytracer
a simple RayTracer based on the Monte Carlo Path Tracing
Stars: ✭ 14 (-84.44%)
Mutual labels:  rendering, raytracing
Intrinsic
Intrinsic is a Vulkan based cross-platform game and rendering engine. The project is currently in an early stage of development.
Stars: ✭ 984 (+993.33%)
Mutual labels:  rendering, rendering-engine

Monte Carlo Ray Tracer

This project is a program for rendering virtual 3D scenes with the global illumination algorithm Monte Carlo ray tracing.

The algorithm recursively trace light rays from the camera out in the scene and bounces them around on / through the surface of objects.

The project was made for the course Advanded Global Illumination and Rendering, TNCG15, at Linköpings University.

Features

  • Some predefined object classes (spheres, planes).
  • Possibility to load triangle meshes in to the scene.
    • Octree data structure used to partition triangles for faster rendering.
  • Material properties for 3D objects
    • Diffuse color
    • Specular color
    • Reflectance [0, 1]
    • Specular reflectance [0 (diffuse), 1 (mirror)]
    • Transmissivity [0, 1]
    • Refraction_index [1 (air), 2.4 (diamond)]
    • Roughness [0, inf) Used for evaluation of the Oren-Nayar BRDF
  • Monte Carlo ray tracing algorithm, simulates many light phenomena:
    • Color bleeding
    • Soft shadows
    • Reflection
      • Currently not considering the Fresnel effect.
    • Refraction
      • Uses Schlick's approximation to Fresnels equations for reflected part.
  • Photon mapping for caustic effects.
    • Using a kd tree from the c++ library "kdtree++" by Martin F. Krafft.
  • Simple paralellization using openMP.
  • Using the XML parser pugixml to be able to load XML files describing the scenes.

Future Work

  • Implement a depth of field technique.
  • Other optimizations (reduce cash misses, simplify code, precomputing, better paralellization technique).
  • Make different wavelengths refract a different amount and increase number of wavelengths.
    • This way it is possible to achieve rainbow effects from refraction.
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].