aboutsummaryrefslogtreecommitdiff
path: root/09-september/tomcat/renderer/shader.h
diff options
context:
space:
mode:
authorThomas Guillermo Albers Raviola <thomas@thomaslabs.org>2026-01-16 23:02:32 +0100
committerThomas Guillermo Albers Raviola <thomas@thomaslabs.org>2026-01-16 23:02:32 +0100
commit6b8af9cf83851c075c6c9514b1deaa931c2b19a4 (patch)
tree428986b49c32e21d3f7a3c2dfa41858ae0153209 /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.h59
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