"No one can be told what GeeXLab is, you have to see it for yourself!"

"Stop Playing Games and Start Making Them! With GeeXLab, your are on your way!"

Quick Links
What is GeeXLab
Download GeeXLab
GeeXLab Requirements
Online Help
Articles and Tutorials
Samples Screenshots

GeeXLab Changelog

XML Ref. Guide
Scripting Ref. Guide
Code Samples

Purchase GeeXLab

Shader Library

Follow GeeXLab's News
GeeXLab news, articles, tutorials and demos @ Geeks3D.com
GeeXLab @ Twitter GeeXLab RSS Feed

Subscribe to GeeXLab news by email

[ Back to Geeks3D.com ]



Laboratory for Real Time 3D Programming (prototyping and demos)
OpenGL, Lua, Python, GLSL,
PhysX and more...


GeeXLab ChangeLog

[::Release 0.3.0 - 2011.10.25::]
  • New: added support of live coding in GPU shader programs (free and pro versions, free version limited to one GLSL shader program) as well as in Python and Lua scripting (pro version only).
  • New: added SetTessellationState() to HYP_Mesh lib (Python, Lua). To use in conjunction with tessellation shaders.
  • New: added tessellation boolen attribute to mesh node (xml).
  • New: added support of tessellation shaders (with OpenGL 4 compatibility profile).
  • New: added support of geometry shaders.
  • New: added HYP_UniformBuffer lib (Lua).
  • New: added AllocVertexStream(), FreeVertexStream(), FreeAllVertexStreams(), SetVertexStreamElement() and UpdateVertexStreamUniformBuffer() to HYP_Object lib (Lua).
  • New: added AddUniformBuffer() and ClearAllUniformBuffers() to HYP_GpuProgram (Lua).
  • New: added SetUniform_4x4f_CameraViewMatrix and SetUniform_4x4f_CameraProjectionMatrix to HYP_GpuProgram lib (Lua and Python).
  • New: added PixmapFullUpdate() to HYP_Texture lib (Lua).
  • New: added filtering_mode attribute to attach_texture_color element of render_texture node (xml).
  • New: added DisplayMouseCursor() in HYP_Input lib (Python and Lua).
  • New: added DrawConsoleMessages() to HYP_Utils lib (Lua).
  • New: added RenderShadowVolumeDebug(), SetShadowVolumeLengthDebug() and RenderShadowVolumeSilhouetteDebug() to HYP_Mesh (Python , Lua).
  • Change: in Ultim8 version, more screen resolutions in the startup box.
  • Updated with Lua 5.1.4.
  • Updated Python 2.7.2 and Python 3.2.
  • Updated ZoomGPU (used by HYP_ZoomGPU lib, Python and Lua).
  • Updated oZone3D engine (GLEW 1.7.0, FreeImage 3.1.5).
  • Change: updated PhysX plugin with PhysX SDK
  • Removed: dump_lua_vm_stack attribute of scene node (XML).
  • Removed: ShowMouseCursor and HideMouseCursor functions from HYP_Input lib (Python and Lua).
  • Bugfix: fixed a multi-threading bug that hung GeeXLab during the shutdown stage from time to time.
[::Release 0.2.10 - 2011.02.01::]
  • New: added SetGpuProgramZPass() and SetShaderProgramZPass() to HYP_Material lib (Python / Lua).
  • New: added shader_program_name_z_pass attribute to material node (xml).
  • New: added active attribute to shadow_mapping element of scene node (xml).
  • New: added gpu_shader_z_pass and gpu_program_z_pass attributes to particle_system node (xml).
  • Bugfix: in HYP_Material.SetTexture().
  • Bugfix: in Check_AABB_Collision() and Check_BS_Collision() of HYP_Object lib (Lua).
  • Bugfix: outline fonts did not work with shadow mapping.
  • Bugfix: crash in HYP_Mesh.DoTweening() when meshes have not the same number of vertices (Lua only).
  • Bugfix: in HYP_Mesh.LoadQoobObject().
[::Release 0.2.9 - 2010.12.28::]
  • New: added support of LuaGL
  • New: added TwBarAddCaption(), TwBarAddSeparator(), TwBarAddVarRW_Boolean() to HYP_Utils lib (Lua)
  • New: added HYP_Mesh.Renormalize()
  • Bugfix: in AntTweakBar rendering
[::Release 0.2.8 - 2010.12.09::]
  • Bugfix: keyboard focus in fullscreen mode (for ShaderToyMark).
  • Bugfix: in multithreading management during the shutdown step (part 3!).
