From f9a16f61f54993f3ae570b168ee15fc311229d91 Mon Sep 17 00:00:00 2001 From: onelin Date: Sat, 22 Mar 2025 15:52:57 +0100 Subject: Brewing --- src/rendering/include/engine/rendering/rendering.h | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/rendering/include') 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 @@ -146,6 +153,13 @@ typedef struct { ShaderBuffer* buffer; } 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; @@ -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); -- cgit v1.3