diff options
| author | onelin <oscar@nelin.dk> | 2025-03-22 14:52:57 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2025-03-22 14:58:29 +0000 |
| commit | f9a16f61f54993f3ae570b168ee15fc311229d91 (patch) | |
| tree | 915783dc0730b741b129b41288c9d26041b5dc3b /src/rendering/include | |
| parent | 2b9e62c9e068cbea0ef2b9f83743f6d73e013de6 (diff) | |
Brewing
Diffstat (limited to 'src/rendering/include')
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h index c5f805e..ffc6267 100644 --- a/src/rendering/include/engine/rendering/rendering.h +++ b/src/rendering/include/engine/rendering/rendering.h @@ -57,6 +57,12 @@ typedef struct { u32 program; } Shader; +typedef struct { + vec3 position; + vec3 size; + mat4 rotation; +} Transform; + typedef enum { ShaderBufferFlag_none = 0x00, @@ -72,7 +78,8 @@ typedef enum { // Next 3 bytes describe the buffer type ShaderBuffer_Type_vertexData = 0b0000001000000, // 64 - ShaderBuffer_Type_vertexIndex = 0b0000010000000, // 128 + ShaderBuffer_Type_vertexPosition = 0b0000010000000, // 128 + ShaderBuffer_Type_vertexIndex = 0b0000011000000, // 192 // Next 4 bytes are designated for the data type ShaderBuffer_DataType_nil = 0b0001000000000, // 512 @@ -147,6 +154,13 @@ typedef struct { } RenderObject; typedef struct { + // Index of the model in the RenderBatch models buffer + usize model_idx; + // The transformation of the model + Transform transorm; +} BatchModelInstance; + +typedef struct { // Size of models buffer usize msize; // number of models in the `models` buffer @@ -154,6 +168,13 @@ typedef struct { // Pointers to original models in this batch RenderObject **models; + // Size of instance buffer + usize inst_size; + // number of instances in the `instances` buffer + usize inst_count; + // Pointers to original models in this batch + BatchModelInstance *instances; + // The rendered destination object RenderObject renderobj; } RenderBatch; @@ -252,6 +273,7 @@ RenderObject RenderObject_new( int renderbatch_new(RenderBatch* renderbatch, usize count); int renderbatch_add(RenderBatch* renderbatch, RenderObject* obj); +i32 renderbatch_add_ext(RenderBatch* renderbatch, RenderObject* obj, Transform* t); int renderbatch_refresh(RenderBatch* renderbatch); Shader compile_shader(const char* file_path, const ShaderType shader_type); |