[::Release 0.2.7 - 2010.10.29::]
  • New: added LoadQoobObject() to HYP_Mesh (Python and Lua).
  • New: added Python 3.2 support.
  • New: added DrawTextUnicode(), DrawText2DUnicode(), DrawText3DUnicode(), BitmapFontRender3DUnicode() and BitmapFontRender2DUnicode() to HYP_Utils (Python, Lua).
  • New: added SetTextUnicode() to HYP_FontOutline lib (Python, Lua).
  • New: added Font2DRenderUnicode() to HYP_Renderer lib (Python, Lua).
  • Bugfix: in AntTweakBar when multitextured objects are rendered before.
[::Release 0.2.6 - 2010.10.01::]
  • New: added gamma_correction attribute to render_texture node.
  • New: added SetGammaCorrectionState() to HYP_Renderer (Python, Lua) and to HYP_RenderTexture (Lua only) libs.
  • New: added a new parameter to TwBarAddVarRW_Float(), TwBarAddVarRW_Integer(), TwBarAddVarRW_ColorRGBA() and TwBarAddVarRW_Vector3f() of HYP_Utils lib in order to set min, max and step of the tweaked variables.
  • New: added Create() to HYP_Texture lib in Python.
  • Bugfix: crash if an invalid render target was specified in a step of a post processing effect.
[::Release 0.2.5 - 2010.09.28::]
  • New: added double precision fp64 support to GPU program (in XML, and in Python / Lua).
  • New: use of OpenGL 4.1 compatibility profile if available.
  • New: added GetOpenGLModel(), GetOpenGLVendor(), GetOpenGLVersion(), GetOpenGLNumExtensions(), GetOpenGLExtensionName() and CheckOpenGLExtension() to HYP_ZoomGPU lib (Python and Lua).
  • New: added gpu_program and gpu_shader attributes to particle_system XML node.
  • Update: the PhysX plugin has been compiled with PhysX SDK.
  • Change: Python 2.6.6 is now the default Python version used. The GeeXLabCore with Python 2.7 is also available (GeeXLabCore_Py2.7.dll, you have to rename it).
  • Bugfix: HYP_Utils.BitmapFontRender3D() didn't work anymore if HYP_Utils.BitmapFontRender2D() was used before.
[::Release 0.2.4 - 2010.09.09::]
  • New: added the display of the line number of the Python syntax and runtime error. This line is displayed in the console and in the log file.
  • New: added TransformVector() to HYP_Object lib (Python / Lua).
  • New: added SetColorMask() to HYP_Renderer lib (Python / Lua).
  • Bugfix: in post processing step when using new GPU programs instead of old GPU shaders. In case of GPU program, the width and height of the render target were not passed as uniforms.
  • Bugfix: in HYP_Mesh.RenderSubsetFinish() in Python. HYP_Mesh.UseVertexAttribColor() was called in place of HYP_Mesh.RenderSubsetFinish()!
  • Bugfix: in multithreading during the shutdown step (part 2!).
  • Bugfix: added Clone() to HYP_Object (Python).
[::Release 0.2.3 - 2010.09.02::]
  • New: added a startup options dialog box (PRO version). You can display this box by setting to 1 the display_startup_options_dlgbox attribute in the config.gxml file.
  • Bugfix: in multithreading during the shutdown step.
  • Bugfix: in the initialization of the internal MP3 player of the binary scene importer (PRO version).
  • Bugfix: in HYP_FontOutline.SetTextCenteredState() function.
  • Bugfix: HYP_FontOutline was not included in Python.
[::Release 0.2.2 - 2010.08.31::]
  • New: added an internal MP3 player with new set of functions in HYP_Sound (MP3Player_xxx, Python and Lua).
  • New: embedded textures in XML scene file (texture node) are now supported (PRO version only).
  • New: added a tool in GeeXLab Tools menu: "Show current camera position and view direction"
  • New: added HYP_Utils.SetMainAppTitleBarText() (Python and Lua - PRO version only).
  • Change: Live Updaters (GPU programs and Python/Lua) are now a feature of the PRO version.
  • Bugfix: in shadow mapping. The shadow caster state of an object could be set by scripting.
  • Bugfix: improved GPU shaders live updater: now uniform variables declared in the XML file are properly updated when a GLSL shader is modified.
  • Bugfix: GPU shaders live updater: new GPU Program objects were not taken into account.
  • Bugfix: in lens flare engine.
