All Projects → YurongYou → Monte-Carlo-Path-Tracer

YurongYou / Monte-Carlo-Path-Tracer

Licence: GPL-3.0 license
A realistic Monte Carlo Path Tracer project for CS230 (Virtual Reality and Interactive 3D Graphics Display), ACM Class, SJTU

Programming Languages

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

Projects that are alternatives of or similar to Monte-Carlo-Path-Tracer

Tinyraytracer
A brief computer graphics / rendering course
Stars: ✭ 3,971 (+20800%)
Mutual labels:  computer-graphics, raytracer
C-Raytracer
A CPU raytracer from scratch in C
Stars: ✭ 49 (+157.89%)
Mutual labels:  computer-graphics, raytracer
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+10831.58%)
Mutual labels:  computer-graphics, raytracer
ArtOfIllusion
Art of Illusion modeling and rendering suite - core application and tools
Stars: ✭ 58 (+205.26%)
Mutual labels:  raytracer, 3d-renderer
Photon-v2
A program that takes photographs of a virtual world.
Stars: ✭ 75 (+294.74%)
Mutual labels:  computer-graphics, raytracer
PointCloudRegistrationTool
Automatically registers (aligns) and visualizes point clouds, or processes a whole bunch at once
Stars: ✭ 82 (+331.58%)
Mutual labels:  computer-graphics
computer-vision-notebooks
👁️ An authorial set of fundamental Python recipes on Computer Vision and Digital Image Processing.
Stars: ✭ 89 (+368.42%)
Mutual labels:  computer-graphics
Voxel Cone Tracing
Converting vertex meshes to voxel data and visualizing using VCT
Stars: ✭ 74 (+289.47%)
Mutual labels:  raytracer
FastMassSpring
Interactive cloth simulator using the method described in the SIGGRAPH paper "Fast Simulation of Mass-Spring Systems" by Liu, T., Bargteil, A. W., Obrien, J. F., & Kavan, L.
Stars: ✭ 170 (+794.74%)
Mutual labels:  computer-graphics
platonicgan
Escaping Plato’s Cave: 3D Shape from Adversarial Rendering [ICCV 2019]
Stars: ✭ 40 (+110.53%)
Mutual labels:  computer-graphics
mcrt
Monte Carlo Raytracer from Scratch in C++11/14
Stars: ✭ 22 (+15.79%)
Mutual labels:  raytracer
chainer-pix2pix
Chainer implementation for Image-to-Image Translation Using Conditional Adversarial Networks
Stars: ✭ 40 (+110.53%)
Mutual labels:  computer-graphics
Ray-Tracer
Simple Ray Tracer
Stars: ✭ 18 (-5.26%)
Mutual labels:  computer-graphics
HOT
Hierarchical Optimization Time Integration (HOT) for efficient implicit timestepping of the material point method (MPM)
Stars: ✭ 83 (+336.84%)
Mutual labels:  computer-graphics
Volume-Unity-Plugin
A Unity3D plugin for rendering Volume assets
Stars: ✭ 68 (+257.89%)
Mutual labels:  computer-graphics
rust-tracer
Simple Ray tracer written in Rust
Stars: ✭ 14 (-26.32%)
Mutual labels:  raytracer
odak
🔬 Scientific computing library for optics 🔭, computer graphics 💻 and visual perception 👀
Stars: ✭ 99 (+421.05%)
Mutual labels:  computer-graphics
SymmetricRL
Repo for "On Learning Symmetric Locomotion"
Stars: ✭ 30 (+57.89%)
Mutual labels:  computer-graphics
wasm-raytracer
a performance comparison of a simple raytracer in JavaScript, asm.js, WebAssembly, and GLSL
Stars: ✭ 158 (+731.58%)
Mutual labels:  raytracer
Exploring-SceneKit
👾 An app created to explorer the features of SceneKit iOS framework. Assets load (Model I/O), interaction, animation, classical rendering (Blinn-Phong), physically based rendering.
Stars: ✭ 52 (+173.68%)
Mutual labels:  computer-graphics

