GLSL Hacker Stopped, GeeXLab Released with Direct3D 12 Support

The GLSL Hacker project is now officially stopped. To make a long story short, the support of Direct3D 12 as well as the upcoming support of Vulkan (when it will be available) are the main reasons that have led to a change of name.

Yes, GeeXLab is back and it’s simply the new name of GLSL Hacker. I detailled the transition and the choice of the GeeXLab name in this article: Say Goodbye to GLSL Hacker and Welcome Back GeeXLab.

GeeXLab is 100% compatible with GLSL Hacker and all prods and demos coded for GLSL Hacker will work directly in GeeXLab without changes.

DirectX 12 logo

Since the last announcement of GLSL Hacker HERE, many changes and bugfixes have been brought to GeeXLab. Here is an overview of the main new things:

  • support of Direct3D 12 (pipeline state objects, command lists, hlsl, …). I will post an article on how to use D3D12 in GeeXLab shortly.
  • Lua updated to version 5.3.1 (a new version 5.3.2 is out and I will update GeeXLab next time). More info about Lua 5.3 branch can be found HERE.
  • basic support of reflections (reflection matrix, plane equation).
  • touchscreen support added to the Raspberry Pi version of GeeXLab: it’s pretty cool to control a GeeXLab demo with the finger on the official Raspberry Pi 7-inch touchscreen display!
  • The opacity of the 3D window is now properly managed in the Raspberry Pi version of GeeXLab.

Transparent windows on the Raspberry Pi
Transparent windows on the Raspberry Pi

GeeXLab’s website has been refreshed and a new blog is available for articles and new focused on GeeXLab.

You can download the latest GeeXLab or the latest code sample pack from THIS PAGE.

Here is the full version history since GLSL Hacker

Version - 2015.12.07
! [RPi] added a new attribut named rpi_alpha_flag to the window XML 
  node. This attribute allows a better management of the alpha channel 
  of the 3d window.
+ [RPi] added set_position(), get_position() and get_screen_size()
  to gh_window lib (lua/ python). These functions are currently
  only available on Raspberry Pi.
! [OSX] updated plugin_gxc_leapmotion_x64.dylib for Mac OS X with the
  LeapMotion SDK 2.3.1.
! [OSX] updated the mouse Y coordinate in GeeXLab Mac OS X version. 
  The Y coord is offseted by the height of the window. Now the function
  gh_input.mouse_getpos() returns a correct value for all OSes.
* fixed a bug in the ftgl plugin that appeared OpenGL 2.1 drivers.
  With theses drivers, the font texture was not uploaded in GPU mem.
+ added 32-bit version of GeeXLab for Windows that targets also
  Windows XP platforms.
+ added command line option /logfile_suffix to specify a suffix
  for the log file name.
  Ex: /logfile_suffix=_test01. The suffix allows to manage several
  instances of GeeXLab, each instance having its own logfile.
* fixed a bug in polyline/wideline module. The bug has been
  introduced with recent changes in the low level 3d lib.
* fixed some bugs in the plugin_gxc_ftgl_x64 plugin. These bugs have
  been introduced with recent changes in the low level 3d lib.
* [WINDOWS] fixed few typos (GLSL Hacker was still present in some live
  coding boxes).
! [WINDOWS] updated plugin_gxc_ffmpeg_x32.dll for Windows with 
  FFmpeg 2.8.3. All other versions of the plugin (win64, linux, osx, 
  rpi) still use FFmpeg 2.6.2.
! [WINDOWS] updated plugin_gxc_leapmotion_x64.dll for Windows with the
  LeapMotion SDK 2.3.1.

Version - 2015.11.18
+ added touchscreen support in the Raspberry Pi version.
* Python plugin: fixed a bug in vertex_pool.vertex_set_position()
  and vertex_pool.vertex_set_color().

Version - 2015.11.12
* Python plugin: fixed a bug in vertex_pool.vb_set_vertex_position(),
  vertex_pool.vb_set_vertex_color(), vertex_pool.vb_set_vertex_normal()
  and vertex_pool.vb_set_vertex_tangent().
* fixed a bug in the initialization of the prefix of Lua and Python
  libraries (gh_ or gxl_).

Version - 2015.11.08
* first beta version of GeeXLab.
! Improved the Direct3D 12 renderer plugin.

Version - 2015.08.30
* fixed a bug in single thread mode: GLSL Hacker was blocked in live
  coding initialization.
+ added get_os_info() to gh_utils (lua).
! Lua engine has been updated to Lua 5.3.1.
+ added d3d_create_from_file() and d3d_create_from_memory()
  to gh_gpu_program (lua).
+ added create_from_file_v3() to gh_gpu_program (lua).
+ added pipeline_state_create(), pipeline_state_kill() and
  pipeline_state_bind() to gh_renderer (lua).
+ Added first version of the Direct3D 12 renderer plugin.

Version - 2015.08.18
+ added set_reflection_matrix_v1() and set_reflection_matrix_v2()
  to gh_camera lib (lua / python).
+ added get_plane_equation() to gh_object lib (lua / python).
+ added rasterizer_set_ccw() and ccw() to gh_renderer (lua / python).
+ added apply_cmaa_intel() to gh_render_target lib (lua / python).
+ added set_max_compiler_threads() to gh_gpu_program lib (lua / python).
+ added heman_generate_color_gradient(), heman_generate_island_map()
  and heman_generate_planet_map() to gh_texture (lua only).
+ added set_clip_control(), set_depth_range_f(), clear_depth_f()
  and set_depth_bounds() to gh_renderer (lua / python).

Version - 2015.08.09
+ added get_num_capabilities(), get_capability_name() and
  check_capability() to gh_renderer lib. These functions are
  designed to work with gh_renderer.get_capability_4i().

Version - 2015.08.06
. Test version with LuaSocket mime module enabled. Lua socket files
  in libs/lua/socket/ folder have been edited to use the socket
  and mime modules that are defined by GLSL Hacker.

Version - 2015.07.01
+ added clear_cpu_gpu_data() to gh_mesh.
+ added mesh ribbon (wide line) to gh_mesh lib: ribbon_create(),
  ribbon_add_point() and ribbon_set_cross_vector().
+ added line adjacency support.

Version - 2015.06.22
+ added particle_system_create_fluid_v2() to gh_physx3 (Lua / Python).
+ added do_screenshot_v2() in gh_utils lib (Lua / Python).
* fixed a bug in params list of gh_utils.do_screenshot() in Python.
* bugfix: the FreeImage plugin can now handle 4-bit per pixel images.
* bugfix: on Windows, the live coding no longer disturbate the main 3D scene
  keybord buffer. In previous versions, the camera could be moved with arrow
  keys even if the live coding box had the focus.
! live coding is disabled by default on Windows version. The checkbox is still
  there to enable live-coding on each script/glsl editor.

Version - 2015.05.15
+ added new keys to keyboard management (all keys of numeric keypad) on Windows.

Version - 2015.05.14
+ added luasocket lib.
+ added experiemtal Spout plugin.


  • Alex


    Will GeeXLab become available for commercial use ? Paid version ? Last version of GeeXLab had SDK for embedding in our own application.

  • Yes, a paid version (PRO version) is in progress. It comes with additional features (the most important is the binary export of the scene file, which can be read on a player) and more support. And an easy-to-use SDK will be also available to embed the GeeXLab engine in your application.