News | HackLAB https://www.geeks3d.com/hacklab 3D Programming, Prototyping and Gamedev with GeeXLab Tue, 07 May 2024 08:27:35 +0000 en-US hourly 1 https://wordpress.org/?v=6.7.1 (WIP) 3D Character Animation in Python3 and GeeXLab https://www.geeks3d.com/hacklab/20240507/wip-3d-character-animation-in-python3-and-geexlab/ https://www.geeks3d.com/hacklab/20240507/wip-3d-character-animation-in-python3-and-geexlab/#respond Tue, 07 May 2024 08:27:35 +0000 https://www.geeks3d.com/hacklab/?p=1750 Here is a work in progress on 3D Motion Generation using Machine Learning done with Python and using GeeXLab for the rendering part.

The post (WIP) 3D Character Animation in Python3 and GeeXLab first appeared on HackLAB.]]>

Here’s a short video about a 3D character animation project using Machine Learning done in Python 3 and rendered with GeeXLab. This is a project from the engineering school Haute Ecole Arc in Neuchatel, Switzerland.

In this project, we investigate statistical models to generate 3D running motions in realtime. In particular, Principal Component Analysis provides realistic results. The main limitation however is that the latent space dimensions are not meaningful to the end-user. Additional investigations are needed to create new statistical models that use explainable parameters.

The post (WIP) 3D Character Animation in Python3 and GeeXLab first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20240507/wip-3d-character-animation-in-python3-and-geexlab/feed/ 0
Vulkan Raytracing is Coming into GeeXLab (Updated 2021.01.15) https://www.geeks3d.com/hacklab/20201224/vulkan-raytracing-is-coming-into-geexlab/ https://www.geeks3d.com/hacklab/20201224/vulkan-raytracing-is-coming-into-geexlab/#respond Thu, 24 Dec 2020 13:08:14 +0000 https://www.geeks3d.com/hacklab/?p=1584 Raytracing is coming to GeeXLab. After a bunch of hours of coding and debugging (thanks to the latest Vulkan SDK!), I finally managed to see my first ray traced RGB triangle! The Hello World of Vulkan raytracing, in a word. The raytracing code is based on the latest Vulkan official extensions (VK_KHR_acceleration_structure and VK_KHR_ray_tracing_pipeline). The post header screenshot shows the ray traced triangle rendered on … Continue reading Vulkan Raytracing is Coming into GeeXLab (Updated 2021.01.15) »

The post Vulkan Raytracing is Coming into GeeXLab (Updated 2021.01.15) first appeared on HackLAB.]]>

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070

Raytracing is coming to GeeXLab. After a bunch of hours of coding and debugging (thanks to the latest Vulkan SDK!), I finally managed to see my first ray traced RGB triangle! The Hello World of Vulkan raytracing, in a word. The raytracing code is based on the latest Vulkan official extensions (VK_KHR_acceleration_structure and VK_KHR_ray_tracing_pipeline).

The post header screenshot shows the ray traced triangle rendered on a GeForce RTX 2070 with GeForce 457.44 driver (the triangle is rendered on a 512×512 image).

The following screenshot shows the same demo rendered on a Radeon RX 6800 XT (XMas Edition!) with latest Adrenalin 20.12.2:

GeeXLab - Vulkan raytracing on AMD Radeon RX 6800 XT

 
As you can see, there is still a lot work to do before releasing GeeXLab 0.40…

 

Update (2020.12.31)

For this last day of the covid-19 year, here are some new screenshots. In a word, basic ray tracing iis now operational in GeeXLab: you can create raygen, miss and closest hit shaders and trace rays. It’s amazing to see how it’s simple to add shadows in a ray traced scene!

In this scene, we have a ground plane, two animated donuts and shadows. The ray traced scene is rendered in a 512×512 texture.

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070
Vulkan ray tracing on a GeForce RTX 2070 + R460.89

 
On the Radeon RX 6800 XT, it’s another story. Currently the texture resolution is limited to 128×128 pixels otherwise there are some glitches. Here is a simple example: a donut and a triangle are rendered in red color on a green background.

– BAD: Radeon RX 6800 XT – 512×512 render texture:
GeeXLab - Vulkan raytracing on AMD Radeon RX 6800 XT

 
– GOOD: Radeon RX 6800 XT – 128×128 render texture:
GeeXLab - Vulkan raytracing on AMD Radeon RX 6800 XT

 
And shadows can not be rendered otherwise there is a serious crash + reboot!

