All Projects → matt77hias → smallpt

matt77hias / smallpt

Licence: GPL-3.0 license
☀️ The Rosetta smallpt (small path tracing) project

Projects that are alternatives of or similar to smallpt

Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+245.59%)
Mutual labels:  rendering, pbr, path-tracing
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+3050%)
Mutual labels:  rendering, pbr, ray-tracing
GoldenSun
A path tracer based on hardware ray tracing
Stars: ✭ 20 (-70.59%)
Mutual labels:  rendering, ray-tracing, path-tracing
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-30.88%)
Mutual labels:  rendering, ray-tracing, path-tracing
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (+166.18%)
Mutual labels:  rendering, pbr
Vrt
🔅 Ray tracing library for Vulkan API (indev)
Stars: ✭ 111 (+63.24%)
Mutual labels:  rendering, ray-tracing
Lugdunum
[UNMAINTAINED] A modern cross-platform 3D engine built with Vulkan, glTF 2.0 and modern C++14.
Stars: ✭ 230 (+238.24%)
Mutual labels:  rendering, pbr
RadeonProRenderUSD
This plug-in allows GPU or CPU accelerated viewport rendering on all OpenCL 1.2 hardware for the open source USD and Hydra system. You can build this plug-in as a USDView plug-in or a Houdini plug-in.
Stars: ✭ 161 (+136.76%)
Mutual labels:  rendering, ray-tracing
Helixjs
A Javascript 3D game engine.
Stars: ✭ 84 (+23.53%)
Mutual labels:  rendering, pbr
LumillyRender
Monte Carlo path tracing implementation on Rust
Stars: ✭ 36 (-47.06%)
Mutual labels:  ray-tracing, path-tracing
RadeonProRenderMayaPlugin
This hardware-agnostic rendering plug-in for Maya uses accurate ray-tracing technology to produce images and animations of your scenes, and provides real-time interactive rendering and continuous adjustment of effects.
Stars: ✭ 32 (-52.94%)
Mutual labels:  rendering, ray-tracing
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (+1908.82%)
Mutual labels:  rendering, pbr
ray-tracer
A simple ray tracing engine
Stars: ✭ 27 (-60.29%)
Mutual labels:  ray-tracing, path-tracing
Vanilla-Raytraced
Official repository of Vanilla Raytraced resources pack.
Stars: ✭ 25 (-63.24%)
Mutual labels:  pbr, ray-tracing
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+210.29%)
Mutual labels:  rendering, pbr
Monte carlo ray tracer
A program with an implemented Monte Carlo Ray Tracer algorithm for global illumination of a virtual 3D scene.
Stars: ✭ 90 (+32.35%)
Mutual labels:  rendering, ray-tracing
Photon-v2
A program that takes photographs of a virtual world.
Stars: ✭ 75 (+10.29%)
Mutual labels:  rendering, ray-tracing
cadise
A developing physically-based hobby renderer written in C++.
Stars: ✭ 30 (-55.88%)
Mutual labels:  rendering, ray-tracing
Ospray
An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
Stars: ✭ 734 (+979.41%)
Mutual labels:  rendering, ray-tracing
Pbr proj
Shader of PBR for Unity
Stars: ✭ 68 (+0%)
Mutual labels:  rendering, pbr

License

smallpt

About

The Rosetta smallpt project: the same path tracer (modifications of Kevin Baeson's 99 line C++ path tracer) written in multiple languages.

Note: I deliberately chose for the same software design for all programming languages out of clarity and performance reasons (this can conflict with the nature of declarative/functional programming languages).

Features

Current languages:

Performance comparison

In order to give a very rough performance comparison, the wall clock time is measured of a single run to generate an image of resolution 1024x768 using 64spp. All single process - single threads experiments output the current progression to standard output. All multi process - multi threaded experiments do not output the current progression to standard output (this can change in the future).

System:

  • OS: Windows 8.1 Pro 64 Bit
  • CPU: Intel i7-4770K @ 3,50 GHz (TB @ 3,9 GHz) with 8GB DDR3 @ 1600 MHz
  • GPU: NVIDIA GeForce GTX 970 with 4 GB GDDR5

Note: the random number generators used, differ between the languages and their implementations. It makes no sense to use the same random number generator in all implementations (i.e. C++ vs CUDA) and would introduce a huge burden to explicitly pass the state in languages such as Prolog.

Single process - Single threaded

Programming Language Compiler/Interpreter Wall clock (64 spp)
C MSVC++ 15.5.9 00h 01m 51.88s
C++ MSVC++ 15.5.9 00h 01m 21.32s
C# CLR 4.6.1055.0 00h 01m 30.56s
CoffeeScript CC 1.11.1/Chrome 00h 04m 19.63s
Erlang ERTS/BEAM 8.0 00h 59m 45.30s
Haskell GHC 8.0.1 00h 10m 35.55s
Haskell GHCi 8.0.1 02h 14m 54.00s
Java JVM 1.8 00h 01m 47.89s
JavaScript Chrome 00h 06m 27.63s
J# CLR 14.00 00h 06m 14.62s
Prolog SWI-Prolog 7.2.3 /
Python 2.7 CPython (Anaconda 4.1.12) 08h 24m 40.88s
Python 2.7 CPython (Canopy 1.5.2) 08h 35m 03.19s
Python 2.7 IronPython 2.7.6 06h 32m 11.48s
Python 2.7 PyPy 5.6.0 00h 20m 47.33s
Python 3.5 CPython (Anaconda 4.1.12) 09h 37m 05.13s
Python 2.7 + NumPy CPython (Anaconda 4.1.12) 09h 58m 25.18s
Python 2.7 + NumPy CPython (Canopy 1.5.2) 10h 43m 04.10s
Python 3.5 + NumPy CPython (Anaconda 4.1.12) 10h 20m 46.47s
Racket DrRacket 6.6 00h 49m 39.43s
TypeScript TSC 2.0.10/Chrome 00h 08m 10.58s

Multi process - Multi threaded

Programming Language Compiler/Interpreter Wall clock (64 spp)
C + OpenMP MSVC++ 15.5.9 00h 00m 22.09s
C++ MSVC++ 15.5.9 00h 00m 16.71s
C++ + OpenMP MSVC++ 15.5.9 00h 00m 25.97s
C# CLR 4.6.1055.0 00h 00m 24.16s
CUDA MSVC++ 15.5.9/NVCC 9.2 00h 00m 07.89s

Panorma (old version)

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