diff options
Diffstat (limited to 'src/shader.h')
-rw-r--r-- | src/shader.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/shader.h b/src/shader.h new file mode 100644 index 0000000..e1c97b7 --- /dev/null +++ b/src/shader.h @@ -0,0 +1,102 @@ +/** @file shader.h + * + * @brief Functions to create, manipulate, and destroy GLSL shaders. + */ + +#ifndef HONEY_SHADER_H +#define HONEY_SHADER_H + +#include "common.h" + +extern int honey_shader_mt_ref; + +/** @brief Push the shader table to the lua stack. + */ +void honey_setup_shader(lua_State* L); + +/** @brief Create a new shader from source. + * + * @param[in] vertex_source The GLSL code for the vertex shader. + * @param[in] fragment_source The GLSL code for the fragment shader. + * + * @returns OpenGL handle for the compiled shader. + */ +int honey_shader_new(lua_State* L); + +/** @brief Set a shader as the current OpenGL shader. + * + * @param[in] shader The OpenGL handle to a shader, as generated by honey.shader.new + * + * @returns Nothing. + */ +int honey_shader_use(lua_State* L); + +/** @brief Set an integer uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_int(lua_State* L); + +/** @brief Set a float uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_float(lua_State* L); + +/** @brief Set a vec3 uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_vec3(lua_State* L); + +/** @brief Set a vec4 uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_vec4(lua_State* L); + +/** @brief Set a mat3 uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_mat3(lua_State* L); + +/** @brief Set a mat4 uniform on a shader. + * + * @param[in] shader The OpenGL shader handle. + * @param[in] name The name of the shader uniform as a string. + * @param[in] value The value to set the uniform to. + * + * @returns Nothing. + */ +int honey_shader_set_mat4(lua_State* L); + +/** @brief Delete a shader. + * + * @param[in] shader An OpenGL shader handle. + * + * @returns Nothing. + */ +int honey_shader_delete(lua_State* L); + +#endif |