Innovation ?

Tout ce qu’on peut inventer a été inventé. Charles Duell (directeur de la Commission des brevets américains, 1894)

Pro-G

Accélérateur d’Innovation

GLua library.

21 mars 2008 par Philippe Guglielmetti

GLua is an open source library which provides LUA programmers with classes and functions that mimic those available in GLSL, the OpenGL Shading Language.

GLua was especially designed as a base library for the Demoniak3D real-time engine, as it provides a consistent framework with GLSL shaders.
Lire la suite »

Dans 3D, programmation | Comments Off

GLua library

20 mars 2008 par Philippe Guglielmetti

Contents:

  • vec3.lua : 3D vectors and arithmetic
  • mat3.lua : 3D matrix and arithmetic
  • vec4.lua : 4D vectors and arithmetic
  • glsl.lua : generic functions following glsl prototypes as defined in book “OpenGL Shading Language” by Randi J. Rost
  • test.X.lua : unit test of module X

Usage & Samples:

Usage of the classes and functions is pretty straightforward.

Check the test.X.lua modules for more details or examples

Download:

GLua is available on http://luaforge.net/projects/glua/ under LGPL licence.

Implementation details:

  • the classes are based on class.lua, described on http://lua-users.org/wiki/SimpleLuaClasses
  • glsl.lua offers generic function that work on LUA numbers and tables, and therefore all vector / matrix classes. It makes extensive use of functional programming to achieve this:
    • the “apply” function is defined as follows:
      --- applies a function to a table of parameters
      -- @param f : function to apply to each element in v
      -- @param v : (vector of) parameter(s) to f function
      -- @return : (vector of) result(s) of f(v)
      function apply(f,v)
      if type(v)=="number" then return f(v) end
      if type(v)=="table" then
      local res={}
      for i,x in ipairs(v) do res[i]=f(x) end
      return res
      end
      error(”apply “..f..”(”..type(v)..”) not implemented”)
      end
    • then, functions can easily be defined to support numbers, vectors, or matrices:
      function sin(rad)
      return apply(math.sin,rad)
      end
  • dot product is implemented in 2 different ways :
    • through the “power” ^ operator in classes
    • as a generic dot(p1,p2) function in glsl.lua

Dans 3D, programmation | Pas de commentaire »

LabView

5 mars 2008 par Philippe Guglielmetti

New post in english.

Dans commande, instrumentation, programmation, simulation, temps réel | Pas de commentaire »