Skip to content

Version History

Marcus Hudritsch edited this page Jul 3, 2024 · 40 revisions

Version 4.200, 03-Jul-2024:

  • New App Framework: Complete renovation of the top-level application framework for more efficient and elegant multi-platform compilation.
    • See the App Framework page in the online documentation for an introduction.
    • The asset loading and scene assembly are now done in parallel threads and allow the Emscripten version for the web to run in the main thread as it should. See our online example in your web browser.
    • The online documentation has been moved to https://cpvrlab.github.io/SLProject4/.

Version 4.103, 10-Feb-2024:

  • Old bug fix: Thanks to the great effort of Marino von Wattenwyl we could fix an old hard bug within the PBR material shading on Android.

Version 4.100, 12-Dec-2023:

  • Particle Systems everywhere: Thanks to the great effort of Luc Girod, we can now render particle systems (SLParticleSystem) also on platforms that do not support geometry shaders (e.g. iOS and Emscripten with WebGL). See our online example in your web browser.
  • GPU Skinned Meshes: Marino von Wattenwyl integrated the skinning transform for character animations into the automatically generated GPU shaders.
  • New WebGPU Demo: Also thanks to Marino von Wattenwyl we have now an example application with the new and promising rendering API called WebGPU, a new standard developed by the World Wide Web Consortium (W3C). It is an abstraction layer over modern graphics APIs like Vulkan, D3D12, and Metal and thus uses modern concepts such as queues, command buffers, or pipelines. WebGPU is supposed to be a 'safe' API and is generally simpler to use than Vulkan. Both graphics and compute functionality are available. Please read the extensive documentation within the source file webgpu_demo.cpp. The demo runs on all desktop platforms.

