Last updated
Last updated
A portable Ray Tracing (RT) engine for multiple devices.
Already available interfaces for:
Android (through Java + JNI and C)
Linux, MacOS, Windows (through Qt 4 or 5)
Compatible with C++ compilers:
GNU C++ Compiler (g++)
Clang++
MinGW (g++)
Microsoft Visual C++ (MSVC)
Intel® oneAPI DPC++/C++ Compiler (ICX)
This C++ Ray Tracer is compatible with Android and Linux.
or (still WIP)
And a docker container should start and render the conference room model like the image above :)
For the most curious, this is the command used to build the docker image:
Then, to finally compile this code for the native machine, just execute the following command:
This ray tracer comes with a script with many functionalities useful to run static code analyzers and to benchmark the ray tracer itself. To execute the ray tracer just use the profile.sh
shell script available in the scripts
directory. The following command should start the ray tracer when executed in the root directory:
Or you can compile yourself for Android as well. First, install all the necessary dependencies:
Then, to finally compile this code for Android, execute the following command:
It's necessary the following SDKs in order to compile this project for Android:
For native Linux, MacOS and Windows support, the install_dependencies.sh
script should download and install the necessary dependencies, by just calling:
Note that the script already supports multiple Linux distributions like:
Debian (using apt)
Red Hat (using yum)
Arch (using pacman)
Alpine (using apk)
Gentoo (using emerge)
It also supports installing dependencies in the following Operating Systems:
MacOS (using Homebrew)
Windows (using Chocolatey)
Note that these scripts are tested in Github actions pipeline only, so it might assume that some tools are already installed in the system. If the OS you use is not supported, or it's missing the installation of some tool, you can always open an issue or even a pull request.
For Linux, if is installed, it is possible to try this ray tracer with ease by using the following commands to get the docker image and execute the container:
The docker image is in docker hub: .
It is also possible to clone this repository and compile this ray tracer by yourself. To compile it, it is essential to install cmake and have a C++11 compiler. It is also needed the library and the control system to get the code from the repository.
To try this ray tracer for Android just download the file available in the repository.
To get some OBJ models, just download some from here: . Then, it will just be needed to add some lights in the scene geometry, by using some modeling application like . One thing to have it in account is to make sure the light material has the light emission component (Ke) with some positive values in the ".mtl" file. Finally, add a camera file with the extension ".cam" that should contain a definition of a perspective camera, like for example:
C++ for the assertions
C++ library to help in the vector math
C++ library to load Wavefront OBJ model files
C++ framework for Linux interface
C++ framework for unit tests
C library to load the textures
Java to reduce complexity
Java framework to reduce complexity
Java framework for unit tests
Java library for unit tests assertions
Java library for instrumented tests
Java framework for mocking in unit tests
Java framework to improve mocking in unit tests since it allows mocking final
classes, native
and static
methods.
Table: -> actively tested -> tested -> not tested
which should also bring the in order to compile the native code.
Click to check the features list that are supported. Click to check the code coverage and code duplication commands. Click to build and serve the documentation locally. Click for some basic Blender tips. Click to check the Doxygen codebase documentation.
Android
MacOS
Windows
Ubuntu
CentOS
Alpine
Arch Linux
Gentoo
4.0.3 (API 15)
4.4W (API 20)
5.0 (API 21)
10 (API 29)
14 (API 34)
10.15
11
12
13
14
Server 2016
Server 2019
Server 2022
10
11
16.04
18.04
20.04
22.04
24.04
5
6
7
8
stream
3.16
3.17
3.18
3.19
3.20
base-devel
stage3:x86