librairie GLua
GLua est une librairie open source qui offre au programmeurs LUA des classes et functions qui singent celles disponibles en GLSL, le « OpenGL Shading Language ».
GLua a été spécialement conçue comme librairie de base pour Demoniak3D, pour fournir un ensemble cohérent avec les shaders GLSL.
Contenu:
- vec3.lua : vecteurs et arithmétique 3D
- mat3.lua : matrice et arithmétique 3D
- vec4.lua : vecteurs et arithmétique 3D
- glsl.lua : fonctions génériques suivant les prototypes glsl comme définis dans le livre « OpenGL Shading Language » by Randi J. Rost
- test.X.lua : tests unitaires du module X
Utilisation et exemples:
L’utilisation des classes et fonctions est relativement simple.
Regardez les fichiers test.X.lua pour plus de détails et d’exemples.
Téléchargement:
GLua est disponible sur http://luaforge.net/projects/glua/ sous licence LGPL.
Détails d’implémentation:
- les classes sont basées sur class.lua, décrite ici: http://lua-users.org/wiki/SimpleLuaClasses
- glsl.lua offre des fonctions génériques fonctionnant sur les nombres et tables LUA, et donc avec toutes les classes matrice/vecteur. Elle utilise intensivement la « programmation fonctionnelle » pour ce faire:
- la fonction « apply » est définie comme suit:
--- 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 - ainsi, les fonctions peuvent facilement être définies pour accepter des nombres, vecteurs et tables:
function sin(rad)
return apply(math.sin,rad)
end
- la fonction « apply » est définie comme suit:
- le produit scalaire est implanté de 2 manières distinctes :
- dans l’opérateur « exposant » ^ des classes
- comme fonction générique dot(p1,p2) dans glsl.lua
Votre commentaire