summaryrefslogtreecommitdiff
path: root/src/gl/shader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gl/shader.c')
-rw-r--r--src/gl/shader.c201
1 files changed, 0 insertions, 201 deletions
diff --git a/src/gl/shader.c b/src/gl/shader.c
deleted file mode 100644
index d78b1ef..0000000
--- a/src/gl/shader.c
+++ /dev/null
@@ -1,201 +0,0 @@
-#include <stdbool.h>
-#include <glad/glad.h>
-#include <GLFW/glfw3.h>
-#include <lua.h>
-#include <lauxlib.h>
-#include "util/util.h"
-
-int gl_create_shader(lua_State *L);
-int gl_shader_set_source(lua_State *L);
-int gl_shader_compile(lua_State *L);
-int gl_shader_delete(lua_State *L);
-
-int gl_program_create(lua_State *L);
-int gl_program_attach_shader(lua_State *L);
-int gl_program_link(lua_State *L);
-int gl_program_use(lua_State *L);
-
-int gl_uniform_get_location(lua_State *L);
-int gl_uniform_1i(lua_State *L);
-int gl_uniform_1f(lua_State *L);
-int gl_uniform_3f(lua_State *L);
-int gl_uniform_4f(lua_State *L);
-
-int gl_uniform_matrix_4fv(lua_State *L);
-
-
-void setup_shader(lua_State *L, int gl_index)
-{
- struct honey_tbl_t tbl[] = {
- /* functions */
- H_FUNC("CreateShader", gl_create_shader),
- H_FUNC("ShaderSource", gl_shader_set_source),
- H_FUNC("CompileShader", gl_shader_compile),
- H_FUNC("DeleteShader", gl_shader_delete),
-
- H_FUNC("CreateProgram", gl_program_create),
- H_FUNC("AttachShader", gl_program_attach_shader),
- H_FUNC("LinkProgram", gl_program_link),
- H_FUNC("UseProgram", gl_program_use),
-
- H_FUNC("GetUniformLocation", gl_uniform_get_location),
- H_FUNC("Uniform1i", gl_uniform_1i),
- H_FUNC("Uniform1f", gl_uniform_1i),
- H_FUNC("Uniform3f", gl_uniform_1i),
- H_FUNC("Uniform4f", gl_uniform_4f),
-
- H_FUNC("UniformMatrix4fv", gl_uniform_matrix_4fv),
-
- /******** enums ********/
- /* shader types */
- H_INT("VERTEX_SHADER", GL_VERTEX_SHADER),
- H_INT("FRAGMENT_SHADER", GL_FRAGMENT_SHADER),
-
- H_END
- };
- create_table(L, tbl);
- append_table(L, gl_index, lua_gettop(L));
- lua_pop(L, 1);
-}
-
-
-int gl_create_shader(lua_State *L)
-{
- lua_Integer type = luaL_checkinteger(L, 1);
- lua_Integer shader = glCreateShader(type);
- lua_pushinteger(L, shader);
- return 1;
-}
-
-
-int gl_shader_set_source(lua_State *L)
-{
- lua_Integer shader = luaL_checkinteger(L, 1);
- const char *code = luaL_checkstring(L, 2);
- glShaderSource(shader, 1, (const GLchar * const*)&code, NULL);
- return 0;
-}
-
-
-int gl_shader_compile(lua_State *L)
-{
- lua_Integer shader = luaL_checkinteger(L, 1);
- glCompileShader(shader);
- int success; char log[1024];
- glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
- if (!success) {
- glGetShaderInfoLog(shader, 1024, NULL, log);
- luaL_error(L, "shader compilation failed: %s", log);
- }
- return 0;
-}
-
-
-int gl_shader_delete(lua_State *L)
-{
- lua_Integer shader = luaL_checkinteger(L, 1);
- glDeleteShader(shader);
- return 0;
-}
-
-
-int gl_program_create(lua_State *L)
-{
- lua_Integer program = glCreateProgram();
- lua_pushinteger(L, program);
- return 1;
-}
-
-
-int gl_program_attach_shader(lua_State *L)
-{
- lua_Integer program, shader;
- program = luaL_checkinteger(L, 1);
- shader = luaL_checkinteger(L, 2);
- glAttachShader(program, shader);
- return 0;
-}
-
-
-int gl_program_link(lua_State *L)
-{
- lua_Integer program = luaL_checkinteger(L, 1);
- glLinkProgram(program);
- int success; char log[1024];
- glGetProgramiv(program, GL_LINK_STATUS, &success);
- if (!success) {
- glGetProgramInfoLog(program, 1024, NULL, log);
- luaL_error(L, "shader linking failed: %s", log);
- }
- return 0;
-}
-
-
-int gl_program_use(lua_State *L)
-{
- lua_Integer program = luaL_checkinteger(L, 1);
- glUseProgram(program);
- return 0;
-}
-
-
-int gl_uniform_get_location(lua_State *L)
-{
- lua_Integer program = luaL_checkinteger(L, 1);
- const char *name = luaL_checkstring(L, 2);
- int location = glGetUniformLocation(program, (const GLchar*)name);
- lua_pushinteger(L, location);
- return 1;
-}
-
-
-int gl_uniform_1i(lua_State *L)
-{
- lua_Integer location, v0;
- location = luaL_checkinteger(L, 1);
- v0 = luaL_checkinteger(L, 2);
- glUniform1i(location, v0);
- return 0;
-}
-
-
-int gl_uniform_1f(lua_State *L)
-{
- int location = luaL_checkinteger(L, 1);
- double value = luaL_checknumber(L, 2);
- glUniform1f(location, value);
- return 0;
-}
-
-
-int gl_uniform_3f(lua_State *L)
-{
- int location = luaL_checkinteger(L, 1);
- double v0 = luaL_checknumber(L, 2);
- double v1 = luaL_checknumber(L, 3);
- double v2 = luaL_checknumber(L, 4);
- glUniform3f(location, v0, v1, v2);
- return 0;
-}
-
-
-int gl_uniform_4f(lua_State *L)
-{
- lua_Integer location = luaL_checkinteger(L, 1);
- lua_Number v0 = luaL_checknumber(L, 2);
- lua_Number v1 = luaL_checknumber(L, 3);
- lua_Number v2 = luaL_checknumber(L, 4);
- lua_Number v3 = luaL_checknumber(L, 5);
- glUniform4f(location, v0, v1, v2, v3);
- return 0;
-}
-
-
-int gl_uniform_matrix_4fv(lua_State *L)
-{
- lua_Integer location = luaL_checkinteger(L, 1);
- bool transpose = lua_toboolean(L, 2);
- float *value = lua_touserdata(L, 3);
- glUniformMatrix4fv(location, 1, transpose, value);
- return 0;
-}