GeeXLab 0.40 Released (Vulkan Ray Tracing, Apple M1 arm64)

GeeXLab: scriptable proto-engine for Windows, Linux, Raspberry Pi and macOS



1 – Release Notes

This new version of GeeXLab is available for Windows 64-bit, Windows 32-bit, Linux 64-bit (GLIBC 2.23), Raspberry Pi OS (GLIBC 2.28) and macOS.

GeeXLab 0.40.0 comes with the following main changes:
Vulkan ray tracing
– support of macOS Big Sur and Apple Silicon M1
– Dear ImGui 1.80 with new table API


Vulkan Ray Tracing

GeeXLab 0.40 comes with the support of hardware accelerated ray tracing in Vulkan. This is done using the new official ray tracing extensions: VK_KHR_acceleration_structure and VK_KHR_ray_tracing_pipeline (see here). I added a new set of functions in the gh_vk library to deal with ray tracing: gh_vk.raytracing_xxxxxx(). This API lets you play with BLAS, TLAS, SBT and other ray tracing shaders.

The ray tracing support works correctly on NVIDIA GeForce RTX GPUs. On AMD Radeon RX 6000 GPUs, most of the demos work fine but some crash for unknown reasons: either a bug in my code or a bug in Radeon driver. It’s really difficult to debug ray tracing on Radeon RX 6000 GPUs because each crash takes hours: the system is frozen for several seconds, then it’s followed by a black fullscreen and finally you see AMD’s driver crash report dialog box… And the validation layers of the Vulkan SDK? They are quiet, no error.

I tested the Vulkan ray tracing on Windows only but it should work on Linux too.

The Hello World of ray tracing: the mighty RGB triangle! This demo is available in the Vulkan demopack:
GeeXLab - Vulkan ray tracing demo - Triangle

A more complex scene: a ground, donuts, texturing and (hard) shadows!
This demo is available in the Vulkan demopack:
GeeXLab - Vulkan ray tracing demo

Hehe! Later my friends. This demo works fine on NVIDIA RTX but crashes on AMD Radeon. I must fix the bug before.
GeeXLab - Vulkan ray tracing demo


Apple M1

I purchased a Mac mini with the new Apple M1 processor few weeks ago. I must say that Apple has done a good job with the software stack (Xcode 12.2, rosetta, macOS Big Sur) because I had no particular problem to compile GeeXlab for both Intel x86 and M1 arm64 architectures. To be honest, for the M1 version of GeeXLab, I only compiled the GeeXLab core libraries and the Python 3 plugin. I didn’t want to spend hours to recompile all other libraries and plugins. I will do it in the upcoming weeks, months, years… The Intel x86 version of GeeXLab comes with all plugins.

So for macOS, GeeXLab is available in two flavors: Intel x86 and M1 arm64. The nice thing is that the Intel x86 version works on all macOS versions including Big Sur and on all hardware (Intel x86 of course and Apple M1 via rosetta). The M1 arm64 version works natively on Apple M1 + Big Sur only.

GeeXLab on macOS Big Sur + Apple M1


Dear ImGui 1.80 + new table API

GeeXLab 0.40.0 has been updated with the latest version of Dear ImGui that has been released few days ago.
Dear ImGui 1.80 is available with a new set of functions to build tables. This set replaces the old columns functions that are fortunately still available.

The new set of functions (see gh_imgui.table_xxxxxx()) allows to build multi-colums / multi-rows tables like this one:

GeeXLab on macOS Big Sur + Apple M1 - Dear ImGui table demo

This demo is available in the OpenGL 2.1 demopack:


2 – Changelog

This changelog is intended for all versions of GeeXLab.

Full changelog from beginning of time is available HERE.

Version 0.40.0 - 2021.01.22
+ (2021.01.22) added set of functions (gh_imgui.table_xxxxxx()) to deal with the 
  new table API of Dear ImGui 1.80.
! (2021.01.22) updated ImGui with final version 1.80.
- (2021.01.22) removed Vulkan1 plugin. Now the active Vulkan plugin 
  is the second version, Vulkan2.
- (2021.01.22) removed Python 2 plugin. Only Python 3 plugin is developed.
+ (2021.01.21) [masOS] added support of Apple M1 with native compilation for ARM64 architecture.
+ (2021.01.21) [masOS] added support of macOS 11.1 Big Sur.
+ (2021.01.20) GPU monitoring: added support of NVIDIA GeForce GT 1010
+ (2021.01.20) GPU monitoring: added support of NVIDIA GeForce RTX 3080 Laptop, RTX 3070 Laptop and 
  RTX 3060 Laptop.
! (2021.01.19) updated Assimp plugin with latest github snapshot.
+ (2021.01.14) added support of Vulkan ray tracing. A bunch of new functions has been added in the gh_vk library
  in Lua and Python to deal with ray tracing. See gh_vk.raytracing_xxxxx() functions.
* (2020.12.30) fixed a bug in gh_vk.descriptorset_update_resource_rt_color(): the sampler was invalid.
  descriptorset_update_resource_rt_color() is important for the resizing a a render target.
+ (2020.12.30) added create_perspective_vk() and update_perspective_vk() to gh_camera for Vulkan demos.
+ (2020.12.28)  added set_vertex_alloc_params_force_face_u32() to gh_mesh.
+ (2020.12.26) added vk_add_spirv_module_file() to gk_vk.

Version 0.39.2 - 2020.12.26
* (2020.12.16) fixed the material management in Vulkan when models with sub-meshes are rendered.
+ (2020.12.16) added vk_descriptorset_bind() to gh_material.
+ (2020.12.14) updated gh_gpu_buffer.set_matrix4x4() with new types: camera_inv_projection and camera_inv_view.
+ (2020.12.14) added uniform_matrix() to gh_gpu_program lib.
* (2020.12.14) fixed a bug in the texture coordinates read by the built-in glTF loader.

2 thoughts on “GeeXLab 0.40 Released (Vulkan Ray Tracing, Apple M1 arm64)”

  1. P2

    Possible to have the macOS version built for 10.14 (Mojave) users at a minimum, rather than 10.15?

    Fingers crossed, with thanks in any event.

Leave a Comment

Your email address will not be published. Required fields are marked *