Version 4.000, 02-Jun-2023:

  • New Repository: We are happy to present SLProject in a new lightweight repository called SLProject4. Binaries such as images, videos, and 3D models are no longer included in this repository. From now on, these will be downloaded via cmake. The history of the old repository is still available at the old URL.
  • New: Emscripten Build: We can now build SLProject with the emscripten toolchain for WebAssembly and run it in browsers that support this platform. At the moment these are Google Chrome, Firefox, and MS Edge. See our online examples in your web browser.
  • New: MediaPipe Integration: For desktop OS as well as on Android we integrated Google's MediaPipe framework: AppDemoHandTracking
  • New Online Documentation with live examples integrated.
  • New CI/CD Pipeline with GitHub workflows for the following pipeline:
    [![Build Windows]Build Windows Build macOS-x86 Build macOS-arm64 Build linux-x86 Build Emscripten Build & Deploy Docs

Version 3.300, 06-Jul-2022:

  • New: Particle Systems: The SLParticleSystem class is a mesh in which the vertices are drawn as points. An OpenGL transform feedback buffer is used to update the particle positions on the GPU and a geometry shader is used to create two triangles per particle vertex and orient them as a billboard to the viewer. Geometry shaders are only supported under OpenGL >= 4.0 and OpenGL ES >= 3.2. This is the case on most desktop systems and on Android SDK > 24 but not on iOS which has only OpenGL ES 3.0. See the app-demo under File > Load Test Scene > Particle Systems for various demo scenes: AppDemoGLTF

Version 3.200, 11-Jan-2022:

  • New: Automatic Shader Generation for PBR Materials with Cook Torrance lighting equation. PBR stands for Physically Based Rendering and is the state-of-the-art material definition introduced by Unreal Engine 4. Materials have now either the Blinn Phong or the Cook Torrance light model and both get the GLSL shader code generated automatically depending on the material parameters, the no. of lights, and with or without shadow mapping. See SLGLProgramGenerated for more details.
  • New: glTF File format support with PBR materials (see the app-demo under File > Load Test Scene > glTF Sample Models): AppDemoGLTF
  • New: Cascaded Shadow Mapping with automatic shader generation (see the app-demo under File > Load Test Scene > Benchmarks > Level of Detail): AppDemoCSM1 Colored shadow cascades: AppDemoCSM2
  • New: Level of Detail Node that allows multiple child nodes of different levels. See SLNodeLOD for more detail and the new benchmark scene in app-demo under File > Load Test Scene > Benchmarks.
  • New: Minimal OpenCV demo for YOLO V3 object detection.

Version 3.120, 29-Jun-2021:

  • New: Image-based lighting test scene (see the app-demo under File > Load Test Scene > Shader > Image Based Lighting. Increasing roughness with environment reflection from left to right. Increasing metalness from bottom to top: ImageBasedLighing

Version 3.110, 19-Mar-2021:

  • Native builds for Apple Silicon ARM-based processors: All projects and dependent libraries are now built for the new Mac M1 processor in ARM64 architecture.

Version 3.100, 01-Feb-2021:

  • Realtime shadows with shadow mapping for all light types: Directional, rectangular, spot, and point lights: ShadowMappingLightTypes
  • New node transform edit mode with gizmos for translation, rotation, and scale correction. See menu Edit. TransformGizmos_TRS
  • New cmake project for iOS builds. All platforms use now the cmake build system.
  • Performance improvement with rendering by the material. See new Benchmark scenes.
  • New baked ambient occlusion with secondary UV coordinates in SLMesh. See the next image to the left without ambient occlusion and to the right with ambient occlusion: Suzanne_withAndWithout_AO
  • New automatic shader generation for Blinn-Phong materials with texture maps, normal maps, and ambient occlusion (AO) maps with or without shadow mapping. See Suzanne Lighting scenes and class SLGLProgramGenerated for all combinations of texture-, normal-, AO- and shadow-mapping.
  • New utilities: ZipUtils, FtpUtils and HttpUtils for file download.
  • Video background shader for augmented reality apps.
  • New drawing flags: WITH_EDGES and ONLY_EDGES
  • New Vulkan test project
  • New geoTiff file support used in SLDeviceLocation.
  • New OpenCV library version 4.5 (prebuilt for all platforms)
  • New assimp library version 5.0 (prebuilt for all platforms)
  • New glfw library version 5.0 (prebuilt for all platforms)
  • New ImGui library version 1.76 with dock widgets

Version 2.400, 23-OCT-2019 (master branch):

  • New library WAI that stands for Where Am I. It uses the ORB-SLAM2 for Simultaneous Localisation and Mapping. All dependencies are included and prebuilt for Windows, macOS, Linux, and Android. New app-Demo-WAI for 3D point cloud creation with ORB-SLAM.
  • New Video Resolutions: You can set now the video resolution on mobile devices over the menu Video Sensor > Resolutions.
  • New Viewport Setting: A scene view can now define a specific viewport that allows specific aspect ratios. You can test this in the app-demo over the menu Preferences > Viewport Aspect.
  • Improved Camera Calibration: If available, we use now the device information from Android about the focal length to improve the guessed calibration.
  • New Library structure into subparts:
    • All classes with SL (SceneLibrary) contain the scenegraph functionality.
    • All classes with CV (ComputerVision) contain image processing using OpenCV.
    • A Utils class contains utility functions.
  • New File Down- and Upload in the Utils library.
  • New Parallel Job Feature that allows non-OpenGL tasks to run in parallel while a progress bar is visualized.
  • New Gamma Correction for OpenGL, Ray Tracing, and Path Tracing.
  • Upgraded OpenCV Version 4.1.1 for all platforms except Linux.
  • Added Bresenham line drawing example in the apps/examples folder.

Version 2.30, 1-NOV-2018:

  • New build configuration in CMake: All project definitions for Visual Studio, Qt Creator, XCode, and Android Studio got replaced by IDE-independent CMakeLists files. The wiki pages for the various IDEs and platforms were adapted.
  • No more large submodules for prebuilt libraries: The prebuilt libraries such as OpenCV get downloaded and installed automatically by the new cmake scripts.
  • New consistent code format with Clang-Format: See the Code-Style wiki page for detailed information on how to integrate clang-format into various IDEs.
  • New vertex selection mode: Besides selecting a single object by double-clicking it, you can now also select multiple vertices by rectangle selection with CTRL-LMB.
  • New minimal OpenCV apps:
    Many apps are inspired by the OpenCV Tutorials at LearnOpenCV.com from Satja Malick:

Version 2.20, 1-FEB-2018:

  • New Skybox background: A sceneview can now have a skybox with a cube map as background that is automatically moved with the active camera. Try the Scene under Shader > Skybox. Skybox Shader

  • New video textures from file: Videos from a file can be played on textures on any object or background on all platforms incl. iOS and Android.

  • New XCode Project for macOS and iOS:: A new XCode Workspace file with all projects has been added. Besides the demo app for iOS and MacOS with GLFW, you also have all exercise and OpenCV projects in this workspace. On MacOS this is the fastest build and development environment.

  • Cleaner separation of the application from library code:: All scene and UI definition codes have been moved into the demo application. For a new application, you just can copy the demo project of your platform and remove the demo stuff that you don't need.

  • New mobile device rotation and location events:: For iOS and Android applications, the rotation from the IMU and the location from GPS are now read and converted to the same interpretation and passed to the framework. See SLDeviceRotation and SLDeviceLocation for more information. See also the new video scene named Sensor AR and the new info dialog with the sensor information.

  • New camera animation:: New camera animation has been added for Trackball interaction and for an IMU rotated or IMU rotated and GPS located camera when used on a mobile device. See the Animations menu under the Camera menu.

  • Update OpenCV library to version 3.4: The library with all contribution modules comes prebuilt for all platforms except Linux.

Version 2.10, 2-SEP-2017:

  • New class for feature tracking:
    SLTrackedFeatures implemented by the students Timo Tschanz and Pascal Zingg offers video feature tracking with any feature detectors and descriptors that OpenCV includes. In addition, an enhanced ORB implementation developed by Raul Mur is provided and used as the default detector/descriptor. This enhancement is especially suitable for the outdoor AR project Christoffel Tower developed at BFH where a good feature needs to be spread over the entire video frame. See the demos in Load Test Scene > Using Video > Track Features. This will be the base for markerless augmented reality apps in the future. Thanks a lot to the students! New Feature Tracking
  • New User Interface built with the very easy to use ImGui Library. ImGui renders the UI with OpenGL and offers a very simple interface for many classic UI widgets such as windows, buttons, sliders, tree views, and much more. The entire UI is built once per frame from scratch in SLDemoGui. No more slots & signal pain! The new UI works on all OS including iOS and Android without changing a single line of code. New UI with ImGUI
  • New Volume Ray Casting Demo Scene: New volume rendering shader in GLSL that implements ray cast volume rendering. See the demo scenes in Load Test Scene > Volume Rendering > Head MRI ray casting and Head MRI ray casting lighted. Lighted Volume Ray Casting
  • New Cook-Torrance Physically Based Shading: Added new GLSL shaders PerPixCookTorrance and PerPixCookTorranceTex for Cook-Torrance physically based lighting calculation. See the demo scene Load Test Scene > Shader > Per Pixel Cook Torrance Lighting. This will be the base for modern real-time physically based lighting that will replace the old Phong model. Based on the PBR Tutorial at learnopengl.com. New Cook-Torrance Lighting
  • Change: No more Qt project maintenance: All Qt projects (app-Viewer-Qt, app-Demo-Qt) were moved to the _old folder and are not anymore maintained. The use of Qt with SLProject is of course still possible. The maintenance of the UI is far more complicated compared to the ease of use of ImGUI. The SLProject project build files are provided for:
    • Qt Creator (SLProject.pro) on any desktop OS
    • Visual Studio 2015 or newer (SLProject.sln)
    • XCode 8.33 or newer (folder app-Demo-iOS)
    • Android Studio (folder app-Demo-Android)

Version 2.00, 15-FEB-2017:

  • New: Include of the OpenCV library for integrated image processing. OpenCV 3.2 for Windows, MacOS, iOS, and Android are included in a submodule. The framework can now process the images from attached live video cameras. This works via OpenCV on desktop OS as well as on iOS and Android. The live video image is constantly fed into any OpenGL texture or background texture. Used as background texture you can create augmented reality applications. Examples can be found in the demo application under Load Scene > Using Video > Track Chessboard or Track Aruco. See Introduction Page for more information.
  • New: Platform independent Android build environment with Android Studio.
  • New: Updated BFH-SLProject-Android-App-Store-App.
  • New: SLLightDirect for a direct light source with or without an arrow representation.
  • New: All lights can be attached to any other node including the camera in the scenegraph.

Version 1.30, 10-JAN-2016:

  • New: OpenGL forward compatibility: Shader remains unchanged and is still backward compatible with GLSL 110. For forwarding compatible contexts 3.0 and higher shaders are parsed and upgraded. See SLGLShader in the documentation.
  • New: The class SLGLVertexArray replaces the class SLGLBuffer and simplifies the OpenGL rendering massively.
  • New: Implemented Travis and AppVeyor Build Tests
  • New: Overall test of all scenes with startup parameter testScene=0 with the app-demo-GLFW and app-demo-Qt.

Version 1.20, 05-AUG-2015:

  • New: SLBackground class for gradient or textured OpenGL background
  • New: Massive reduction to 20% of the previous memory consumption for the uniform grids that accelerate ray tracing.
  • New: SLDisk and SLLens 3D object based on the revolution object SLRevolver.
  • New: Animation Skeleton visualization
  • New: Inclusion of the OpenCV library for live camera stream into a texture or the background image. See app-Demo-GLFW in the source file glfwMain.cpp.

Version 1.11, 31-MAR-2015:

  • New: Volume rendering test application
  • New: 3D-texture mapping

Version 1.10, 7-FEB-2015:

  • New: Skeleton animation (see the new set of example applications)
  • New: Re-designed node animations
  • New: LeapMotion device interface

Version 1.00, 1-OCT-2014: This major release is no longer backward compatible:

  • The SLProject library is now separated as a library from the applications.
  • Simplified SLNode class: There are no more SLGroup and SLShape classes needed.
  • New transform methods relative to local, parent, and world space.
  • Improved and simplified update traversal.
  • The use of the ASSIMP library allows now to load many different 3D file formats.
  • New viewer application with extended Qt user interface and multiple sceneview displays.
  • New Oculus Rift library included. New Binding compatible with DK1 & DK2
  • New distorted stereo projection for Oculus Rift rendering.
  • New GitHub repository.

Version 0.92, 4-APR-2014: New BFH Logo, Bug fixes, some improvements by student works (thanks).

Version 0.91, 19-FEB-2013: Google Code Repository, Minimal OpenGL ES projects in C++, C#, Java & WebGL added.

Version 0.90, 23-JAN-2012: Initial release.