GeeXLab - Vulkan raytracing on AMD Radeon RX 6800 XT
Vulkan ray tracing on a Radeon RX 6800 XT + Adrenalin 20.12.2

 
No error is reported by the Vulkan SDK. The crash on the Radeon RX 6800 XT is likely caused by the launch of a second ray (needed for the shadow). More tests (and new driver?? are needed…

 

Update (2021.01.15)

– Raytracing with texturing and shadows (hard shadows). One ray per pixel.

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070

 
– First tests of raytracing with several rays per pixel.

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070

GeeXLab - Vulkan raytracing on NVIDIA GeForce RTX 2070

The post Vulkan Raytracing is Coming into GeeXLab (Updated 2021.01.15) first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20201224/vulkan-raytracing-is-coming-into-geexlab/feed/ 0
GeeXLab 0.27.6.0 Released for Windows, Linux and macOS https://www.geeks3d.com/hacklab/20190424/geexlab-0-27-6-0-released-for-windows-linux-and-macos/ https://www.geeks3d.com/hacklab/20190424/geexlab-0-27-6-0-released-for-windows-linux-and-macos/#respond Wed, 24 Apr 2019 13:39:26 +0000 https://www.geeks3d.com/hacklab/?p=1414 GeeXLab Downloads Feedback thread / Forum (EN)   1 – Release Notes GeeXLab 0.27.6 is one of the last releases of the branch 0.27. All new features will go in branch 0.28. This time I took the time to update the macOS version, because the last update was published nearly one year ago. I removed the dust from my Mac mini, updated the OS with … Continue reading GeeXLab 0.27.6.0 Released for Windows, Linux and macOS »

The post GeeXLab 0.27.6.0 Released for Windows, Linux and macOS first appeared on HackLAB.]]>

GeeXLab 0.27.6 on macOS 10.14 Mojave



 

1 – Release Notes

GeeXLab 0.27.6 is one of the last releases of the branch 0.27. All new features will go in branch 0.28. This time I took the time to update the macOS version, because the last update was published nearly one year ago. I removed the dust from my Mac mini, updated the OS with Mojave, the latest iteration of macOS and updated Xcode with the latest version 10.2.

The macOS version of GeeXLab has been tested on a Mac mini only with an Intel Iris GPU. It took me some time to recompile GeeXLab because Apple has changed some settings in the clang compiler (for example, in some .cpp files, NSString variables were no longer recognized by the compiler. I solved the issue by using the -ObjC++ compiler flag). Apple has deprecated OpenGL in macOS Mojave but I didn’t see warnings or other messages telling me that OpenGL is deprecated. And this new version of GeeXLab works pretty well.

Some tests / demos:

Shadertoy demos:


GeeXLab 0.27.6 on macOS 10.14 Mojave - shadertoy demo

 
Loops:


GeeXLab 0.27.6 on macOS 10.14 Mojave - Loops demo

 
Bullet3:


GeeXLab 0.27.6 on macOS 10.14 Mojave - Bullet3 demo

 
On Windows and macOS, the Python 3 plugin has been updated with latest version 3.7.3. On macOS, you have to install Python 3.7.3 (from python.org) to code or play demos with Python 3.

On Windows, GeeXLab provides a complete Python 3 installation (in {GeeXLab folder}/python3/). But you can still use your own Python installation (in that case, just change the Python home in start_set_python_home.bat). On Linux, the Python plugin is compiled with Python 3.6 libraries.

And Raspberry Pi and Tinker Board versions of GeeXLab ? ASAP!

I updated the scripting API functions and added a new page in the Rootard Guide: Features Matrix.

 

2 – Changelog

Full changelog from beginning of time is available HERE.

Version 0.27.6.0 - 2019.04.21
! (2019.04.21) minor bugfixes in some GeeXLab Python libs
  (in GeeXLab/libs/python/).
+ (2019.04.17) [macOS] added PhysX 4.1 plugin.
+ (2019.04.17) [macOS] added Python 3 plugin (Python 3.7.3).
+ (2019.04.16) added set_vertices_color_v2() to gh_polyline.
+ (2019.04.16) added circle_create_v2() to gh_utils.
+ (2019.04.15) added instancing_get_position(), instancing_get_orientation(), 
  instancing_get_scale() and instancing_get_color() to gh_mesh.
! (2019.04.13) [Windows] updated OpenVR plugin with latest OpenVR SDK 1.2.10.
! (2019.04.13) [Python 3.7 plugin] updated with Python 3.7.3 on Windows.
* (2019.04.12) fixed a minor bug in gh_imgui.checkbox().
+ (2019.04.12) added list_box_begin() and list_box_end() to gh_imgui lib.
* (2019.04.12) [PRO version] [Windows] fixed minor issues in the setting of 
  layered style (for transparent windows).
! (2019.04.12) gh_font.text_2d(): x and y parameters are now float.
! (2019.04.08) [Windows] screen saver, screen blanking and sleep mode are disallowed by default.
  Use the /allow_screen_saver option to allow screen saver/blanking and sleep mode.
The post GeeXLab 0.27.6.0 Released for Windows, Linux and macOS first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20190424/geexlab-0-27-6-0-released-for-windows-linux-and-macos/feed/ 0
MadView3D 0.3.0 released https://www.geeks3d.com/hacklab/20180823/madview3d-0-3-0-released/ https://www.geeks3d.com/hacklab/20180823/madview3d-0-3-0-released/#respond Thu, 23 Aug 2018 11:10:09 +0000 https://www.geeks3d.com/hacklab/?p=1385   MadView3D is a simple 3D object viewer. MadView3D is based on GeeXLab and is available on Windows, Linux, macOS, Raspberry Pi and Tinker Board. MadView3D can load many 3D file formats including .obj, .3ds, .fbx, .glft. More details about MadView3D 0.3.x can be found in the RELEASE NOTES. MadView3D can be downloaded from THIS PAGE.

