Skip to content

Latest commit

 

History

History
221 lines (183 loc) · 6.74 KB

FEATURES.md

File metadata and controls

221 lines (183 loc) · 6.74 KB

Features

Ray tracing engine

  • Support for textures with different materials
  • Support acceleration structures
  • Support OpenGL Mathematics for math library
  • Support Eigen for math library
  • Support Google Test for unit tests
  • Support Boost for assertions
  • Support stb for textures
  • Support Google Benchmark
  • Support Microsoft Guidelines Support Library
  • Split Material from Primitive in order to save memory
  • Support GPU ray tracing
  • Split naive acceleration structure from Scene
  • Support acceleration structures compatible with the lights

Shapes

  • Support triangle
    • Support normals per vertex
    • Support texture coordinates
    • Support textures
    • Support ray packet intersections
  • Support plane
  • Support sphere
  • Support square / rectangle

Acceleration structures

  • Support Axis Aligned Bounding Box
  • Support Naive
  • Support Regular Grid
    • Parallelize build
  • Support Bounding Volume Hierarchy
    • Parallelize build
    • Support ray packet intersections
  • Support KD-Tree
  • Make all acceleration structures as templates

Shaders

  • Support DepthMap
  • Support only material color
  • Support simple shader without shadows
  • Support Whitted
  • Support Path Tracing
    • Fix algorithm
  • Support Bidirectional Path Tracing
  • Support Metropolis light transport
  • Support Wireframe shader
  • Fix refractions
  • Improve shaders performance

Samplers

  • Support constant
  • Support stratified
  • Support Halton Sequence
  • Support Mersenne Twister
  • Support PCG

Cameras

  • Support orthographic Camera
  • Support perspective Camera
  • Support fisheye Camera

Loaders

  • Support Wavefront OBJ
    • Optimize code
  • Support Autodesk FBX
  • Support CAD STL
  • Support PLY

Lights

  • Support point light
  • Support triangle area light
  • Support sphere area light
  • Support plane area light

Ray tracing JNI layer

  • Refactor DrawView translation unit
  • Improve DrawView code readability
  • Fix race conditions

Android Interface

  • Compatible with Android 4.1 (API 16)
  • Support preview (rasterization of 1 frame)
  • Support any OpenGL framerate
  • Support reset button
  • Support export rendered image
  • Fix memory leak in Java UI
  • Fix load of obj files in Android 10
  • Improve Java UI code to more Object Oriented
  • Change Android icon
  • Remove usage of deprecated methods
  • Add Android instrumented unit tests
  • Make Android instrumented tests run on debug and release
  • Make all Android instrumented tests pass without flakiness

Linux Interface

  • Support Linux's UI with Qt 4
  • Support Linux's UI with Qt 5
  • Support options menu in GUI
  • Support about menu in GUI
  • Support for selection of OBJ files in GUI
  • Support selection of all ray tracer options in GUI

Building process

  • Compatible with C++17 compilers
  • Compatible with GNU C++ Compiler (g++)
  • Compatible with Clang++
  • Compatible with MinGW (g++)
  • Compatible with Microsoft Visual C++ (MSVC)
  • Support compiler warnings for clang / g++ in CMake
  • Support compiler warnings for Java
  • Support warnings for Gradle
  • Support rules with optimizations for proguard
  • Support C++ compilation with optimization flags
  • Support C++ exceptions
  • Support CMake jobs to improve building time
  • Support CMake to clone the third party repositories
  • Support CMake to pull new versions of third party repositories
  • Split the Android application in 3 layers:
    • MobileRT (ray tracing engine)
    • Rendering components (cameras, lights, loaders, samplers, shaders)
    • UI (Android through JNI, Linux through Qt)

System

  • Support unit tests (code coverage)
  • Support to export rendered image to a file
  • Support to store rendered image to a database
  • Support to load image from a database
  • Support to continue rendering an image loaded from a database
  • Remove MobileRT duplicated code
  • Remove Components duplicated code
  • Remove Android JNI duplicated code
  • Remove Android UI duplicated code
  • Remove Qt duplicated code
  • Remove Java tests duplicated code
  • Remove C++ tests duplicated code
  • Add message reasons to all assertions
  • Load lights and cameras from files
  • Prepare more scene models
  • Support Android interface
  • Support Linux interface
  • Support MacOS X interface
  • Support Windows interface
  • Support web browser interface
  • Support Clang format

Docker

  • Make a docker image with MobileRT
    • Create image based on ubuntu
    • Create image based on alpine
    • Create image based on centos
    • Create image based on archlinux
    • Create image based on gentoo
  • Add an example model to the docker image
  • Make the ray tracer distribute the load across different engines
  • Use docker compose to launch multiple containers and distribute the load

Documentation

  • Support doxygen documentation in the MobileRT
  • Support doxygen documentation in the Components
  • Support doxygen documentation in the JNI layer
  • Support doxygen documentation in the Qt interface
  • Support javadoc in the Android UI
  • Add comments for readability in the native building files
  • Add comments for readability in the gradle building files
  • Add comments for readability in the scripts

Broadcast bitmap to multiple desktop devices

  • Support Android interface to send updated bitmap regularly to Kafka topic via REST API
  • Develop small pc application that subscribes to that topic via KAFKA client
  • Support application to show bitmap in every update

Broadcast bitmap to multiple Android devices

  • Support Linux interface to send updated bitmap regularly to Kafka topic via KAFKA client
  • Support Android interface to subscribe to that that topic via REST API
  • Support Android interface to show bitmap in every update

Tests

  • C++ unit tests
  • Android instrumentation tests
  • C++ end to end tests (selenium)
  • Android performance tests
  • C++ performance tests
  • Support CI/CD pipeline
    • Support linter
    • Support Android
    • Support Linux
    • Support MacOS
    • Support Windows
    • Support Docker with multiple Linux distributions

Infrastructure

  • Create Makefile to boot local K8s cluster
  • Create Helm Chart for MobileRT
  • Create MobileRT web server
    • Use Rust
    • Use Tokio framework
  • Deploy MobileRT into cloud server
    • Deploy into AWS EC2 instance
  • Deploy MobileRT into Kubernetes environment
    • Deploy into AWS EKS cluster