diff options
Diffstat (limited to 'src/gl/shader.c')
-rw-r--r-- | src/gl/shader.c | 201 |
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; -} |