From 6b8af9cf83851c075c6c9514b1deaa931c2b19a4 Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Fri, 16 Jan 2026 23:02:32 +0100 Subject: Initial commit --- 09-september/tomcat/renderer/renderer.h | 86 +++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 09-september/tomcat/renderer/renderer.h (limited to '09-september/tomcat/renderer/renderer.h') diff --git a/09-september/tomcat/renderer/renderer.h b/09-september/tomcat/renderer/renderer.h new file mode 100644 index 0000000..791d65d --- /dev/null +++ b/09-september/tomcat/renderer/renderer.h @@ -0,0 +1,86 @@ +#ifndef RENDERER_H +#define RENDERER_H + +#include "../terrain.h" +#include "../util/array.h" +#include "vertex.h" +#include "../particles/particles.h" +#include "renderer_types.h" +#include "stdint.h" +#include "window.h" + +#define MAX_STRING_LENGTH 128 + +#define MAX_TEXTURES 2048 +#define MAX_MODELS 2048 +#define MAX_MESHES 2048 +#define MAX_SHADERS 32 + +/** Beginning of rendering functions **/ + +typedef struct _GlInfo +{ + char version[MAX_STRING_LENGTH]; + char shading_version[MAX_STRING_LENGTH]; + char vendor[MAX_STRING_LENGTH]; +} GlInfo; + +typedef struct _Renderer +{ + GlInfo info; + + Mesh *default_quad; + Shader *default_shader; + GLuint instance_vbo; + + Texture *textures[MAX_TEXTURES]; /* All loaded textures */ + int num_textures; + + Shader *shaders[MAX_SHADERS]; /* All loaded shaders */ + int num_shaders; + + Model *models[MAX_MODELS]; /* All created shapes */ + int num_models; + + Mesh *meshes[MAX_MESHES]; + int num_meshes; + + Window *window; + + GLuint shadow_fbo; /* Frame buffer for shadow mapping */ + GLuint shadow_map; /* Texture for rendering the shadow map (shadow mapping) */ + GLuint shadow_color; + GLint shadow_width; + GLint shadow_height; + + /** TEMP **/ + Mat4 shadow_mvp; + Vec3 inv_light_dir; + Shader *shadow_shader; + + /** TEMP **/ +} Renderer; +extern Renderer render; + +extern void Render_Init(Window *window); + +extern void Render_BeginFrame(); + +/* Load lights into the current shader program */ +extern void Render_LoadLights(Shader *shader, const Light *lights, int n); + +extern void Render_DrawEntity(Shader *shader, Mat4 *projectedViewMatrix, Entity *entity); +extern void Render_DrawTerrain(Shader *shader, Mat4 *projectedViewMatrix, Terrain *terrain); +extern void Render_DrawSky(Shader *shader, Mat4 *viewMatrix, Mat4 *projectionMatrix, Skybox *sky); +extern void Render_DrawParticles(Shader *shader, Mat4 *viewMatrix, Mat4 *projectionMatrix); + +extern void Render_EndFrame(); + +extern void Render_Shutdown(); + +extern Mat4 Entity_GetModelTransform(Entity* entity); +extern Vec2 Entity_GetTexOffset(Entity *entity); + +/** End of rendering functions **/ + +#endif // RENDERER_H -- cgit v1.2.3