summaryrefslogtreecommitdiff
path: root/src/shader.h
diff options
context:
space:
mode:
authorsanine-a <sanine.not@pm.me>2020-11-29 15:16:42 -0600
committersanine-a <sanine.not@pm.me>2020-11-29 15:16:42 -0600
commit140666204191b218b72274d8d14921c89a6631fd (patch)
tree8436c81dda007e934f6b5cadd41789c677306b44 /src/shader.h
parent146d708c67172a05a62f944b16fdcb0dccc4713d (diff)
refactor: eliminate src subdirectories for honey files
Diffstat (limited to 'src/shader.h')
-rw-r--r--src/shader.h102
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