summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
authoromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-04-27 17:07:03 +1000
committeromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-04-27 17:07:03 +1000
commit93c8d40b39fe55a626e66d412450fb4cca1f993b (patch)
treec064a1729404100ea6bfa62c0960442a17791fdb /src/renderer
parentfc35df8e999521b8be7c44800f4ff4665df3254a (diff)
scene thoughts
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/cleanroom/immediate.c18
-rw-r--r--src/renderer/cleanroom/immediate.h (renamed from src/renderer/cleanroom/simda.h)12
-rw-r--r--src/renderer/cleanroom/types.h3
3 files changed, 28 insertions, 5 deletions
diff --git a/src/renderer/cleanroom/immediate.c b/src/renderer/cleanroom/immediate.c
new file mode 100644
index 0000000..8e4bf7e
--- /dev/null
+++ b/src/renderer/cleanroom/immediate.c
@@ -0,0 +1,18 @@
+#include "immediate.h"
+#include "maths.h"
+#include "primitives.h"
+#include "render.h"
+#include "types.h"
+
+void imm_draw_sphere(vec3 pos, f32 radius, vec4 colour) {
+ // Create the vertices
+ geometry_data geometry = geo_create_uvsphere(radius, 16, 16);
+ geo_set_vertex_colours(&geometry, colour);
+
+ // Upload to GPU
+ mat4 model = mat4_translation(pos);
+
+ // Set pipeline
+
+ // Draw
+} \ No newline at end of file
diff --git a/src/renderer/cleanroom/simda.h b/src/renderer/cleanroom/immediate.h
index d0b4794..6d93c53 100644
--- a/src/renderer/cleanroom/simda.h
+++ b/src/renderer/cleanroom/immediate.h
@@ -1,18 +1,20 @@
#pragma once
+#include "geometry.h"
#include "maths_types.h"
// 3. SIMA (simplified immediate mode api) / render.h
// - dont need to worry about uploading mesh data
// - very useful for debugging
-void imm_draw_cuboid();
+void imm_draw_cuboid(vec3 pos, quat rotation, f32x3 extents, vec4 colour);
void imm_draw_sphere(vec3 pos, f32 radius, vec4 colour);
void imm_draw_camera_frustum();
-static void imm_draw_model(
- const char* model_filepath); // tracks internally whether the model is loaded
-static void imm_draw_model(const char* model_filepath) {
+// static void imm_draw_model(
+// const char* model_filepath); // tracks internally whether the model is loaded
+
+// static void imm_draw_model(const char* model_filepath) {
// check that model is loaded
// if not loaded, load model and upload to gpu - LRU cache for models
// else submit draw call
-} \ No newline at end of file
+// } \ No newline at end of file
diff --git a/src/renderer/cleanroom/types.h b/src/renderer/cleanroom/types.h
index b18b5b8..7a6cfbd 100644
--- a/src/renderer/cleanroom/types.h
+++ b/src/renderer/cleanroom/types.h
@@ -96,8 +96,11 @@ typedef struct geometry_data {
vertex_darray vertices;
bool has_indices;
u32_darray indices;
+ vec3 colour; /** Optional: set vertex colours */
} geometry_data;
+void geo_set_vertex_colours(geometry_data* geo, vec4 colour);
+
typedef struct mesh {
buffer_handle vertex_buffer;
buffer_handle index_buffer;