summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-07-31 12:38:12 +1000
committeromniscient <17525998+omnisci3nce@users.noreply.github.com>2024-07-31 12:38:12 +1000
commit8550c5d41ee84bcbf5e355c5adb6659166e3eb62 (patch)
treefd944fbb3a0f4a7c71a7d1d23e4289950e346f17 /src
parentfa04ebc603a7bf742c64724ede23cfa010fb3c4c (diff)
start on immediate drawing
Diffstat (limited to 'src')
-rw-r--r--src/new_render/immdraw.c27
-rw-r--r--src/new_render/immdraw.h6
-rw-r--r--src/new_render/render.c12
3 files changed, 42 insertions, 3 deletions
diff --git a/src/new_render/immdraw.c b/src/new_render/immdraw.c
new file mode 100644
index 0000000..3d7cf7d
--- /dev/null
+++ b/src/new_render/immdraw.c
@@ -0,0 +1,27 @@
+#include "immdraw.h"
+#include "log.h"
+#include "primitives.h"
+#include "ral_common.h"
+#include "ral_impl.h"
+#include "ral_types.h"
+#include "render.h"
+#include "shader_layouts.h"
+
+void Immdraw_Init(Immdraw_Storage* storage) {
+ INFO("Immediate drawing initialisation");
+ // meshes
+ Geometry sphere_geo = Geo_CreateUVsphere(1.0, 8, 8);
+ storage->sphere = Mesh_Create(&sphere_geo, false);
+
+ // pipeline / material
+ ShaderData camera_data = { .get_layout = &Binding_Camera_GetLayout };
+ GraphicsPipelineDesc pipeline_desc = {
+ .debug_name = "Immediate Draw Pipeline",
+ .data_layouts = { camera_data },
+ .data_layouts_count = 1,
+
+ };
+ storage->colour_pipeline = GPU_GraphicsPipeline_Create(pipeline_desc, GPU_GetDefaultRenderpass());
+}
+
+void Immdraw_Sphere(Transform tf, f32 size, Vec4 colour, bool wireframe) {} \ No newline at end of file
diff --git a/src/new_render/immdraw.h b/src/new_render/immdraw.h
index add7b76..0d58375 100644
--- a/src/new_render/immdraw.h
+++ b/src/new_render/immdraw.h
@@ -5,8 +5,14 @@
#pragma once
#include "defines.h"
#include "maths_types.h"
+#include "ral_impl.h"
+#include "render_types.h"
typedef struct Immdraw_Storage {
+ Mesh plane;
+ Mesh cube;
+ Mesh sphere;
+ GPU_Pipeline* colour_pipeline;
} Immdraw_Storage;
// --- Public API
diff --git a/src/new_render/render.c b/src/new_render/render.c
index f83e573..fd5e1c2 100644
--- a/src/new_render/render.c
+++ b/src/new_render/render.c
@@ -5,9 +5,11 @@
#include "render.h"
#include <assert.h>
#include <glfw3.h>
+#include <stdio.h>
#include "camera.h"
#include "core.h"
#include "grid.h"
+#include "immdraw.h"
#include "log.h"
#include "maths.h"
#include "maths_types.h"
@@ -45,6 +47,7 @@ struct Renderer {
Shadow_Storage* shadows;
Terrain_Storage* terrain;
Grid_Storage* grid;
+ Immdraw_Storage* immediate;
// Text_Storage* text;
ResourcePools* resource_pools;
Mesh_pool mesh_pool;
@@ -133,17 +136,20 @@ bool Renderer_Init(RendererConfig config, Renderer* ren, GLFWwindow** out_window
// create our renderpasses
ren->shadows = malloc(sizeof(Shadow_Storage));
- // Shadow_Init(ren->shadows, 1024, 1024);
+ Shadow_Init(ren->shadows, 1024, 1024);
- ren->pbr = malloc(sizeof(PBR_Storage));
+ ren->pbr = calloc(1, sizeof(PBR_Storage));
PBR_Init(ren->pbr);
- ren->terrain = malloc(sizeof(Terrain_Storage));
+ ren->terrain = calloc(1, sizeof(Terrain_Storage));
Terrain_Init(ren->terrain);
ren->grid = calloc(1, sizeof(Grid_Storage));
Grid_Init(ren->grid);
+ ren->immediate = calloc(1, sizeof(Immdraw_Storage));
+ Immdraw_Init(ren->immediate);
+
// load default textures
ren->white_1x1 = TextureLoadFromFile("assets/textures/white1x1.png");
// TODO: black_1x1