Quick Links
> Homepage
|-- Overview
|-- Download
|-- Screenshots
|-- Community

> Code Sample Pack

> Reference Guide

> Changelog

> Overview of GLSL Hacker
> Live Coding
> Hack your first GLSL Code
> Moon3D


GLSL Hacker Articles

> Compute shaders on Radeon
> Distance functions in GLSL
> GLSL Interpolation Qualifiers
> Tessellation Spacing Modes
> Normal Visualizer with GS
> 3D Surface Plots
> Normal Mapping
> Circle and Disc in GLSL
> PhysX 3 Flag Demo
> GLSL Hacker on Raspberry Pi
GLSL Hacker

What is GLSL Hacker?

GLSL Hacker is cross-platform tool for fast real time 3D prototyping and coding. GLSL Hacker is available on all popular desktop platforms: Windows, Linux and OSX (64-bit on all platforms).

GLSL Hacker platforms: Windows, Linux, MacOSX

GLSL Hacker is based on widely used standards such as GLSL (OpenGL Shading Language), Lua and Python. In a word, GLSL Hacker can be seen as a highly revamped version of GeeXLab.

OpenGL Python Lua

Compared to GeeXLab, GLSL Hacker offers a programming interface (or API) with a lower level of abstraction. This low level API requires more lines of codes but allows a better control of the rendering. GLSL Hacker API has also high level functions like the loading of 3D models or textures. Here is a code snippet:

Objects creation:
camera = gh_camera.create_persp(60, 1.333, 0.1, 1000.0)
ground_tex = gh_texture.create_from_file("ground.jpg", 0, 0)
ground_mesh = gh_mesh.create_plane(100, 100, 10, 10)

-- texture_gpu_prog is a GLSL program defined in XML.
glsl_prog = gh_node.getid("texture_gpu_prog")

Scene rendering:
gh_renderer.clear_color_depth_buffers(0, 0, 0, 1.0, 1.0)
gh_camera.bind(camera)
gh_gpu_program.bind(glsl_prog)
gh_texture.bind(ground_tex, 0)
gh_object.render(ground_mesh)

Sounds easy, isn'it? It's because GLSL Hacker is easy to use! And with higher level libraries like Moon3D, even a kid can code with GLSL Hacker ;)

The best way to learn GLSL Hacker is to study and hack the demos provided in the Code Sample Pack and to test them in GLSL Hacker.



How does GLSL Hacker work?

GLSL Hacker works like an internet browser: you load (or drag'n'drop) a source code file (the 3D scene) and GLSL Hacker plays it. That's all.

GLSL Hacker working

The entry point is a XML file. This file simply holds the different scripts (Lua , Python, GLSL) that make up the 3D scene. There are several types of scripts:

  • INIT scripts: these scripts are executed once at the beginning of the scene.
  • FRAME scripts: these scripts are executed at every frame.
  • SIZE scripts: these scripts are executed when the window is reszied.
  • DRAG_N_DROP scripts: these scripts are executed when a drop file occurs (currently this feature is only available under Windows).
  • TERMINATE scripts: these scripts are executed at the end of the demo and are usually used to clean up resources.

A scene can have one or several scripts of the same type. What's more, Lua and Python scripts can be present in the same scene. For example, a scene with two INIT scripts (one Lua, and one Python), three FRAME scripts (two Lua and one Python) is perfectly valid.

GLSL Hacker XML, Lua and Python scripts

The following diagram shows when the different scripts are executed:

GLSL Hacker scripts execution

The execution order of scripts is defined by the order of scripts in the XML file.



Scene Nodes

A scene in GLSL Hacker is made up of nodes. Nearly everything is node: a GLSL program, a texture, a mesh.

GLSL Hacker scene nodes

The different scripts have an unique goal: interacting with scene nodes. Scripts can be used to create or destroy nodes, to set parameters, to update parameters and to render nodes. Renderable nodes are the Object nodes. You can not render a GPU program (a GLSL program) but you can render a mesh.




(C)2012-2013 Geeks3D