Git Product home page Git Product logo

fromasmtodisasm / toypathtracer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aras-p/toypathtracer

0.0 1.0 0.0 397 KB

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

Home Page: https://aras-p.info/blog/2018/03/28/Daily-Pathtracer-Part-0-Intro/

License: The Unlicense

Objective-C 2.30% Objective-C++ 5.85% Metal 6.18% C++ 42.55% C 9.92% C# 25.11% HLSL 5.63% Shell 0.08% HTML 2.39%

toypathtracer's Introduction

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.

toypathtracer's People

Contributors

aras-p avatar rygorous avatar egorbo avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.