Skip to content

SLProject Features

Marcus Hudritsch edited this page Jul 1, 2024 · 11 revisions
  • Platform independent real-time 3D rendering with OpenGL on Windows, MacOS (Intel & Arm64), Linux, Android (SDK 24+), Apple iOS8+ and Emscripten with WebAssembly and WebGL. See the Online Examples in your web browser.
  • Platform & IDE independent Code in C++. Demo projects and exercises are provided as IDE-independent CMake projects. There are wiki pages for how to build it for Windows Visual Studio or Visual Studio Code, Qt Creator, CLion, Apple XCode, and Android Studio.
  • All dependencies included: All dependent libraries for all platforms are included in this repository or the cmake build process. This can be either in code form or in prebuilt form. The major dependencies that are included for all platforms (either x86_64 or arm64 architectures) are:
    • assimp for model loading
    • GLFW for desktop OS OpenGL abstraction
    • ImGui for the user interface
    • OpenCV (incl. contributions) for image processing
    • OpenSSL for base networking.
    • ORB-SLAM2 for Simultaneous Localization and Mapping
    • Mediapipe for object and landmark detection
  • All features are demonstrated in the app-demo app (also online)
  • Hierarchical Scene Graph with grouping and referencing.
    • View Frustum Culling for optimal rendering of large scenes
    • Sorted per Material Rendering for optimal few OpenGL state changes.
    • Sorted Alpha Blending for transparencies.
    • Level of Detail group nodes.
  • 3D File Import for many formats (e.g. OBJ, FBX, 3DS, DXF, BLEND)
  • Realtime Shadows for all light types (directional, rectangular, point, and spotlight) with shadow mapping.
  • Automatic GLSL Shader Generation for per-pixel Blinn-Phong or Cook Torrance (PBR) lighting with diffuse texture mapping, normal map bump mapping, and ambient occlusion mapping. All these material properties can be combined with shadow mapping.
  • Particle Systems with many configurable parameters.
  • Full glTF PBR Material Support
  • Node and skeleton animation
  • Camera Animations: Turntable, trackball, and first-person camera animation. Automatic camera animations for use with the IMU rotation and GPS location sensors of mobile devices.
  • Stereo Rendering with anaglyphs, side-by-side or distorted side-by-side projections for virtual reality applications.
  • Simple & powerful GUI: Extensive and easy-to-be-implemented user interface using ImGui. See the following YouTube video on the advantages of ImGui.
  • Space Partitioning with axis-aligned bounding volume hierarchy combined with uniform grids
  • Object Picking with fast ray casting
  • Ray Tracing as an alternative renderer. It is highly optimized and runs 100% parallel on all available cores and mobile devices.
  • Path Tracing as an alternative renderer for fully global illumination simulation.
  • Nvidia Optix Support for real-time ray-tracing and path-tracing with denoising (on Windows only).
  • Device Location (GPS) and Orientation (IMU) from Android and iOS are provided uniformly and can be used for augmented or virtual reality applications.
  • Image Processing with OpenCV.
    • Live Video Capture on all platforms.
    • Camera Calibration
    • Chessboard, AruCo-Marker, 2D-Feature and Face tracking for augmented reality applications.
    • SLAM - Simultaneous Localization and Mapping using ORB-SLAM-2.
  • Platform independent Utility classes for string manipulation, file handling, data compression and networking via FTP and HTTPS.
  • Minimal Educational Apps separate from SLProject in the subfolder apps/exercises:
    • Minimal OpenGL Apps for demonstrating a minimal core profile application in C++, C#, Java and WebGL.
    • Minimal OpenCV Apps for several minimal image processing tasks.
  • Doxygen generated Documentation: Last but not least a Doxygen generated online documentation enhanced with some introductory pages that should eas the introduction to the framework.