Monte Carlo Path Tracer

A realistic Monte Carlo Path Tracer project for CS230 (Virtual Reality and Interactive 3D Graphics Display).

Features

  • Supported effects:
    • color bleeding
    • transparent object
    • reflective object
    • soft shadow
    • caustic
  • Global illumination with Monte Carlo Path Tracing
  • Multi-thread rendering
  • Basic .obj model rendering
  • Anti-aliasing (by rendering subpixel)
  • Simple texture mapping on planes
  • Simple bounding box speeding up

System and Software Requirements

  • Ubuntu v14.04+
  • CMake v3.2.2+
  • libpng

Project Structure

models/ 		# 3D models in .obj files for rendering
results/ 		# rendering results
vendor/ 		# third-party library (cameron314/concurrentqueue for multi-thread rendering)
src/			# source code
	/object		# dealing with 3D objects, material, etc.
	/utility 	# basic utility objects / functions / constants, including ray class, vector class and some global constants
 	Engine.cpp	# core rendering engine
 	Engine.h	# header file for core rendering engine
 	scene.cpp	# 3D scene builder
 	scene.h		# header file for 3D scene builder
 	main.cpp	# entrance 	

Usages

Build

mkdir bin && cd bin
cmake .. && make

Run

cd bin
./RayTracing	[-MCPT <true|false|mix>] 
			[-test_case <twist_mesh|teapot_mesh|mix_twist_mesh|load_obj>] 
			[-size <height> <width>] 
			[-view <position of viewpoint> <position of target>]
			[-obj 	 <path of .obj file>]
			[-meshtype <diff> <ks> <refl>]
			[-sample_num <number of sample per subpixel (default 1024)>]
  • To render with MCPT, please toggle -MCPT true.

  • The frame is set to be 5 units in front of the view point and not tilted.

  • The default size of the rendered image is 640x480, and if specified in cli options, height / width should be 3 / 4.

  • To render a .obj 3D model, please run with

      -test_case load_obj -obj <path of .obj file>
    

Demos

  1. Box with balls

    • Global Illumination with Monte Carlo Path Tracing

    • with color bleeding, transparent object, reflective object, soft shadow and caustic effects

    • all diffuse surfaces are Lambertian surfaces

    • size 1280x960, 4x4 subpixel, 512 sample per subpixel

    • render with Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz (20 cores) in 5731.2s

    • run with

        ./RayTracing -MCPT true -view 0 0 -5 0 0 0
      
  2. Box with a twist, a ball and texture

    • Global Illumination with Monte Carlo Path Tracing

    • with color bleeding, transparent object, soft shadow and caustic effects

    • .obj 3D model (the twist)

    • all diffuse surfaces are Lambertian surfaces

    • texture mapping (ground and the back wall)

    • render with Intel Xeon E5-2666 v3 (Haswell) (36 cores) on AWS EC2 c4.8xlarge in 1206.01s

    • run with

        ./RayTracing -MCPT true -test_case mix_twist_mesh -view 2 4 -12 2 4 0
      
  3. Box with a reflective teapot and texture

    • Global Illumination with Monte Carlo Path Tracing

    • with color bleeding, soft shadow, reflective object effects

    • .obj 3D model (the teapot) (more meshes), with phong shading

    • all diffuse surfaces are Lambertian surfaces

    • texture mapping (the ground and the back wall)

    • size 1280x960, 2x2 subpixel, 1024 sample per subpixel

    • render with Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz (56 cores) in 13788.39s

    • run with

        ./RayTracing -MCPT true -test_case load_obj -obj ../models/teapot2.obj -meshtype 0.0 0.0 1.0
      

Further Possible Improvements

  • MCPT with direct ray casting
  • KD-tree speedup
  • texture mapping on .obj 3D models

Reference

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