summaryrefslogtreecommitdiff
path: root/src/rendering/include/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/rendering/include/engine')
-rw-r--r--src/rendering/include/engine/rendering/rendering.h24
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);