[::Release 0.2.0 - 2010.08.18::]
  • New: added the support of PhysX fluids in the HYP_PhysX library (Python and Lua).
  • New: added a small subset of ZoomGPU functions in new HYP_ZoomGPU lib (Lua / Python).
  • New: added Sleep() to HYP_Utils. Sleep() allows to set the sleep delay of GeeXLab main rendering thread.
  • New: added Create() and SetFaceIndices() to HYP_Mesh lib.
  • New: added GetVectTo() to HYP_Object. This function is based on Blender KX_GameObject.getVectTo(other). See http://www.blender.org/documentation/249PythonDoc/GE/GameTypes.KX_GameObject-class.html#getVectTo for more information.
  • New: added support of OpenCTM mesh file format.
  • New: added a new GPU program node: gpu_program XML node, and HYP_GpuProgram Python and Lua library. The GPU program node uses OpenGL 2.0 API and should replace in the future the old shader_program node based on OpenGL 1.5.
  • New: added a simple internal 3D object viewer: just drop a 3D object in GeeXLab, and it will be displayed (as long as no scene has been loaded - once a scene has been loaded, the internal viewer is disabled).
  • New: RayCast() to HYP_Scene in Python.
  • New: added HYP_VertexPool Python / Lua lib.
  • New: added some Demomiak3D functions to HYP_Hud lib (Python and Lua): ProgressiveDisplay(), ProgressiveUnDisplayWithStretch() and DoFadeInOut().
  • Bugfix: fixed a bug in the init of script elapsed time.
  • Bugfix: the plane actor in PhysX was not properly transformed and the user could not set the initial position or orientation of the plane.
  • Bugfix: HYP_Model.ScaleVertices() in Python is now okay.
  • Bugfix: the last param in HYP_Mesh.CreatePlane function (Python version) was not used.
  • Change: HYP_PhysX.ConnectToVisualPhysXDebugger() has been renamed in HYP_PhysX.ConnectToPVD().
  • Change: updated with PhysX SDK
  • Change: updated with Assimp 1.1.700
  • Change: updated with Python 2.7.0
[::Release 0.1.15 - 2010.02.09::]
  • New: added AMDSetTessellationFactor() and AMDSetTessellationMode() to HYP_Renderer lib (Lua / Python).
  • New: added GetFaceMaterialIndex() and GetFaceMaterialId() to HYP_Mesh (Python / Lua).
  • New: added Translate() to Python version of HYP_Object.
  • New: added export_pack_source_code attribute in script node to force the export of script source code to binary scene. By default if a script is not embedded in XML, the script file is not packed in binary scene file.
  • Change: updated with Python 2.6.4
  • Bugfix: in HYP_Utils.SetDrawVertexNormalLengthFactor() in Python. Length was processed by an integer leading to very large factors.
  • Bugfix: in the W4K loader when there were several materials per mesh.
[::Release 0.1.14 - 2009.11.16::]
  • New: added float_depth_buffer attribute to shadow_mapping element of scene node. Setting this attribute to TRUE allows to use a 32-bit floating point depth buffer for shadow mapping.
  • Change: modified fullscreen management (now available in the free version).
  • Change: update Freeimage and OpenAL plugins with latest versions of respective libraries.
[::Release 0.1.13 - 2009.10.27::]
  • New: added depth_bits attribute to shadow_mapping element of scene node.
  • New: added in config file the possibility to initialize the number of bits for color, depth and stencil buffers.
  • Change: VSYNC is OFF by default.
  • Bugfix: fixed a crash in anti-aliasing on Radeon when MSAA was greater than max MSAA supported.
  • Bugfix: in the Python version of HYP_Utils::OpenUrl().
[::Release 0.1.12 - 2009.10.12::]
  • New: added mouse buttons (left and right) to hotkey node. Now you can attach a hotkey to mouse buttons.
  • New: added GetTextureId() to HYP_Material for Python API.
  • New: added an error message if run mode attribute of xml script node has an invalid value.
  • Bugfix: fixed a vicious (and very old...) bug in the bump mapping management: the tangent space vector was passed to the GPU shader in a way the bump mapping worked on NVIDIA and in some cases didn't work on ATI boards. Now tangent space vector is properly sent to the shader.
[::Release 0.1.11 - 2009.10.09::]
  • Change: in scene node. Element background_image is now called background and image attibute is now called filename.
  • Bugfix: regular texture not used in the step of a post_processing node. Only render textures were used.
[::Release 0.1.10 - 2009.10.07::]
  • New: added SetInstanceRenderState() and GetInstanceRenderState() to HYP_Mesh (Python / Lua).
  • Change: updated Python virtual machine with Python 2.6.3.
  • Change: when the 3D window is minimized (width=0 and height=0), the rendering of the scene is not done anymore (that includes post rendering scripts). That allows to fix a bug with PyOPenGL: when 3D window is minimized, post rendering scripts that contain PyOpenGL code have a runtime error...
  • Bugfix: fixed a crash in HYP_Object.Clone() (model and mesh).
  • Bugfix: fixed a small error in the update of model bounding volume.
