diff options
| author | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-01-16 23:02:32 +0100 |
|---|---|---|
| committer | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-01-16 23:02:32 +0100 |
| commit | 6b8af9cf83851c075c6c9514b1deaa931c2b19a4 (patch) | |
| tree | 428986b49c32e21d3f7a3c2dfa41858ae0153209 /09-september/tomcat/renderer/shader.h | |
Initial commit
Diffstat (limited to '09-september/tomcat/renderer/shader.h')
| -rw-r--r-- | 09-september/tomcat/renderer/shader.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/09-september/tomcat/renderer/shader.h b/09-september/tomcat/renderer/shader.h new file mode 100644 index 0000000..e4889f3 --- /dev/null +++ b/09-september/tomcat/renderer/shader.h @@ -0,0 +1,59 @@ +#ifndef SHADER_H +#define SHADER_H + +#include "../shared.h" + +typedef struct _Shader +{ + GLuint id; + char name[MAX_PATH_LENGTH]; + + /* Layout */ + + /* Program Attributes */ + GLint position; + GLint uv; + GLint normal; + GLint tangent; + + /* Program Uniforms */ + GLint totalTransform; + GLint modelToWorld; + GLint lightPosition; + GLint ambientLight; + GLint lightColor; + GLint lightAttenuation; + GLint World_eyePosition; + GLint Texture; + GLint Normal_Map; + + /* Program Multi Purpose Uniforms */ + GLint extra0; + GLint extra1; + GLint extra2; + GLint extra3; + GLint extra4; + GLint extra5; + + struct _Shader *_hash_next; + unsigned int _hash; +} Shader; + +/** Shaders **/ +extern Shader *shader_new(const char *name, const char *vertexShaderPath, const char *fragShaderPath); +extern Shader *shader_get(const char *name); +extern void shader_purge(Shader *shader); +/** **/ + +/** Shader functions **/ +extern GLint shader_get_uniform_location( Shader *s, const char *uniformName ); +extern GLint shader_get_attrib_location( Shader *s, const char *attributeName ); +extern void shader_set_uniform_mat4( Shader *s, const char *name, const float matrix[16] ); +extern void shader_set_uniform_float( Shader *s, const char *name, const float val ); +extern void shader_set_uniform_vec2( Shader *s, const char *name, const float vec[2] ); +extern void shader_set_uniform_vec3( Shader *s, const char *name, const float vec[3] ); +extern void shader_set_uniform_vec4( Shader *s, const char *name, const float vec[4] ); +extern void shader_set_uniform_int( Shader *s, const char *name, const int val ); +/** **/ + +#endif // SHADER_H |
