/** @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