[::Release 0.1.9 - 2009.10.04::]
  • New: added SetDrawVertexNormalState() and GetDrawVertexNormalState() and SetDrawVertexNormalLengthFactor() to HYP_Object (Python / Lua).
  • New: added display_vertex_normal attribute to xml mesh node.
  • New: added SetTexturingState(), GetTexturingState(), SetRenderState() and GetRenderState() to HYP_Material (Python / Lua).
  • New: added render and texturing attributes to material xml node.
  • New: added ComputeBoundingVolume() and UpdateBoundingVolume() to HYP_Object (Python / Lua).
  • New: added SetMouseWheelDefaultManagementState() to HYP_Input (Python / Lua).
  • New: added LoadSkyboxFromFiles() and SetSkyboxUVMapOp() to HYP_Scene.
  • New: added point_size and line_size attributes to mesh and model xml nodes.
  • New: added POINT value for polygon_mode attribute of mesh xml node.
  • Change: tangent space normals are not calculated anymore in HYP_Mesh.Createxxxx() functions. Now you have to call HYP_Object.ComputeTangentSpace() when you need.
  • Bugfix: bug in mesh sphere normals calculation.
  • Bugfix: bounding volumes were not correctly updated in object hierarchies.
  • Bugfix: due to the recent change in the way textures are added to materials, skybox loading code was not operational.
  • Bugfix: minor bugs in post processing management.
  • Bugfix: in doom like camera mode.

[::Release 0.1.8 - 2009.08.26::]
  • New: added RunSimulation(), StartEngine() and StopEngine() to HYP_PhysX lib.
  • New: added DropFilesGetNumFiles() and DropFilesGetFilenameByIndex() to HYP_Utils lib.
  • New: added new type of script: DRAG_N_DROP to manage user drag n drop.
  • New: added SharedVariableXXXX() functions to HYP_Utils library. Shared variables allows communication between Lua and Python scripts.
  • New: added in Tools menu a Live Scripting Box: you can send direct commands to the scene in Lua or Python.
  • New: added FlashWindow() to HYP_Utils.
  • New: added in Tools menu a small gadget: a color selector.
  • New: Live Updater for GPU shaders and Lua / Python scripts. You can launch them from the Tools menu.
  • New: added new types of script: TERMINATE. These scripts are executed at this end of the scene and allow to clean up resources.
  • New: added SetName() to HYP_Material lib.
  • Change: INIT and EXECUTE_ONCE are now the same thing: they are both initialization scripts.
  • Change: html documentation updated.
  • Bugfix: when a mesh plane was created along XY or YZ axis, vertex normals were wrong. The normals for the XZ plane were ok.
  • Bugfix: some materials were not freed leading to memory leaks. This problem occured with multiple scene reloads.
  • Bugfix: a zero-terminal missed in the buffers of script source codes (not possible!). This bug surfaced when loading binary scene files.

[::Release 0.1.7 - 2009.08.07::]
  • New: added AddTexture() and GetNumberOfTextures() to HYP_Material (Lua and Python). Use AddTexture() function in place of SetTexture().
  • New: added SetFOV_XY() and SetTwoFovPerspectiveProjection() to HYP_Camera (Lua and Python).
  • New: added SetFrustumCullingTestState() to HYP_Object (Lua and Python).
  • New: added UploadToGraphicsMemory() and GenerateMipmaps() to HYP_Texture (Lua and Python).
  • New: added UseVertexAttribTangent(), UseVertexAttribColor(), SetInstanceColor(), SetInstanceTripodParent(), InstancingTouchTripod(), InstancingTouchAllTripods(), RenderSubset(), RenderSubsetPrepare(), RenderSubsetFinish(), RenderSubsetGeometry() to HYP_Mesh.
  • Change: All HYP_Camera functions are now in Pyhton and in Lua.
  • Change: removed texture sampler limitation in materials. Now you can have as many textures you want in a material. But the number of textures you can apply depends on the graphics hardware.
  • Bugfix: AVI files with pixel formats other than BGR crashed.

[::Release 0.1.6 - 2009.07.14::]
  • Bugfix: model loaders: materials were always created even if they already existed.

[::Release 0.1.5 - 2009.07.06::]
  • Bugfix: in vector normalization...

[::Release 0.1.4 - 2009.07.03::]
  • New: tweaking bar functions in Lua and Python (HYP_Utils).
  • New: motion path management in Lua and Python (HYP_MotionPath).
  • New: input functions in Python (HYP_Input).

[::Release 0.1.1 - 2009.04.16::]
  • Change: recompiled with Python 2.6.2 support.

[::Release 0.1.0 - 2009.04.03::]
  • New: first official alpha version. No Python.
Random Projects

Posterization Effect
Posterization Effect

Bump Mapping Multiple Lights
Bump Mapping Multiple Lights

Depth Buffer Visualization
Depth Buffer Visualization

Random Code Samples

Render to texture
Render to texture

Model Cloning
Model Cloning

W4K Format Loading
W4K Format Loading

(C)2009-2010 Geeks3D.com