The post MadView3D 0.3.0 released first appeared on HackLAB.]]>

MadView3D

 

MadView3D is a simple 3D object viewer. MadView3D is based on GeeXLab and is available on Windows, Linux, macOS, Raspberry Pi and Tinker Board.

MadView3D can load many 3D file formats including .obj, .3ds, .fbx, .glft.

More details about MadView3D 0.3.x can be found in the RELEASE NOTES. MadView3D can be downloaded from THIS PAGE.


MadView3D

MadView3D

MadView3D

The post MadView3D 0.3.0 released first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180823/madview3d-0-3-0-released/feed/ 0
GeeXLab 0.24.0 Released for Windows, Linux, macOS, Raspberry Pi and Tinker Board https://www.geeks3d.com/hacklab/20180504/geexlab-0-24-0-released-for-windows-linux-macos-raspberry-pi-and-tinker-board/ https://www.geeks3d.com/hacklab/20180504/geexlab-0-24-0-released-for-windows-linux-macos-raspberry-pi-and-tinker-board/#respond Fri, 04 May 2018 14:18:25 +0000 http://www.geeks3d.com/hacklab/?p=1346 UPDATE (2018.05.11) GeeXLab 0.24.1.0 is available for Windows and Linux and fixes several bugs related to the Vulkan plugin. One of those bugs (introduced in v0.24.0) was rather annoying: the Vulkan plugin was not loaded for a Vulkan demo… A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS).   1 – Overview GeeXLab … Continue reading GeeXLab 0.24.0 Released for Windows, Linux, macOS, Raspberry Pi and Tinker Board »

The post GeeXLab 0.24.0 Released for Windows, Linux, macOS, Raspberry Pi and Tinker Board first appeared on HackLAB.]]>

GeeXLab logo


UPDATE (2018.05.11)

GeeXLab 0.24.1.0 is available for Windows and Linux and fixes several bugs related to the Vulkan plugin. One of those bugs (introduced in v0.24.0) was rather annoying: the Vulkan plugin was not loaded for a Vulkan demo…


A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS).

 

1 – Overview

GeeXLab 0.24.0.0 comes with the following new features and changes:

  • Monitoring Mode: I call Monitoring Mode a mode where GeeXLab eats CPU or GPU cycles only when it’s necessary: the windows size has changed, you have clicked on a widget, this kind of events. When there is no event, the 3D view is not rendered. This mode is perfect for monitoring tools and is used in the new version of GL-Z. The monitoring mode was already in GeeXLab but on Windows only. Now it’s available on all platforms.
  • High DPI support has been improved, but in a minimal way: GeeXLab is no longer scaled by Windows and then keeps its original size.
  • ImGui has been updated to latest version 1.61 WIP and now mouse wheel is handled on all platforms! You have to use the new gh_imgui.frame_begin_v2() to handle the mouse wheel. I also added around 20 new functions to deal with ImGui API.
  • The Vulkan plugin has been updated and new functions to get information about Vulkan have been added to gh_renderer lib.
  • LuaJIT support has been added to Raspberry Pi (OpenGL 2 and OpenGL ES 2 versions) and to ASUS Tinker Board.
  • Some new functions have been added for getting GLX information on Linux systems.

In the changelog you will find information about GeeXLab 0.23.0. It has been released to few users for testing but I didn’t find the time to officially publish it. It doesn’t matter since the v0.24.0 is there!

 

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.24.0.0 - 2018.05.03
-----------------------------
! improved monitoring mode, a mode where GeeXLab does not eat CPU and GPU cycles
  if not necessary. Monitoring mode is available on all platforms.
+ [WINDOWS] GeeXLab keeps its size on high DPI systems (no longer blurry effect).
+ [WINDOWS/LINUX] added gl_forward_compatible element in the XML window node.
! updated gh_imgui lib with latest version 1.61 WIP.
+ added mouse wheel support in ImGui functions (gh_imgui.frame_begin_v2()). 
+ added frame_begin_v2(), set_next_window_content_size(), collapsing_header(),
  text_unformatted_v1(), text_unformatted_v2(), column_get_width(), column_set_width(),
  column_get_offset(), column_set_offset(), get_font_size(), calc_text_size(), 
  begin_child(), end_child(), popup_open(), popup_begin(), popup_begin_context_item(), 
  popup_end(), selectable() and button_arrow() to gh_imgui lib (lua, python).
+ added get_gpu_config() to gh_gml lib (lua, python).
+ added plotline_draw_v2() to gh_imgui lib (lua, python).
+ added vk_instance_get_num_layers(), vk_instance_get_layer_name(), 
  vk_gpu_get_num_layers(), vk_gpu_get_layer_name(), 
  vk_gpu_get_num_memory_heaps(), vk_gpu_get_heap_size() and vk_gpu_get_device_type()
  to gh_renderer (lua, python).
* Vulkan plugin: fixed a crash on Radeon GPUs by disabling the call to
  vkGetPhysicalDeviceProperties2() with Adrenalin 18.3.4. 
