All Projects → aras-p → Toypathtracer

aras-p / Toypathtracer

Licence: unlicense
Toy path tracer for my own learning purposes (CPU/GPU, C++/C#, Win/Mac/Wasm, DX11/Metal, also Unity)

Programming Languages

cpp
1120 projects
csharp
926 projects

Projects that are alternatives of or similar to Toypathtracer

Alloy
Make usage of Metal API a pleasure
Stars: ✭ 178 (-76.36%)
Mutual labels:  metal, gpu
Gpu Spline Deformation
Baking spline deformation to a texture then applying it to a mesh via a shader.
Stars: ✭ 52 (-93.09%)
Mutual labels:  unity, gpu
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (-69.46%)
Mutual labels:  metal, gpu
Shaderview
A library for simple shader programming
Stars: ✭ 87 (-88.45%)
Mutual labels:  metal, gpu
Ultralight
Next-generation HTML renderer for apps and games
Stars: ✭ 3,585 (+376.1%)
Mutual labels:  metal, gpu
Yudisplacementtransition
A GPU accelerated transition library makes use of displacement maps to create distortion effects.
Stars: ✭ 121 (-83.93%)
Mutual labels:  metal, gpu
Basic pathtracer
A basic GPU pathtracer in unity
Stars: ✭ 39 (-94.82%)
Mutual labels:  unity, gpu
Unity3d Cg Programming
Various shaders.
Stars: ✭ 800 (+6.24%)
Mutual labels:  unity, gpu
Ngx
Ngx - Neural network based visual generator and mixer
Stars: ✭ 277 (-63.21%)
Mutual labels:  unity, gpu
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-93.76%)
Mutual labels:  metal, gpu
Videngine
3D graphics for iOS using Metal and Swift
Stars: ✭ 86 (-88.58%)
Mutual labels:  metal, gpu
Stablefluids
A straightforward GPU implementation of Jos Stam's "Stable Fluids" on Unity.
Stars: ✭ 430 (-42.9%)
Mutual labels:  unity, gpu
Metalpetal
A GPU accelerated image and video processing framework built on Metal.
Stars: ✭ 907 (+20.45%)
Mutual labels:  metal, gpu
Remotery
Single C file, Realtime CPU/GPU Profiler with Remote Web Viewer
Stars: ✭ 1,908 (+153.39%)
Mutual labels:  metal, gpu
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+895.22%)
Mutual labels:  metal, gpu
Herebedragons
A basic 3D scene implemented with various engines, frameworks or APIs.
Stars: ✭ 1,616 (+114.61%)
Mutual labels:  unity, metal
Gpu Physics Unity
Through this configuration, no per voxel data is transferred between the GPU and the CPU at runtime.
Stars: ✭ 342 (-54.58%)
Mutual labels:  unity, gpu
Gfx
[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
Stars: ✭ 5,045 (+569.99%)
Mutual labels:  metal, gpu
Softmaskforugui
UI Soft Mask is a smooth masking component for Unity UI (uGUI) elements.
Stars: ✭ 688 (-8.63%)
Mutual labels:  unity
Moments
A quick GIF replay recorder for Unity
Stars: ✭ 713 (-5.31%)
Mutual labels:  unity

Toy Path Tracer Build Status

Toy path tracer for my own learning purposes, using various approaches/techs. Somewhat based on Peter Shirley's Ray Tracing in One Weekend minibook (highly recommended!), and on Kevin Beason's smallpt.

Screenshot

I decided to write blog posts about things I discover as I do this, currently:

Right now: can only do spheres, no bounding volume hierachy of any sorts, a lot of stuff hardcoded.

Implementations I'm playing with (again, everything is in toy/learning/WIP state; likely suboptimal) are below. These are all on a scene with ~50 spheres and two light sources, measured in Mray/s.

  • CPU. Testing on "PC" AMD ThreadRipper 1950X 3.4GHz (SMT disabled, 16c/16t) and "Mac" mid-2018 MacBookPro i9 2.9GHz (6c/12t):
    • C++ w/ some SSE SIMD: PC 187, Mac 74, iPhone X (A11) 12.9, iPhone SE (A9) 8.5
    • C++: PC 100, Mac 35.7
    • C# (Unity with Burst compiler w/ some 4-wide SIMD): PC 133, Mac 60. Note that this is an early version of Burst.
    • C# (Unity with Burst compiler): PC 82, Mac 36. Note that this is an early version of Burst.
    • C# (.NET Core): PC 53, Mac 23.6
    • C# (Mono with optimized settings): Mac 22.0
    • C# (Mono defaults): Mac 6.1
    • WebAssembly (single threaded, no SIMD): 4.5-5.5 Mray/s on PCs, 2.0-4.0 Mray/s on mobiles.
  • GPU. Simplistic ports to compute shader:
    • PC D3D11. GeForce GTX 1080 Ti: 1854
    • Mac Metal. AMD Radeon Pro 560X: 246
    • iOS Metal. A11 GPU (iPhone X): 46.6, A9 GPU (iPhone SE): 19.8

A lot of stuff in the implementation is totally suboptimal or using the tech in a "wrong" way. I know it's just a simple toy, ok :)

Building

  • C++ projects:
    • Windows (Visual Studio 2017) in Cpp/Windows/TestCpu.sln. DX11 Win32 app that displays result as a fullscreen CPU-updated or GPU-rendered texture.
    • Mac/iOS (Xcode 9) in Cpp/Apple/Test.xcodeproj. Metal app that displays result as a fullscreen CPU-updated or GPU-rendered texture. Should work on both Mac (Test Mac target) and iOS (Test iOS target).
    • WebAssembly in Cpp/Emscripten/build.sh. CPU, single threaded, no SIMD.
  • C# project in Cs/TestCs.sln. A command line app that renders some frames and dumps out final TGA screenshot at the end.
  • Unity project in Unity. I used Unity 2018.2.13.
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].