summaryrefslogtreecommitdiff
path: root/src/rendering/include/engine
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-02-12 08:47:11 +0000
committer0scar <qgt268@alumni.ku.dk>2024-02-12 15:37:24 +0000
commiteba4a1312c50bbebca2c50f6566d16b41ea7fb9d (patch)
tree1b4626786dc5b65d5d1109e04207d373d87c3b7e /src/rendering/include/engine
parent63e6c8fe178082f3ab7ff46f4c7f7216626723bf (diff)
Add shader resource management
Diffstat (limited to 'src/rendering/include/engine')
-rw-r--r--src/rendering/include/engine/rendering/rendering.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index 7b67248..ed066d6 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -28,8 +28,20 @@ typedef struct {
v2_i32 coord;
} Sprite;
+typedef enum {
+ //GL_COMPUTE_SHADER, GL_VERTEX_SHADER, GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER, GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER
+ Shader_Error,
+ Shader_Program, /* Collection of shaders */
+ Shader_Vertex,
+ Shader_Tessellation,
+ Shader_Geometry,
+ Shader_Fragment,
+ Shader_Compute,
+} ShaderType;
+
typedef struct {
/* Shader proram */
+ ShaderType type;
u32 program;
} Shader;
@@ -71,7 +83,7 @@ typedef enum {
RenderDrawCallType_Sprite,
RenderDrawCallType_Model,
} RenderDrawCallType;
-//
+
typedef struct {
RenderDrawCallType type;
union {
@@ -90,6 +102,13 @@ typedef struct {
} data;
} RenderDrawCall;
-RenderObject RenderObject_new(float* model, usize sz, float* uv, usize uv_sz);
+RenderObject RenderObject_new(float* model, Shader* shader, usize sz, float* uv, usize uv_sz);
+
+Shader compile_shader(const char* file_path, const ShaderType shader_type);
+Shader compose_shader(Shader *shaders, usize shaders_len);
+
+u32 ComposeShader(u32 *shaders, usize shaders_len);
+
+ShaderType guess_shadertype_from_filename(const char *restrict fname);
#endif