From 2b9e62c9e068cbea0ef2b9f83743f6d73e013de6 Mon Sep 17 00:00:00 2001 From: onelin Date: Sat, 22 Mar 2025 15:05:14 +0100 Subject: Revisiting rendering --- src/rendering/include/engine/rendering/rendering.h | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/rendering/include') 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); -- cgit v1.3