* Vulkan plugin: fixed a bug in the enumeration of device extensions.
+ [RPI / TINKER BOARD] added LuaJIT support. 
+ [LINUX] added glx_get_server_num_extensions(), glx_get_server_extension(), 
  glx_get_client_num_extensions(), glx_get_client_extension(), glx_get_renderer_info_int(),
  glx_get_renderer_info_str() to gh_renderer (lua, python).

Version 0.23.0.0 - 2018.04.22
-----------------------------
+ added shader_thread_group_get_properties_nv() to gh_renderer (lua, python).
+ added conservative_rasterization_get_properties_nv() and 
  conservative_rasterization_set_sub_pixel_precision_bias_nv() to gh_renderer (lua, python).
+ added support of GL_INTEL_conservative_rasterization and GL_NV_conservative_raster.
+ Vulkan: added vk_shader_core_properties_amd_get_value() to gh_renderer lib (lua, python).
+ added get_view_matrix_4x4() and get_projection_matrix_4x4() to gh_camera lib (lua, python).
+ added set_transform() and get_transform() to gh_object lib (lua, python).
* fixed gh_physx3.create_actor_mesh_v2(). Convex meshes can now be used in rigid body collisions.
! updated internal functions to set object transformation. Now position and orientation
  are updated when an object is updated with a transformation matrix.
! updated Vulkan plugin with latest Vulkan 1.1.74 headers.
The post GeeXLab 0.24.0 Released for Windows, Linux, macOS, Raspberry Pi and Tinker Board first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180504/geexlab-0-24-0-released-for-windows-linux-macos-raspberry-pi-and-tinker-board/feed/ 0
GeeXLab 0.22.1 Released for all Platforms https://www.geeks3d.com/hacklab/20180419/geexlab-0-22-1-released-for-all-platforms/ https://www.geeks3d.com/hacklab/20180419/geexlab-0-22-1-released-for-all-platforms/#respond Thu, 19 Apr 2018 12:19:35 +0000 http://www.geeks3d.com/hacklab/?p=1338 A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS). This version adds to all platforms the features introduced in GeeXLab 0.22.0.2 for Windows: SQLite3 support. GeeXLab offers two methods to work with SQlit3 database: either via the gh_sqlite3 library (see this article) or via the LuaSQL built-in support in Lua. ImGui menus. New … Continue reading GeeXLab 0.22.1 Released for all Platforms »

The post GeeXLab 0.22.1 Released for all Platforms first appeared on HackLAB.]]>

GeeXLab logo

A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS). This version adds to all platforms the features introduced in GeeXLab 0.22.0.2 for Windows:

  • SQLite3 support. GeeXLab offers two methods to work with SQlit3 database: either via the gh_sqlite3 library (see this article) or via the LuaSQL built-in support in Lua.
  • ImGui menus. New functions have been added to manage a main menu or menus in windows. For more information read this article.

GeeXLab 0.22.1 brings the support of the ico-sphere mesh with the new create_icosphere() function of the gh_mesh library:


GeeXLab - Ico Sphere

GeeXLab - Ico Sphere

A demo is available in the code sample pack, in the gl-32/mesh-icosphere/ folder.

Some new functions have been added in GeeXLab 0.22.1 (gh_renderer.draw_primitives(), gh_physx3.create_actor_mesh_v2() and gh_physx3.create_actor_capsule()). For more details, read the changelog.

And nice news for Linux users: the support of LuaJIT has been added. LuaJIT support is currently available on Windows and Linux platforms.

Two platforms have not been updated and I don’t think I will update them in the future (unless you really need them):

  • GeeXLab for Tinker Board with OpenGL desktop support: this support has been stopped because the real OpenGL on the Tinker Board is OpenGL ES 3.1. So only GeeXLab for Tinker Board with OpenGL ES 3.1 is supported.
  • GeeXLab for Raspberry Pi for Jessie with OpenGL ES support. Since the release of Raspbian Stretch, GeeXLab was available in two flavors for RPi + GL ES: one version linked with libGLESv2.so (Raspbian Jessie) and a second one linked with libbrcmGLESv2.so (Raspbian Stretch and up). Only the Raspbian Stretch version of GeeXLab with OpenGL ES 2.0 is supported. Of course, GeeXLab with OpenGL 2.1 for desktop is still supported.

 

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.22.1.0 - 2018.04.12
-----------------------------
+ added new built-in mesh: icosphere (gh_mesh.create_icosphere()).
! updated bounding volume management. 
+ added bounding_volume_set_radius(), bounding_volume_set_aabb_min() and 
  bounding_volume_set_aabb_max() to gh_object lib (lua, python).
+ added draw_primitives() to gh_renderer lib (lua, python).
+ added create_actor_mesh_v2() to gh_physx3 lib (lua, python) to handle
  convex meshes.
+ added create_actor_capsule() to gh_physx3 lib (lua, python).
! updated enable_state() / disable_state() of gh_renderer lib with 
  "GL_PROGRAM_POINT_SIZE".
+ [LINUX] added LuaJIT support.


Version 0.22.0.5 - 2018.03.29
-----------------------------
! recompilation, some PhysX 3 functions were broken.


