GeeXLab 0.28 Released for Windows, Linux and macOS




GeeXLab 0.28.0 on Windows 10 64-bit



 

1 – Release Notes

1.1 – NVIDIA FleX

GeeXLab 0.28.0.0 is the first version of the new 0.28.x.x branch. The main new feature of this new branch is the support of NVIDIA FleX engine. FleX is something I wanted to test since a long time, and I decided to jump the step and dive into FleX programming last week.

FleX is essentially a particle engine. FleX has been added in NVIDIA’s gamedev tools when they decided to remove particles / fluids simulation support from PhysX. PhysX 3 engine supports rigid bodies, clothes and particles simulation in CPU and GPU. PhysX 4, the new main iteration of PhysX, only supports rigid bodies simulation in CPU and GPU. NVIDIA took out clothes and fluids from PhysX and put them in FleX.

What is FleX? Here is a short description from the FleX manual:

Flex is a particle-based simulation library that is broadly based on Position-Based Dynamics, and the Unified Particle Physics for Real-Time Applications SIGGRAPH paper.

The core idea of Flex is that everything is a system of particles connected by constraints. The benefit of having a unified representation is that it allows efficient modeling of many different materials, and allows interaction between elements of different types, for example, two-way coupling between rigid bodies and fluids.

Flex’s strength lies in enabling interesting secondary effects that enhance the visual experience. It is not designed to build gameplay affecting physics, for example it lacks functionality such as trigger events, contact callbacks, ray-casting, serialization, etc. Although it is possible to build these capabilities on top of the core solver, they don’t come in the box. For this reason it is recommended to use Flex in conjunction with a traditional rigid-body physics engine, such as PhysX.

 
FleX programming is accessible in GeeXLab via the gh_flex library in Lua and Python.

I prepared a demo that shows the use of FleX functions (next article). GeeXLab 0.28.0.0 does not support all FleX functionalities, they will be added later. But the present ones are enough to give you an overview of FleX capabilities.

Last thing, the FleX plugin is currently available in the Windows version of GeeXLab only. The FleX plugin for Linux is ready but due to some compilation issues (I didn’t manage to properly link the plugin with CUDA, it’s a real mess on my Linux box), I decided to not add the FleX plugin in the Linux version of GeeXLab. But as soon as I fix the compilation issue, FleX will be also available on Linux.


GeeXLab 0.28.0 - NVIDIA FleX demo on Windows 10 64-bit

 

1.2 – Vertex buffers and Generative Coding

GeeXLab 0.28.0.0 comes with an important bug fix related to vertex buffers used by the gh_vb lib. I simply forget to enable vertex buffer array in OpenGL 3.2+ core profile. On NVIDIA / {Windows | Linux}, I didn’t notice the issue because of the compatibility context… It’s cool because my generative art framework (I will release it shortly) now works like a charm on macOS!


GeeXLab 0.28.0 - Generative art on macOS

GeeXLab 0.28.0 - Generative art on macOS

 
Generative art is really cool, more on this topic as soon as possible my friends!

 

2 – Changelog

Full changelog from beginning of time is available HERE.

Version 0.28.0.0 - 2019.05.04
! (2019.05.04) updated gh_imgui lib with missing color elements for 
  tabs (see IMGUI_TAB_COLOR, etc. in the scripting API doc).
* (2019.05.03) fixed minor bugs in the stopping phase of some plugins 
  (Bullet3 and FleX).
+ (2019.05.03) added screenshot functionality at the end of a demo
  (command line).
+ (2019.05.02) [Windows / Linux] added new library: gh_flex to deal 
  with NVIDIA FleX plugin.
+ (2019.05.02) [Windows / Linux] added NVIDIA FleX plugin for particles 
  and fluids simulation.
* (2019.05.02) fixed a bug in the OpenGL renderer: VAOs were not enabled
  with VBOs in the gh_vb library: drawing with gh_vb lib was not 
  possible with an OpenGL 3 core profile.




Leave a Comment

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