GeeXLab 0.12.0.0 Released for Windows




GeeXLab

A new version of GeeXLab is available for Windows 32 and 64-bit.

GeeXLab 0.12.0.x is essentially a maintenance release (bug fixes + updates) that includes few interesting functions.

The first new function (added in gh_font lib) is related to True Type fonts: we can now retrieve the width in pixels of a string for a particular font. This function is useful if you want to align text on the right for example:

gh_font.clear(font)

text = "GeeXLab is cool!"
text_width = gh_font.get_text_width(font, text)

-- align text on the right.
gh_font.text_2d(font, screen_width - text_width - 20, 20, 1, 1, 1, 1, text)

gh_font.update(font, 0)

gh_gpu_program.bind(font_prog)
gh_texture.bind(font_texture, 0)
gh_font.render(font)

 
A concrete example can be found in the new OpenGL/Vulkan framework added in the standard library folder: libs/lua/framework_v1/. Look for the OSI_Display_GL() function in common_func_gl.lua.

The second new feature is the mesh voxelization. I will write an quick article about this feature shortly. But in short, mesh voxelization allows to get things like this (left: regular torus, right: voxelized torus):


 GeeXLab - mesh voxelization

 
This demo is available in the code sample pack in the gl-32/voxelize/ folder.

GeeXLab comes with two different OBJ loaders. The second OBJ loader (called “ObjLoaderV2”) is based on TinyObjLoader and has been updated to the latest version 0.9.22. This version of TinyObjLoader seems to work fine and I think it will be the default OBJ loader in one of the next versions of GeeXLab. You can change the current OBJ loader with:

 -- OBJ loader based on TinyObjLoader
gh_model.set_current_3d_obj_loader("ObjLoaderV2")

-- default OBJ loader
-- gh_model.set_current_3d_obj_loader("ObjLoaderV1")


 GeeXLab - OBJ loader/viewer

 
And last thing for Vulkan demo-coders, GeeXLab 0.12.0 fixes a bug related to uniform GPU buffers. If several (greater or equal than 2) uniform GPU buffers were created, there was a crash in the rendering. With a single GPU buffer, GeeXLab was stable.

And if you want to see Shadertoy demos in Vulkan, I ported this demo to GeeXLab / Vulkan and it is available in the code sample pack in: vk/shadertoy/ . This demo uses the new Lua framework.


 GeeXLab - Vulkan / Shadertoy demo

 
As usual, you can download GeeXLab and the code sample pack from THIS PAGE.

The complete changelog:

Version 0.12.0.0 - 2015.05.31
-----------------------------
+ added a mesh voxelizer function: gh_mesh.voxelize() (lua/python).
! [WINDOWS] updated the FBX object loader with FBX SDK 2016 1.1.
! [WINDOWS] updated the FFmpeg plugin with FFmpeg 2.8.6.
! updated the Wavefront OBJ loader based on TinyObjLoader v0.9.22.
+ added gh_mesh.get_num_subsets() (lua/python).
+ added gh_model.init_subsets() (lua/python).
+ added get_vsync() to gh_renderer library (lua / python).
+ added get_text_width() to gh_font library (lua / python).
+ added driver_settings_get_vsync_status() and 
  driver_settings_set_vsync_status() to gh_gpumon lib  (lua / python).
* fixed a bug in the audio synthetizer (gh_audio.sound_create_v2()).
* fixed a bug in the GPU buffer management that could lead to a 
  crash in Vulkan plugin if more than one uniform buffer were created.