This commit is contained in:
Abdelrahman Said 2024-09-14 00:04:31 +01:00
parent fb1b8457d6
commit 09e9f611f8
2 changed files with 15 additions and 22 deletions

View File

@ -13,8 +13,7 @@ struct shader_repo {
internal ShaderRepo g_repository = {0}; internal ShaderRepo g_repository = {0};
ShaderID register_shader(void *shader, VertexShader *vertex, ShaderID register_shader(void *shader, VertexShader *vertex, FragmentShader *fragment) {
FragmentShader *fragment) {
if (g_repository.count + 1 >= MAX_SHADER_COUNT) { if (g_repository.count + 1 >= MAX_SHADER_COUNT) {
return INVALID_SHADER; return INVALID_SHADER;
} }
@ -27,8 +26,7 @@ ShaderID register_shader(void *shader, VertexShader *vertex,
return (ShaderID){g_repository.count}; return (ShaderID){g_repository.count};
} }
VertexData run_vertex_shader(ShaderID shader, const VertexData *vert, u8 index, VertexData run_vertex_shader(ShaderID shader, const VertexData *vert, u8 index, const Model *model) {
const Model *model) {
if (IS_INVALID_SHADER(shader) || shader.id > g_repository.count || !vert || !model) { if (IS_INVALID_SHADER(shader) || shader.id > g_repository.count || !vert || !model) {
return (VertexData){0}; return (VertexData){0};
} }
@ -43,8 +41,8 @@ VertexData run_vertex_shader(ShaderID shader, const VertexData *vert, u8 index,
return vertex_func(shader_obj, vert, index, model); return vertex_func(shader_obj, vert, index, model);
} }
FragmentResult run_fragment_shader(ShaderID shader, const V3f *barycentric, FragmentResult run_fragment_shader(ShaderID shader, const V3f *barycentric, const Colour *colour,
const Colour *colour, const Model *model) { const Model *model) {
if (IS_INVALID_SHADER(shader) || shader.id > g_repository.count || !colour) { if (IS_INVALID_SHADER(shader) || shader.id > g_repository.count || !colour) {
return DISCARDED_FRAGMENT; return DISCARDED_FRAGMENT;
} }

View File

@ -29,17 +29,12 @@ struct fragment_result {
#define DISCARDED_FRAGMENT ((FragmentResult){.discard = true}) #define DISCARDED_FRAGMENT ((FragmentResult){.discard = true})
#define DISCARD_FRAGMENT(RESULT) (RESULT.discard) #define DISCARD_FRAGMENT(RESULT) (RESULT.discard)
typedef VertexData(VertexShader)(void *shader, const VertexData *vert, u8 index, typedef VertexData(VertexShader)(void *shader, const VertexData *vert, u8 index, const Model *model);
const Model *model); typedef FragmentResult(FragmentShader)(void *shader, const V3f *barycentric, const Colour *colour,
typedef FragmentResult(FragmentShader)(void *shader, const V3f *barycentric,
const Colour *colour,
const Model *model); const Model *model);
ShaderID register_shader(void *shader, VertexShader *vertex, ShaderID register_shader(void *shader, VertexShader *vertex, FragmentShader *fragment);
FragmentShader *fragment); VertexData run_vertex_shader(ShaderID shader, const VertexData *vert, u8 index, const Model *model);
VertexData run_vertex_shader(ShaderID shader, const VertexData *vert, u8 index, FragmentResult run_fragment_shader(ShaderID shader, const V3f *barycentric, const Colour *colour, const Model *model);
const Model *model);
FragmentResult run_fragment_shader(ShaderID shader, const V3f *barycentric,
const Colour *colour, const Model *model);
#endif // SHADER_H #endif // SHADER_H