A new version of GeeXLab is ready. This version comes with two main features: PhysX 3.4 and Tinker Board support.
1 – Release Highlights
1.1 – NVIDIA PhysX 3.4.1 with GPU Rigid Body
I finally took the time to update the PhysX plugin. It was stuck to old version 3.3 and GPU PhysX wasn’t really there. Now it’s past and the very latest PhysX 3.4.1 engine has replaced PhysX 3.3 in GeeXLab.
The nice feature of PhysX 3.4.x is the support of GRB or GPU Rigid Body. So far, GPU PhysX was only available with fluids and clothes simulations. Rigid body collisions were only software, which was a shame because the original PhysX Ageia board was able to hardware accelerate rigid body collisions more than a decade ago. Now, rigid body collisions are GPU accelerated with NVIDIA GPUs as well. And it’s pretty cool.
GPU Rigid Body is available on Windows and Linux. On macOS, only CPU PhysX is available. To check the GPU PhysX support, start and stop GeeXLab. Then open the log file (_geexlab_log.txt) and search for the following lines:
(08:36:07:310) [PhysX3] PhysX version detected (Windows): 9170524 (08:36:07:310) [PhysX3] PhysX foundation v1.0.0 (08:36:07:720) [PhysX3] GPU PhysX init ok (valid CUDA context manager). (08:36:07:720) [PhysX3] GPU PhysX - CUDA device name: GeForce GT 1030 (08:36:07:720) [PhysX3] GPU PhysX - CUDA device multiprocessors: 3 @ 1468MHz (08:36:07:720) [PhysX3] GPU PhysX - CUDA device memory size: 2048MB (08:36:07:736) [PhysX3] GPU PhysX - Dedicated PhysX GPU: YES (08:36:07:736) [PhysX3] GPU PhysX - SM10(G80):YES (08:36:07:736) [PhysX3] GPU PhysX - SM12(GT200):YES (08:36:07:736) [PhysX3] GPU PhysX - SM13(GT260):YES (08:36:07:736) [PhysX3] GPU PhysX - SM20(GF100):YES (08:36:07:736) [PhysX3] GPU PhysX - SM30(GK100):YES (08:36:07:736) [PhysX3] GPU PhysX - SM35(GK110):YES (08:36:07:736) [PhysX3] GPU PhysX - SM50(GM100):YES (08:36:07:736) [PhysX3] GPU PhysX - SM52(GM200):YES (08:36:07:736) [PhysX3] GPU PhysX - SM60(GP100):YES (08:36:07:738) [PhysX3] PhysX SDK v3.4.1
A demo that shows GPU rigid body is available in the full code sample pack: gl-32/nvidia-physx-3/GRB/
1.2 – ASUS Tinker Board Support
The 0.20.x of GeeXLab comes with the support of a new platform: the ASUS Tinker Board. The Tinker Board is a very cool SBC (Single Board Computer) and directly targets the popular Raspberry Pi 3. I will post a review about the Tinker Board on Geeks3D as soon as possible.
The Tinker Board supports OpenGL 3.0 (desktop) and OpenGL ES 2.0 / 3.0. That’s why I provide two versions of GeeXLab for the Tinker Board: one with OpenGL desktop, and the second one with OpenGL ES. The nice thing is that both versions bring accelerated X11 windows. On Raspberry Pi, there is no X11 support for OpenGL ES…
More about Tinker Board 3D support in an upcoming article.
GeeXLab for Tinker OS is shipped with some demos in the demos/ subfolder. Just open a terminal in GeeXLab folder and run demo.sh or demo-shadertoys.sh… Last thing: I developed and tested GeeXLab in the latest Tinker OS 2.0.4.
I took the opportunity given by this new platform, to clean and update the OpenGL ES code that is common to Tinker Board and Raspberry Pi.
2 – Downloads
The latest version of GeeXLab as well as code sample packs can be downloaded from THIS PAGE.
For bug-reports or feedbacks, a thread on Geeks3D forums is available HERE.
3 – Changelog
Full changelog from beginning of time is available HERE.
Version 0.20.0.1 - 2018.01.09 ----------------------------- ! [WINDOWS] recompiled with no enhanced intruction set. GeeXLab 0.20.0.0 has been compiled on Windows with /arch:SSE2 intruction set that is no supported on Windows 7 boxes! Version 0.20.0.0 - 2018.01.04 ----------------------------- ! [WINDOWS] updated the PhysX plugin with latest PhysX 3.4.1 SDK. GPU rigid body (GRB) is now supported. + added support of ASUS Tinker Board (OpenGL desktop and OpenGL ES). ![RPi OpenGL ES 2] added reading of the current framebuffer to a texture for RGB LED matrix demos. ![RPi] fixed RGB LED matrix panel support. Now it works fine with Raspbian Stretch and Adafruit HAT. + added rgbmatrix_init_v2() to gh_rpi lib (lua / python). + added set_vertex_alloc_params_separate_vertex_arrays() to gh_mesh lib (lua / python). + added instancing_set_position_v2(), instancing_set_orientation_v2() and instancing_set_num_instances_to_render() to gh_mesh lib (lua / python). + added set_gpu_mem_size_factor(), set_solver_iteration_counts() to gh_physx lib. + added new functions (gizmo_xxxxxx()) to the gh_imgui lib to support ImGuizmo. * fixed a bug in the rendering of fonts in 3D with scaling (lib gh_font). + [WINDOWS] added cpu_usage_get_physical_core_count() to gh_utils (lua / python). ! updated scripting log file: now only scene initialization messages are sent to the _scene_init_log.txt file. The _scripting_log.txt file has been replaced by _scene_init_log.txt. + added is_opengl_es() to gh_renderer (lua / python). + added get_hw_platform() and is_sbc() to gh_utils (lua / python).