Version 0.22.0.4 - 2018.03.28
-----------------------------
+ added actor_set_kinematic_target_v2() to gh_physx lib (lua, python)


Version 0.22.0.3 - 2018.03.28
-----------------------------
! updated all gh_object.get_absolute_xxxxx() functions (position, orientation)
  with the new mode 3 (set_absolute_transform_update_mode).
+ added a new mode (3) to set_absolute_transform_update_mode().


Version 0.22.0.2 - 2018.03.26
-----------------------------
! plugin loading: the log file now contains information about plugins that are present.
  Information about missing plugins is no longer in the log file.
! minor internal changes.


Version 0.22.0.1 - 2018.03.25
-----------------------------
+ added set_absolute_transform_update_mode() to gh_object (lua, python)


Version 0.22.0.0 - 2018.03.25
-----------------------------
+ added new library: gh_sqlite3 (lua, python).
+ added LuaSQL with SQLite3 driver (lua only).
+ added menu_begin_main_bar(), menu_end_main_bar(), menu_begin_bar(), menu_end_bar()
  menu_begin(), menu_end() and menu_item() to gh_imgui lib (lua, python).
+ added get_uptime() to gh_utils lib (lua, python)
! updated the ImGuizmo library. All gh_imgui.gizmo_xxxxxx() functions
  are now back (lua, python).
The post GeeXLab 0.22.1 Released for all Platforms first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180419/geexlab-0-22-1-released-for-all-platforms/feed/ 0
GeeXLab 0.21.x Released for all Platforms, Assimp Support Added https://www.geeks3d.com/hacklab/20180216/geexlab-0-21-x-released-for-all-platforms-assimp-support-added/ https://www.geeks3d.com/hacklab/20180216/geexlab-0-21-x-released-for-all-platforms-assimp-support-added/#respond Fri, 16 Feb 2018 18:08:05 +0000 http://www.geeks3d.com/hacklab/?p=1323 A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS). This version is a big maintenance update and, at the same time, adds the support of Assimp for loading many 3D file formats on all platforms.   1 – Release Highlights – Assimp 3D Object Loader Plugin – ImGui 1.54 – PhysX 3.4.1 – … Continue reading GeeXLab 0.21.x Released for all Platforms, Assimp Support Added »

The post GeeXLab 0.21.x Released for all Platforms, Assimp Support Added first appeared on HackLAB.]]>

GeeXLab logo

A new version of GeeXLab is ready for all platforms: Windows, Linux, macOS, Raspberry Pi (Raspbian) and Tinker Board (Tinker OS). This version is a big maintenance update and, at the same time, adds the support of Assimp for loading many 3D file formats on all platforms.

 

1 – Release Highlights

Assimp 3D Object Loader Plugin
ImGui 1.54
PhysX 3.4.1
FFmpeg 3.4.1
ImageMagick 7.0.7.22

 

1.1 – Assimp 3D Object Loader Plugin

GeeXLab 0.21+ comes with a new plugin for loading 3D objects. This new plugin (plugin_gxc_assimp_x{32|64}.{dll|so|dylib}) is based on the Assimp library. Assimp has been used in older versions of GeeXLab (many many years ago) but has been removed because at that time, it was not stable. Now Assimp seems stable: it compiles properly and works fine on all platforms. One of the nice thing with Assimp is that it supports many 3D formats including recent glTF.

To load an 3D object with Assimp loader, you can use these new functions:

gh_model.create_from_file_loader_assimp()
gh_model.create_from_file_loader_assimp_v2()

A simple demo that uses Assimp to load 3D object can be found in the learn folder of the code sample pack:
learn/01-basic/11-loading-3d-model/main.xml or learn/02-intermediate/01-phong-lighting/main.xml.

The Assimp plugin is available on Windows, Linux, macOS, Raspberry Pi and Tinker Board.


GeeXLab Assimp 3D object loader

 

1.2 – ImGui v1.54

The ImGui support has been updated with latest version 1.54. Now all kind of colors can be customized via this function of the gh_imgui library:

gh_imgui.set_color(color_type, r, g, b, a)

All possible values for color_type are defined here: {GeeXLab folder}/libs/lua/imgui.lua

You can find a demo that shows how to change ImGui colors in the full code sample pack: gl-32/imgui/demo_06.xml.

Some new functions have been added in the gh_imgui lib (lua and python) for customizing the rendering of windows:
– gh_imgui.set_frame_border_size()
– gh_imgui.set_frame_rounding()
– gh_imgui.set_window_border_size()
– gh_imgui.set_window_rounding()

ImGui functions are available on Windows, Linux, macOS, Raspberry Pi and Tinker Board.


GeeXLab ImGui demo

 

1.3 – NVIDIA PhysX 3.4

The NVIDIA PhysX plugin has been updated to the version 2018.01.19. It’s one of the latest version of the 3.4 branch. The PhysX plugin has been updated on Windows, Linux and macOS.


NVIDIA PhysX

 

1.4 – FFmpeg 3.4.1

