summaryrefslogtreecommitdiff
path: root/src/rendering/include
diff options
context:
space:
mode:
authoronelin <oscar@nelin.dk>2025-03-22 14:05:14 +0000
committeronelin <oscar@nelin.dk>2025-03-22 14:05:14 +0000
commit2b9e62c9e068cbea0ef2b9f83743f6d73e013de6 (patch)
tree2e03d75cb1ace62f53bc59284c1b94bcb591d5f5 /src/rendering/include
parent5c2d20138f12dfd1de71632d6639b24ac3b21c7b (diff)
Revisiting rendering
Diffstat (limited to 'src/rendering/include')
-rw-r--r--src/rendering/include/engine/rendering/rendering.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index abfb8d9..c5f805e 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -80,8 +80,15 @@ typedef enum {
ShaderBuffer_DataType_f32 = 0b0010000000000, // 1024
ShaderBuffer_DataType_f64 = 0b0011000000000, // 1536
- ShaderBuffer_DataType_i32 = 0b0100000000000, // 2048
- ShaderBuffer_DataType_i64 = 0b0101000000000, // 2560
+ ShaderBuffer_DataType_i8 = 0b0100000000000, // 2048
+ ShaderBuffer_DataType_i16 = 0b0101000000000, // 2560
+ ShaderBuffer_DataType_i32 = 0b0110000000000, // 3072
+ ShaderBuffer_DataType_i64 = 0b0111000000000, // 3584
+
+ ShaderBuffer_DataType_u8 = 0b1000000000000, // 4096
+ ShaderBuffer_DataType_u16 = 0b1001000000000, // 4608
+ ShaderBuffer_DataType_u32 = 0b1010000000000, // 5120
+ ShaderBuffer_DataType_u64 = 0b1011000000000, // 5632
} ShaderBufferFlag;
typedef struct {
@@ -101,6 +108,13 @@ typedef struct {
void* data;
} ShaderBuffer;
+// SHADERBUFFER_NEW is a constructor that takes the
+// * type T, as one of f32, f64, i8, i16, i32, i64, u8, u16, u32, or u64.
+// * COUNT, number of elements in the buffer
+// * COMPONENTS, number of elements to be grouped together, ie. 3 for a vec3.
+// * DATA, the buffer (it is pointed to automatically)
+// * FLAGS, are low-level GL flags that hints the access frequency, the access
+// type, and what buffer type it is, such as "data" or an index buffer.
#define SHADERBUFFER_NEW(T, COUNT, COMPONENTS, DATA, FLAGS) \
(ShaderBuffer){ \
.buffername = 0, \
@@ -178,6 +192,11 @@ ShaderBufferFlag ShaderBuffer_get_access_type(u64 flags);
ShaderBufferFlag ShaderBuffer_get_type(u64 flags);
ShaderBufferFlag ShaderBuffer_get_data_type(u64 flags);
+/* Conversion to GL types */
+u32 ShaderBuffer_get_gl_type(u64 flags);
+u32 ShaderBuffer_get_gl_accesstype(u64 flags);
+u32 ShaderBuffer_get_gl_datatype(u64 flags);
+
/* Rendering functions */
void render_begin(Window* w);
void render_present(Window* w);