Lua Shaders
The API allows the creation of Shader objects from within Lua. The 'Shader.lua()' constructor takes five arguments:
- The vertex shader code (a lua function).
- The fragment shader code (a lua function).
- A set of numerical flags or 0 if none.
- An array of uniforms/constants descriptors.
- An array of attributes descriptors.
With Lua Shaders, it's assumed that the code is within the vertex and fragment parameter functions.
Lua Shader Functions:
(Please note that these functions may or may not be available, the Lua shader is still under development)
Restrictions:
Don't rely on anything external, basically no globals except for attributes, uniforms and varying.
- No Do..While
- No Repeat..Until
- No tables. The only allowed form of table lookup is for vector component swizzling and access to uniform arrays
- No strings, userdata, etc. Basically only numbers are supported.
- Mind your types! Although lua is not a typed language, shaders need types.
- Always check on all platforms: Gideros will translate your lua code to GLSL,HLSL or MSL code, but some platforms are more strict than others about what you can write, or how many arguments a common function is supposed to take.