FFmpeg… If you have already used the FFmpeg API, you can imagine what does it mean to update a code based on FFmpeg 2.86 (released two or three years ago) to latest FFmpeg 3.41. Using FFmpeg is not easy (I think, for example, to the video / audio synchronization) and some important functions in v2.86 have been deprecated in branch 3.x. And up to date code samples on how to use FFmpeg are not easy to find. Anyway, I managed to update the FFmpeg plugin to version 3.4.1, it seems to work and it’s the important thing. I just saw that a version 3.4.2 is available but it’s too late to update GeeXLab with it. FFmpeg 3.4.2 will be used in the next release of GeeXLab.

A simple demo that shows how to use FFmpeg plugin to play a video is available in the full code sample pack:
gl-32/audio-video-player/demo_video_player_gl3.xml


FFmpeg plugin demo

 

1.5 – ImageMagick 7.0.7-22

The ImageMagick plugin has been added to GeeXLab in version 0.19.0. This time I properly compiled ImageMagick in order to have JPEG and PNG support on all platforms. Because on some platforms (Linux / macOS), ImageMagick expects that jpeg and png dev libs are installed. If it’s not the case, ImageMagick is compiled without the support of those important image formats.

ImageMagick is available via a plugin (plugin_gxc_imagemagick_x{32|64}.{dll|so|dylib}) and can be used via the gh_imagemagick library in Lua and Python.

An example of how to use ImageMagick functions can be use the MagickView demo available in each version of GeeXLab in the apps/magickview folder.


ImageMagick logo

 

2 – Downloads

The latest version of GeeXLab as well as code sample packs can be downloaded from THIS PAGE.

 

3 – Changelog

Full changelog from beginning of time is available HERE.

Version 0.21.1.0 - 2018.02.14
+ added list of all supported 3D formats by Assimp plugin in the log file.
! updated gh_utils.font_render(), gh_font.draw_text_2d() and gh_font.draw_text_3d() 
  to handle strings and numbers (lua only).
! [WINDOWS] PhysX plugin: removed the test of the PhysX version that could prevent PhysX
  demos from working on some systems.  
+ added stop_demo() to gh_utils (lua / python).


Version 0.21.0.2 - 2018.02.10
+ added set_children_render_state() to gh_node lib (lua, python).
+ added list of all supported image formats by ImageMagick plugin in the log file.
+ added list of all supported 3D formats by Assimp plugin in the log file.


Version 0.21.0.1 - 2018.02.06
! [WINDOWS] compiled with VS2017 v15.5.6.


Version 0.21.0.0 - 2018.02.05
+ added ASSIMP plugin.
! updated ImageMagick with latest version 7.0.7.22.
! updated ImGui with latest version 1.54 WIP.
! [WINDOWS / Linux / macOS] updated PhysX plugin with latest PhysX 3.4 SDK.
! updated FFmpeg plugin with version 3.4.1.
! [WINDOWS / macOS] updated FBX plugin with FBX SDK v2018.1.1.
! improved gh_imgui.set_color(): now all ImGui colors are supported.
+ added OpenEXR image support via TinyEXR. Images with tiles are not supported.
! update ObjLoaderV2 plugin with latest version of TinyOBJLoader.
! improved ObjLoaderV1 plugin.
! FFmpeg plugin: optimized a bit the video texture upload to GPU.
! renamed gh_object.average_vertices_normal() in gh_object.smooth_vertices_normal().
+ added is_any_item_hovered() to gh_imgui lib (lua / python).
+ added get_view_quaternion() to gh_camera lib (lua / python).
+ added set_frame_border_size(), set_frame_rounding(), set_window_border_size()
  and set_window_rounding() to gh_imgui lib (lua / python).
* fixed return code of gh_utils.webcam_start().
* fixed gh_gpu_program.create_from_shader_files().


Version 0.20.2.0 - 2018.01.22
! updated Lua LFS 1.7.0.
+ added create_v3() and wtext_2d() to gh_font lib.
The post GeeXLab 0.21.x Released for all Platforms, Assimp Support Added first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180216/geexlab-0-21-x-released-for-all-platforms-assimp-support-added/feed/ 0
GeeXLab 0.20.1 for Tinker Board with OpenGL ES 3.1 Tessellation Support https://www.geeks3d.com/hacklab/20180118/geexlab-0-20-1-for-tinker-board-with-opengl-es-3-1-tessellation-support/ https://www.geeks3d.com/hacklab/20180118/geexlab-0-20-1-for-tinker-board-with-opengl-es-3-1-tessellation-support/#respond Thu, 18 Jan 2018 10:11:54 +0000 http://www.geeks3d.com/hacklab/?p=1320 A new update of GeeXLab has been released for the Tinker Board. The Tinker Board supports OpenGL ES 3.1 and exposes the GL_EXT_tessellation_shader extension (Tinker OS 2.0.4). That means we can do hardware tessellation with the Tinker Board. But in GeeXLab 0.20.0, the tessellation support was disabled on the Tinker Board because the Raspberry Pi and the Tinker Board share the same OpenGL ES render … Continue reading GeeXLab 0.20.1 for Tinker Board with OpenGL ES 3.1 Tessellation Support »

