diff options
Diffstat (limited to 'src/systems')
-rw-r--r-- | src/systems/grid.c | 84 | ||||
-rw-r--r-- | src/systems/grid.h | 21 | ||||
-rw-r--r-- | src/systems/input.c | 105 | ||||
-rw-r--r-- | src/systems/input.h | 53 | ||||
-rw-r--r-- | src/systems/keys.h | 59 | ||||
-rw-r--r-- | src/systems/screenspace.h | 53 | ||||
-rw-r--r-- | src/systems/terrain.c | 204 | ||||
-rw-r--r-- | src/systems/terrain.h | 72 | ||||
-rw-r--r-- | src/systems/text.c | 1 | ||||
-rw-r--r-- | src/systems/text.h | 53 |
10 files changed, 0 insertions, 705 deletions
diff --git a/src/systems/grid.c b/src/systems/grid.c deleted file mode 100644 index e907865..0000000 --- a/src/systems/grid.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "grid.h" -#include "file.h" -#include "log.h" -#include "maths.h" -#include "maths_types.h" -#include "primitives.h" -#include "ral_common.h" -#include "ral_impl.h" -#include "ral_types.h" -#include "render.h" -#include "render_types.h" -#include "shader_layouts.h" - -void Grid_Init(Grid_Storage* storage) { - INFO("Infinite Grid initialisation"); - Geometry plane_geo = Geo_CreatePlane(f32x2(1.0, 1.0), 1, 1); - Mesh plane_mesh = Mesh_Create(&plane_geo, true); - storage->plane_vertices = plane_mesh.vertex_buffer; - - u32 indices[6] = { 5, 4, 3, 2, 1, 0 }; - storage->plane_indices = - GPU_BufferCreate(6 * sizeof(u32), BUFFER_INDEX, BUFFER_FLAG_GPU, &indices); - - GPU_RenderpassDesc rpass_desc = { - .default_framebuffer = true, - }; - storage->renderpass = GPU_Renderpass_Create(rpass_desc); - - arena scratch = arena_create(malloc(1024 * 1024), 1024 * 1024); - - Str8 vert_path = str8("assets/shaders/grid.vert"); - Str8 frag_path = str8("assets/shaders/grid.frag"); - str8_opt vertex_shader = str8_from_file(&scratch, vert_path); - str8_opt fragment_shader = str8_from_file(&scratch, frag_path); - if (!vertex_shader.has_value || !fragment_shader.has_value) { - ERROR_EXIT("Failed to load shaders from disk") - } - - ShaderDataLayout camera_data = Binding_Camera_GetLayout(NULL); - - GraphicsPipelineDesc pipeline_desc = { - .debug_name = "Infinite grid pipeline", - .vertex_desc = static_3d_vertex_description(), - .data_layouts = { camera_data }, - .data_layouts_count = 1, - .vs = { - .debug_name = "Grid vertex shader", - .filepath = vert_path, - .code = vertex_shader.contents, - }, - .fs = { - .debug_name = "Grid fragment shader", - .filepath = frag_path, - .code = fragment_shader.contents, - }, - .wireframe = false, - }; - storage->pipeline = GPU_GraphicsPipeline_Create(pipeline_desc, storage->renderpass); -} - -void Grid_Draw() { - Grid_Storage* grid = Render_GetGridStorage(); - Grid_Execute(grid); -} - -void Grid_Execute(Grid_Storage* storage) { - RenderScene* scene = Render_GetScene(); - GPU_CmdEncoder* enc = GPU_GetDefaultEncoder(); - GPU_CmdEncoder_BeginRender(enc, storage->renderpass); - GPU_EncodeBindPipeline(enc, storage->pipeline); - Mat4 view, proj; - u32x2 dimensions = GPU_Swapchain_GetDimensions(); - Camera camera = scene->camera; - Camera_ViewProj(&camera, (f32)dimensions.x, (f32)dimensions.y, &view, &proj); - Binding_Camera camera_data = { .view = view, - .projection = proj, - .viewPos = vec4(camera.position.x, camera.position.y, - camera.position.z, 1.0) }; - GPU_EncodeBindShaderData(enc, 0, Binding_Camera_GetLayout(&camera_data)); - GPU_EncodeSetVertexBuffer(enc, storage->plane_vertices); - GPU_EncodeSetIndexBuffer(enc, storage->plane_indices); - GPU_EncodeDrawIndexedTris(enc, 6); - GPU_CmdEncoder_EndRender(enc); -} diff --git a/src/systems/grid.h b/src/systems/grid.h deleted file mode 100644 index d8bc567..0000000 --- a/src/systems/grid.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "ral_impl.h" -#include "ral_types.h" - -typedef struct Grid_Storage { - GPU_Renderpass* renderpass; - GPU_Pipeline* pipeline; - BufferHandle plane_vertices; - BufferHandle plane_indices; -} Grid_Storage; - -// --- Public API -PUB void Grid_Init(Grid_Storage* storage); -// void Grid_Shutdown(Grid_Storage* storage); -PUB void Grid_Draw(); - -// --- Internal -void Grid_Execute(Grid_Storage* storage); -// typedef struct GridUniforms {} GridUniforms; -// ShaderDataLayout GridUniforms_GetLayout(void* data);
\ No newline at end of file diff --git a/src/systems/input.c b/src/systems/input.c deleted file mode 100644 index c3af96a..0000000 --- a/src/systems/input.c +++ /dev/null @@ -1,105 +0,0 @@ -#include "input.h" - -#include <assert.h> -#include <glfw3.h> -#include <string.h> - -#include "keys.h" -#include "log.h" - -static Input_State* g_input; // Use a global to simplify caller code - -bool Input_Init(Input_State* input, GLFWwindow* window) { - INFO("Input init"); - memset(input, 0, sizeof(Input_State)); - - input->window = window; - // Set everything to false. Could just set memory to zero but where's the fun in that - for (int i = KEYCODE_SPACE; i < KEYCODE_MAX; i++) { - input->depressed_keys[i] = false; - input->just_pressed_keys[i] = false; - input->just_released_keys[i] = false; - } - - g_input = input; - - assert(input->mouse.x_delta == 0); - assert(input->mouse.y_delta == 0); - - INFO("Finish input init"); - return true; -} - -void Input_Shutdown(Input_State* input) {} - -void Input_Update(Input_State* input) { - glfwPollEvents(); - // --- update keyboard input - - // if we go from un-pressed -> pressed, set as "just pressed" - // if we go from pressed -> un-pressed, set as "just released" - for (int i = KEYCODE_SPACE; i < KEYCODE_MAX; i++) { - bool new_state = false; - if (glfwGetKey(input->window, i) == GLFW_PRESS) { - new_state = true; - } else { - new_state = false; - } - if (!input->depressed_keys[i] == false && new_state) { - input->just_pressed_keys[i] = true; - } else { - input->just_pressed_keys[i] = false; - } - - if (input->depressed_keys[i] && !new_state) { - input->just_released_keys[i] = true; - } else { - input->just_released_keys[i] = false; - } - - input->depressed_keys[i] = new_state; - } - - // --- update mouse input - - // cursor position - f64 current_x, current_y; - glfwGetCursorPos(input->window, ¤t_x, ¤t_y); - i32 quantised_cur_x = (i32)current_x; - i32 quantised_cur_y = (i32)current_y; - - mouse_state new_mouse_state = { 0 }; - new_mouse_state.x = quantised_cur_x; - new_mouse_state.y = quantised_cur_y; - new_mouse_state.x_delta = quantised_cur_x - input->mouse.x; - new_mouse_state.y_delta = quantised_cur_y - input->mouse.y; - - // buttons - int left_state = glfwGetMouseButton(input->window, GLFW_MOUSE_BUTTON_LEFT); - int right_state = glfwGetMouseButton(input->window, GLFW_MOUSE_BUTTON_RIGHT); - - for (int i = 0; i < 3; i++) { - new_mouse_state.prev_pressed_states[i] = input->mouse.cur_pressed_states[i]; - } - new_mouse_state.cur_pressed_states[MOUSEBTN_LEFT] = left_state == GLFW_PRESS; - new_mouse_state.cur_pressed_states[MOUSEBTN_RIGHT] = right_state == GLFW_PRESS; - - // this was dumb! need to also check button state changes lol - // if (new_mouse_state.x != input->mouse.x || new_mouse_state.y != input->mouse.y) - // TRACE("Mouse (x,y) = (%d,%d)", input->mouse.x, input->mouse.y); - - input->mouse = new_mouse_state; -} - -bool key_is_pressed(keycode key) { return g_input->depressed_keys[key]; } - -bool key_just_pressed(keycode key) { return g_input->just_pressed_keys[key]; } - -bool key_just_released(keycode key) { return g_input->just_released_keys[key]; } - -bool MouseBtn_Held(MouseBtn btn) { - assert(btn < 3); - return g_input->mouse.prev_pressed_states[btn] && g_input->mouse.cur_pressed_states[btn]; -} - -mouse_state Input_GetMouseState() { return g_input->mouse; }
\ No newline at end of file diff --git a/src/systems/input.h b/src/systems/input.h deleted file mode 100644 index c3b2500..0000000 --- a/src/systems/input.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @brief - */ -#pragma once - -#include "defines.h" -#include "keys.h" - -struct GLFWWindow; - -typedef enum MouseBtn { - MOUSEBTN_LEFT = 0, - MOUSEBTN_RIGHT = 1, - MOUSEBTN_MIDDLE = 2, -} MouseBtn; - -typedef struct mouse_state { - i32 x; - i32 y; - i32 x_delta; - i32 y_delta; - bool prev_pressed_states[3]; - bool cur_pressed_states[3]; -} mouse_state; - -typedef struct Input_State { - struct GLFWwindow* window; - mouse_state mouse; - bool depressed_keys[KEYCODE_MAX]; - bool just_pressed_keys[KEYCODE_MAX]; - bool just_released_keys[KEYCODE_MAX]; -} Input_State; - -/** @brief `key` is currently being held down */ -PUB bool key_is_pressed(keycode key); - -/** @brief `key` was just pressed */ -PUB bool key_just_pressed(keycode key); - -/** @brief `key` was just released */ -PUB bool key_just_released(keycode key); - -// TODO: right btn as well -PUB bool MouseBtn_Held(MouseBtn btn); - -// --- Lifecycle - -PUB bool Input_Init(Input_State* input, struct GLFWwindow* window); -PUB void Input_Shutdown(Input_State* input); - -PUB void Input_Update(Input_State* state); // must be run once per main loop - -PUB mouse_state Input_GetMouseState();
\ No newline at end of file diff --git a/src/systems/keys.h b/src/systems/keys.h deleted file mode 100644 index 6082a59..0000000 --- a/src/systems/keys.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once - -typedef enum keycode { - // TODO: add all keycodes - KEYCODE_SPACE = 32, - KEYCODE_APOSTROPHE = 39, - KEYCODE_COMMA = 44, - KEYCODE_MINUS = 45, - KEYCODE_PERIOD = 46, - KEYCODE_SLASH = 47, - KEYCODE_0 = 48, - KEYCODE_1 = 49, - KEYCODE_2 = 50, - KEYCODE_3 = 51, - KEYCODE_4 = 52, - KEYCODE_5 = 53, - KEYCODE_6 = 54, - KEYCODE_7 = 55, - KEYCODE_8 = 56, - KEYCODE_9 = 57, - KEYCODE_SEMICOLON = 59, - KEYCODE_EQUAL = 61, - KEYCODE_A = 65, - KEYCODE_B = 66, - KEYCODE_C = 67, - KEYCODE_D = 68, - KEYCODE_E = 69, - KEYCODE_F = 70, - KEYCODE_G = 71, - KEYCODE_H = 72, - KEYCODE_I = 73, - KEYCODE_J = 74, - KEYCODE_K = 75, - KEYCODE_L = 76, - KEYCODE_M = 77, - KEYCODE_N = 78, - KEYCODE_O = 79, - KEYCODE_P = 80, - KEYCODE_Q = 81, - KEYCODE_R = 82, - KEYCODE_S = 83, - KEYCODE_T = 84, - KEYCODE_U = 85, - KEYCODE_V = 86, - KEYCODE_W = 87, - KEYCODE_X = 88, - KEYCODE_Y = 89, - KEYCODE_Z = 90, - - KEYCODE_ESCAPE = 256, - KEYCODE_ENTER = 257, - KEYCODE_TAB = 258, - KEYCODE_BACKSPACE = 259, - KEYCODE_KEY_RIGHT = 262, - KEYCODE_KEY_LEFT = 263, - KEYCODE_KEY_DOWN = 264, - KEYCODE_KEY_UP = 265, - KEYCODE_MAX = 348 -} keycode; diff --git a/src/systems/screenspace.h b/src/systems/screenspace.h deleted file mode 100644 index 5f0c579..0000000 --- a/src/systems/screenspace.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @brief Drawing shapes for UI or other reasons in screenspace - */ -#pragma once - -#include "colours.h" -#include "darray.h" -#include "defines.h" -#include "render_types.h" - -/** A draw_cmd packet for rendering a rectangle */ -struct draw_rect { - i32 x, y; // signed ints so we can draw things offscreen (e.g. a window half inside the viewport) - u32 width, height; - rgba colour; - // TODO: border colour, gradients -}; - -/** A draw_cmd packet for rendering a circle */ -struct draw_circle { - i32 x, y; - f32 radius; - rgba colour; -}; - -/** @brief Tagged union that represents a UI shape to be drawn. */ -typedef struct draw_cmd { - enum { DRAW_RECT, CIRCLE } draw_cmd_type; - union { - struct draw_rect rect; - struct draw_circle circle; - }; -} draw_cmd; - -KITC_DECL_TYPED_ARRAY(draw_cmd) - -typedef struct screenspace_state { - u32 rect_vbo; - u32 rect_vao; - // shader rect_shader; - draw_cmd_darray* draw_cmd_buf; -} screenspace_state; - -// --- Lifecycle -bool screenspace_2d_init(screenspace_state* state); -void screenspace_2d_shutdown(screenspace_state* state); -/** Drains the draw_cmd buffer and emits draw calls to render each one */ -void screenspace_2d_render(screenspace_state* state); - -struct core; - -/** @brief Draw a rectangle to the screen. (0,0) is the bottom-left */ -void draw_rectangle(struct core* core, rgba colour, i32 x, i32 y, u32 width, u32 height);
\ No newline at end of file diff --git a/src/systems/terrain.c b/src/systems/terrain.c deleted file mode 100644 index 069000e..0000000 --- a/src/systems/terrain.c +++ /dev/null @@ -1,204 +0,0 @@ -/** - * @brief - */ -#include "terrain.h" -#include <assert.h> -#include "file.h" -#include "glad/glad.h" -#include "log.h" -#include "maths.h" -#include "mem.h" -#include "ral_common.h" -#include "ral_impl.h" -#include "ral_types.h" -#include "render.h" -#include "shader_layouts.h" -#include "str.h" - -#define TERRAIN_GRID_U 505 -#define TERRAIN_GRID_V 505 - -bool Terrain_Init(Terrain_Storage* storage) { - storage->grid_dimensions = u32x2(TERRAIN_GRID_U, TERRAIN_GRID_V); - storage->hmap_loaded = false; - - GPU_RenderpassDesc rpass_desc = { - .default_framebuffer = true, - }; - storage->hmap_renderpass = GPU_Renderpass_Create(rpass_desc); - - arena scratch = arena_create(malloc(1024 * 1024), 1024 * 1024); - - Str8 vert_path = str8("assets/shaders/terrain.vert"); - Str8 frag_path = str8("assets/shaders/terrain.frag"); - str8_opt vertex_shader = str8_from_file(&scratch, vert_path); - str8_opt fragment_shader = str8_from_file(&scratch, frag_path); - if (!vertex_shader.has_value || !fragment_shader.has_value) { - ERROR_EXIT("Failed to load shaders from disk") - } - - ShaderDataLayout camera_data = Binding_Camera_GetLayout(NULL); - ShaderDataLayout terrain_data = TerrainUniforms_GetLayout(NULL); - - GraphicsPipelineDesc pipeline_desc = { - .debug_name = "terrain rendering pipeline", - .vertex_desc = static_3d_vertex_description(), - .data_layouts = { camera_data, terrain_data }, - .data_layouts_count = 2, - .vs = { - .debug_name = "terrain vertex shader", - .filepath = vert_path, - .code = vertex_shader.contents, - }, - .fs = { - .debug_name = "terrain fragment shader", - .filepath = frag_path, - .code = fragment_shader.contents, - }, - .wireframe = false, - }; - storage->hmap_pipeline = GPU_GraphicsPipeline_Create(pipeline_desc, storage->hmap_renderpass); - - storage->texture = TextureLoadFromFile("assets/demo/textures/grass2.png"); - - return true; -} - -void Terrain_Shutdown(Terrain_Storage* storage) {} - -void Terrain_LoadHeightmap(Terrain_Storage* storage, Heightmap hmap, f32 grid_scale, - bool free_on_upload) { - // If there's a current one we will delete it and reallocate buffers - if (storage->hmap_loaded) { - GPU_BufferDestroy(storage->vertex_buffer); - GPU_BufferDestroy(storage->index_buffer); - } - - u32 width = hmap.pixel_dimensions.x; - u32 height = hmap.pixel_dimensions.y; - storage->grid_scale = grid_scale; - - size_t num_vertices = storage->grid_dimensions.x * storage->grid_dimensions.y; - storage->num_vertices = num_vertices; - - Vertex_darray* vertices = Vertex_darray_new(num_vertices); - u32 index = 0; - for (u32 i = 0; i < storage->grid_dimensions.x; i++) { - for (u32 j = 0; j < storage->grid_dimensions.y; j++) { - size_t position = j * storage->grid_dimensions.x + i; - u8* bytes = hmap.image_data; - u8 channel = bytes[position]; - float value = (float)channel / 255.0; - // printf("(%d, %d) %d : %f \n", i, j, channel, value); - - assert(index < num_vertices); - f32 height = Heightmap_HeightXZ(&hmap, i, j); - Vec3 v_pos = vec3_create(i * grid_scale, height, j * grid_scale); - Vec3 v_normal = VEC3_Y; - float tiling_factor = 505.0f; - Vec2 v_uv = vec2((f32)i / width * tiling_factor, (f32)j / height * tiling_factor); - Vertex v = { .static_3d = { .position = v_pos, .normal = v_normal, .tex_coords = v_uv } }; - Vertex_darray_push(vertices, v); - index++; - } - } - BufferHandle vertices_handle = GPU_BufferCreate(num_vertices * sizeof(Vertex), BUFFER_VERTEX, - BUFFER_FLAG_GPU, vertices->data); - storage->vertex_buffer = vertices_handle; - - u32 quad_count = (width - 1) * (height - 1); - u32 indices_count = quad_count * 6; - storage->indices_count = indices_count; - u32_darray* indices = u32_darray_new(indices_count); - for (u32 i = 0; i < (width - 1); i++) { // row - for (u32 j = 0; j < (height - 1); j++) { // col - u32 bot_left = i * width + j; - u32 top_left = (i + 1) * width + j; - u32 top_right = (i + 1) * width + (j + 1); - u32 bot_right = i * width + j + 1; - - // top left tri - u32_darray_push(indices, top_right); - u32_darray_push(indices, top_left); - u32_darray_push(indices, bot_left); - - // bottom right tri - u32_darray_push(indices, bot_right); - u32_darray_push(indices, top_right); - u32_darray_push(indices, bot_left); - } - } - - BufferHandle indices_handle = - GPU_BufferCreate(indices_count * sizeof(u32), BUFFER_INDEX, BUFFER_FLAG_GPU, indices->data); - storage->index_buffer = indices_handle; -} - -Heightmap Heightmap_FromImage(Str8 filepath) { - size_t max_size = MB(16); - arena arena = arena_create(malloc(max_size), max_size); - // str8_opt maybe_file = str8_from_file(&arena, filepath); - // assert(maybe_file.has_value); - - TextureData hmap_tex = TextureDataLoad(Str8_to_cstr(&arena, filepath), false); - - // arena_free_storage(&arena); - - return (Heightmap){ - .pixel_dimensions = hmap_tex.description.extents, - .filepath = filepath, - .image_data = hmap_tex.image_data, - .num_channels = hmap_tex.description.num_channels, - .is_uploaded = false, - }; -} - -void Terrain_Draw(Terrain_Storage* storage) { - GPU_CmdEncoder* enc = GPU_GetDefaultEncoder(); - GPU_EncodeBindPipeline(enc, storage->hmap_pipeline); - RenderScene* scene = Render_GetScene(); - - Mat4 view, proj; - u32x2 dimensions = GPU_Swapchain_GetDimensions(); - Camera_ViewProj(&scene->camera, (f32)dimensions.x, (f32)dimensions.y, &view, &proj); - Binding_Camera camera_data = { .view = view, - .projection = proj, - .viewPos = vec4(scene->camera.position.x, scene->camera.position.y, - scene->camera.position.z, 1.0) }; - GPU_EncodeBindShaderData(enc, 0, Binding_Camera_GetLayout(&camera_data)); - - TerrainUniforms uniforms = { .tex_slot_1 = storage->texture }; - ShaderDataLayout terrain_data = TerrainUniforms_GetLayout(&uniforms); - GPU_EncodeBindShaderData(enc, 1, terrain_data); - - GPU_EncodeSetVertexBuffer(enc, storage->vertex_buffer); - GPU_EncodeSetIndexBuffer(enc, storage->index_buffer); - - GPU_EncodeDrawIndexedTris(enc, storage->indices_count); - // glDrawArrays(GL_POINTS, 0, storage->num_vertices); -} - -f32 Heightmap_HeightXZ(const Heightmap* hmap, u32 x, u32 z) { - // its single channel so only one byte per pixel - size_t position = x * hmap->pixel_dimensions.x + z; - u8* bytes = hmap->image_data; - u8 channel = bytes[position]; - float value = (float)channel / 2.0; /// 255.0; - return value; -} - -ShaderDataLayout TerrainUniforms_GetLayout(void* data) { - TerrainUniforms* d = data; - bool has_data = data != NULL; - - ShaderBinding b1 = { - .label = "TextureSlot1", - .kind = BINDING_TEXTURE, - .vis = VISIBILITY_FRAGMENT, - }; - - if (has_data) { - b1.data.texture.handle = d->tex_slot_1; - } - return (ShaderDataLayout){ .bindings = { b1 }, .binding_count = 1 }; -} diff --git a/src/systems/terrain.h b/src/systems/terrain.h deleted file mode 100644 index 5a96132..0000000 --- a/src/systems/terrain.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @file terrain.h - * @brief - */ - -#pragma once - -/* -Future: - - Chunked terrain - - Dynamic LOD -*/ - -#include "defines.h" -#include "maths_types.h" -#include "ral_types.h" -#include "render.h" -#include "str.h" - -typedef struct Heightmap { - Str8 filepath; - u32x2 pixel_dimensions; - void* image_data; - u32 num_channels; - bool is_uploaded; -} Heightmap; - -typedef struct Terrain_Storage { - // arena terrain_allocator; - u32x2 grid_dimensions; - f32 grid_scale; - u32 num_vertices; - Heightmap heightmap; // NULL = no heightmap - GPU_Renderpass* hmap_renderpass; - GPU_Pipeline* hmap_pipeline; - TextureHandle texture; - - bool hmap_loaded; - BufferHandle vertex_buffer; - BufferHandle index_buffer; - u32 indices_count; -} Terrain_Storage; - -// --- Public API -PUB bool Terrain_Init(Terrain_Storage* storage); -PUB void Terrain_Shutdown(Terrain_Storage* storage); -PUB void Terrain_Draw( - Terrain_Storage* storage); // NOTE: For now it renders directly to main framebuffer - -/** @brief Sets the active heightmap to be rendered and collided against. */ -PUB void Terrain_LoadHeightmap(Terrain_Storage* storage, Heightmap hmap, f32 grid_scale, - bool free_on_upload); -PUB Heightmap Heightmap_FromImage(Str8 filepath); -PUB Heightmap Heightmap_FromPerlin(/* TODO: perlin noise generation parameters */); - -PUB bool Terrain_IsActive(); // checks whether we have a loaded heightmap and it's being rendered - -/** @brief Get the height (the Y component) for a vertex at a particular coordinate in the heightmap - */ -PUB f32 Heightmap_HeightXZ(const Heightmap* hmap, u32 x, u32 z); - -/** @brief Calculate the normal vector of a vertex at a particular coordinate in the heightmap */ -PUB Vec3 Heightmap_NormalXZ(const Heightmap* hmap, f32 x, f32 z); - -// /** @brief Generate the `geometry_data` for a heightmap ready to be uploaded to the GPU */ -// Geometry geo_heightmap(arena* a, Heightmap heightmap); - -typedef struct TerrainUniforms { - TextureHandle tex_slot_1; -} TerrainUniforms; - -ShaderDataLayout TerrainUniforms_GetLayout(void* data);
\ No newline at end of file diff --git a/src/systems/text.c b/src/systems/text.c deleted file mode 100644 index 2bb5399..0000000 --- a/src/systems/text.c +++ /dev/null @@ -1 +0,0 @@ -// TODO: Port from previous repo
\ No newline at end of file diff --git a/src/systems/text.h b/src/systems/text.h deleted file mode 100644 index 983ffd6..0000000 --- a/src/systems/text.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @brief - */ -#pragma once - -#include <stb_truetype.h> - -#include "darray.h" -#include "defines.h" -#include "ral.h" -#include "render_types.h" - -// struct core; - -// /** @brief internal font struct */ -// typedef struct font { -// const char *name; -// stbtt_fontinfo stbtt_font; -// stbtt_bakedchar c_data[96]; -// texture_handle bitmap_tex; -// } font; - -// typedef struct draw_text_packet { -// char *contents; -// f32 x; -// f32 y; -// } draw_text_packet; - -// KITC_DECL_TYPED_ARRAY(draw_text_packet) - -// typedef struct text_system_state { -// font default_font; -// shader_handle glyph_shader; -// u32 glyph_vbo; -// u32 glyph_vao; -// draw_text_packet_darray *draw_cmd_buf; -// // TODO: fonts array or hashtable -// } text_system_state; - -// void text_system_render(text_system_state *text); - -// // --- Lifecycle functions -// bool text_system_init(text_system_state *text); -// void text_system_shutdown(text_system_state *text); - -// // --- Drawing - -// /** -// * @brief immediate mode draw text. -// * @note immediately emits draw calls causing a shader program switch if you weren't previously -// drawing text in the current frame. -// */ -// void draw_text(struct core *core, f32 x, f32 y, char *contents); |