#ifndef RENDER_H #define RENDER_H #include typedef enum { DENDRITIC_VOLTAGE, LAZENBYCOMP_LIQUID, LAZENBYCOMP_SMOOTH, POTRA, } FONTS_ENUM; typedef enum { R_ENTITY_STATIC, R_ENTITY_ANIMATED, R_ENTITY_INSTANCED // Particles, foliage, etc. } REntityType_e; typedef struct { REntityType_e type; uint32_t modelId; Matrix transform; union { struct { int activeAnim; float time; } anim; struct { Matrix *transforms; int instanceCount; } instancing; } data; } RenderEntity; typedef struct { RenderEntity *entities; int count; int capacity;//may use frame allocator instead to not have dynamic capacity } Scene; typedef struct { Model *models; int count; } ModelRegistry; typedef struct { ModelAnimation *animations; int count; } AnimationRegistry; typedef struct { Texture *tex; int count; } TextureRegistry; typedef struct { Font *font; int count; } FontRegistry; typedef struct { Sound *font; int count; } SoundRegistry; typedef struct { FontRegistry fonts; TextureRegistry textures; AnimationRegistry animations; ModelRegistry models; SoundRegistry sound; } Assets; typedef struct { Shader gbuffer; Shader deferred; Shader filter; } ShaderRD; typedef struct { unsigned int framebufferId; unsigned int normal_tex_id; unsigned int albedoSpec_tex_id; unsigned int depth_tex_id; } GBuffer; typedef struct { uint16_t height; uint16_t width; void* window; //RenderTexture rendtex; GBuffer gbuffer; Camera3D camera3d; Camera2D camera2d; ShaderRD shader; bool hud_on, debug_on; } RenderCtx; #endif