The post GeeXLab 0.20.1 for Tinker Board with OpenGL ES 3.1 Tessellation Support first appeared on HackLAB.]]>

ASUS Tinker Board

A new update of GeeXLab has been released for the Tinker Board.

The Tinker Board supports OpenGL ES 3.1 and exposes the GL_EXT_tessellation_shader extension (Tinker OS 2.0.4). That means we can do hardware tessellation with the Tinker Board. But in GeeXLab 0.20.0, the tessellation support was disabled on the Tinker Board because the Raspberry Pi and the Tinker Board share the same OpenGL ES render code. Since the RPi does not support tessellation (OpenGL ES 2.0), it was disabled on Tinker Board as well. I fixed this minor error and now OpenGL tessellation shaders are fully operational on the TB!

You can download GeeXLab 0.20.1 for Tinker Board / OpenGL ES from THIS LINK.

Some tessellation demos are available in the {GeeXLab folder}/demos/tessellation/ folder. To run the demos, just edit the demo.sh file and uncomment one of the following lines:

#./GeeXLab /demofile=\"./demos/tessellation/demo01.xml\"
#./GeeXLab /demofile=\"./demos/tessellation/demo02.xml\"
./GeeXLab /demofile=\"./demos/tessellation/demo03.xml\"

Then open a terminal in GeeXLab folder and run the command:

$ sh ./demo.sh


demo03.xml
ASUS Tinker Board - OpenGL ES 3.1 tessellation demo
 

demo02.xml
ASUS Tinker Board - OpenGL ES 3.1 tessellation demo

The post GeeXLab 0.20.1 for Tinker Board with OpenGL ES 3.1 Tessellation Support first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180118/geexlab-0-20-1-for-tinker-board-with-opengl-es-3-1-tessellation-support/feed/ 0
GeeXLab 0.20.0 Released for all Platforms, ASUS Tinker Board Support Added https://www.geeks3d.com/hacklab/20180109/geexlab-0-20-0-released-for-all-platforms-asus-tinker-board-support-added/ https://www.geeks3d.com/hacklab/20180109/geexlab-0-20-0-released-for-all-platforms-asus-tinker-board-support-added/#respond Tue, 09 Jan 2018 17:18:52 +0000 http://www.geeks3d.com/hacklab/?p=1317 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 … Continue reading GeeXLab 0.20.0 Released for all Platforms, ASUS Tinker Board Support Added »

The post GeeXLab 0.20.0 Released for all Platforms, ASUS Tinker Board Support Added first appeared on HackLAB.]]>

GeeXLab logo

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


NVIDIA PhysX logo

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/


GeeXLab PhysX - GPU rigid body demo

 

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.


GeeXLab OpenGL ES demo running on ASUS Tinker Board

GeeXLab and ASUS Tinker Board Support

 

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).
The post GeeXLab 0.20.0 Released for all Platforms, ASUS Tinker Board Support Added first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20180109/geexlab-0-20-0-released-for-all-platforms-asus-tinker-board-support-added/feed/ 0
GeeXLab 0.19.0.0 released for Windows, Linux, macOS and Raspberry Pi https://www.geeks3d.com/hacklab/20171123/geexlab-0-19-0-0-released-for-windows-linux-macos-and-raspberry-pi/ https://www.geeks3d.com/hacklab/20171123/geexlab-0-19-0-0-released-for-windows-linux-macos-and-raspberry-pi/#respond Thu, 23 Nov 2017 09:51:36 +0000 http://www.geeks3d.com/hacklab/?p=1296 A new version of GeeXLab is ready for your pixel hacks. This version brings several new features like embedded Python on Windows or a new plugin based on the popular ImageMagick tool. 1 – Release Highlights 1.1 ImageMagick Plugin ImageMagick can be seen as the swiss-knife of image tools. ImageMagick is essentially a command line tool and like ffmpeg, it offers a zillion functions to … Continue reading GeeXLab 0.19.0.0 released for Windows, Linux, macOS and Raspberry Pi »

The post GeeXLab 0.19.0.0 released for Windows, Linux, macOS and Raspberry Pi first appeared on HackLAB.]]>

GeeXLab logo

A new version of GeeXLab is ready for your pixel hacks. This version brings several new features like embedded Python on Windows or a new plugin based on the popular ImageMagick tool.

1 – Release Highlights

1.1 ImageMagick Plugin

ImageMagick can be seen as the swiss-knife of image tools. ImageMagick is essentially a command line tool and like ffmpeg, it offers a zillion functions to manipulate images:

Use ImageMagick to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.


ImageMagick logo

The nice thing is that a SDK is also available so any developer can add ImageMagick features on its application. For GeeXLab, that means a new plugin plugin_gxc_imagemagick available for all platforms (Windows, Linux, macOS and Raspberry Pi). And a new plugin means a new library for Lua and Python: gh_imagemagick.

ImageMagick supports many image formats in reading and in writing. Then you can use ImageMagick plugin to load textures instead using gh_texture.create_from_file(…):

local PF_U8_RGB = 1
local PF_U8_RGBA = 3
local pixel_format = PF_U8_RGBA
local gen_mipmaps = 0
local free_cpu_memory = 0
local upload_to_gpu = 1
tex0 = gh_imagemagick.texture_create_from_file(filename, pixel_format, gen_mipmaps, free_cpu_memory, upload_to_gpu)

Once you have a texture created with ImageMagick plugin, you can resize it, crop or apply some effects like sepia, quantize, oil paint, etc:

gh_imagemagick.texture_crop(tex0, x, y, w, h)
gh_imagemagick.texture_negate(tex0, 0)
gh_imagemagick.texture_quantize(tex0, num_colors, dither_method_type)
gh_imagemagick.texture_posterize(tex0, num_colors, dither_method_type)
gh_imagemagick.texture_swirl(tex0, degrees, interpolation_method)
gh_imagemagick.texture_emboss(tex0, radius, sigma)

A demo is available in the gl-21/imagemagick/ folder of the full code sample pack.

1.2 Python shipped with the Windows version

GeeXLab supports two programming languages: Lua and Python. Lua is embedded in the core of GeeXLab and is always available. On the other side, Python is available via a plugin (plugin_gxl_python_xxx.xxx). Python is installed by default on Linux, Raspbian and macOS. So you can immediately start Python programming with GeeXLab on these platforms. On Windows, Python is not available and you have to install it (you have to download Python 2.7 installer from python.org). So far… Now, it’s an old story. Python 2.7 is now shipped with GeeXLab and like on other platforms, you can start Python programming in no time with GeeXLab.

I shipped the latest Python 2.7.14. So by default GeeXLab will use its own Python installation (in the {GeeXLab}/python/ folder). But if you need to use your Python installation, just tell GeeXLab where to found the Python home with:

GeeXLab.exe /python_home="C:/Python27"

And do not forget to remove python.dll from the plugins/ folder.

Python scripts can be used with Lua scripts in a same demo. You are not limited to an unique language for a demo. For example if you need to quickly download an asset from the Internet, just add a Python script for that job while the rest of the demo is coded with Lua.

1.3 Native File Dialog

I added the support of NativeFileDialog in GeeXLab. Three new functions are available in the gh_utils library in Lua and Python: nfd_open_dialog(), nfd_save_dialog() and nfd_pick_folder().

These functions open a native dialog box for opening and saving a file as well as for selecting a folder. These functions work fine on Windows, Linux and Raspberry Pi (Raspbian). But these do not work on macOS. Why? Because this extremely advanced powerful operating system expects UI (user interface) functions to be called in the main thread of the application. A GeeXLab demo runs in its own system thread and calls any Lua / Python function from this thread. So calling a ndf_xxxxx() function on macOS leads to a nice crash. To make ndf functions to work on macOS I must find a solution that calls ndf functions from GeeXLab main thread and sends results to the correct thread… Maybe I’ll do it during one of the next rainy days!

Here are screenshots of nfd_open_dialog() on Linux and Raspbian:


GeeXLab native file dialog demo on Linux
GeeXLab native file dialog demo on Raspberry Pi

A demo is available in the gl-21/native_file_dialog/ folder of the full code sample pack.

 

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 is available HERE.

 

3 – Changelog

Full changelog from beginning of time is available HERE.

Version 0.19.0.2 – 2017.11.23
—————————–
! [WINDOWS] added vcomp140.dll in the plugins/ folder for ImageMagick plugin.
! [WINDOWS] recompiled gxl_xxx.dll library.

Version 0.19.0.1 – 2017.11.22
—————————–
+ [WINDOWS X64]: added few experimental functions to gh_utils
(lua only) for alloc/set/get global arrays (types: int, float and string):
global_array_{type}_alloc(), global_array_{type}_get()
and global_array_{type}_set().

Version 0.19.0.0 – 2017.11.21
—————————–
+ added ImageMagick support via a new plugin (plugin_gxc_imagemagick)
and a new library: gh_imagemagick (lua and python).
+ added new functions to handle open and save file dialog boxes
nfd_open_dialog(), nfd_save_dialog() and
nfd_pick_folder() to gh_utils (lua / python).
+ added write_to_file_v4() to gh_texture lib (lua / python).
+ added copy_sub_texture() and create_from_sub_texture() to gh_texture lib (lua / python).
+ added new options for saving images (textures).
+ [WINDOWS] All standard Python libraries are now shipped with
GeeXLab in the python/ folder. Python version: 2.7.14.
+ [WINDOWS] added cpu_get_mem_available_size_mb() and cpu_get_mem_size_mb()
in gh_utils lib (lua, python).
! updated trace file: simplified line header, less Vulkan information.
! [WINDOWS] changed mouse cursor: default is arrow, left button is hand.
* bugfix in the display of the current slider value in
gh_imgui.slider_1i() and gh_imgui.vslider_1i().
* bugfix in the vsync management when the progress bar
is used in INIT scripts.

The post GeeXLab 0.19.0.0 released for Windows, Linux, macOS and Raspberry Pi first appeared on HackLAB.]]>
https://www.geeks3d.com/hacklab/20171123/geexlab-0-19-0-0-released-for-windows-linux-macos-and-raspberry-pi/feed/ 0