From 73977a0c380d8b9a27c3fc5efe8fa8a1bab59a0e Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sat, 8 Mar 2025 10:43:14 +0100 Subject: [PATCH] Cleanup --- base/sources/backends/direct3d12_gpu.c | 6 ++--- base/sources/backends/linux_system.h | 2 +- base/sources/backends/metal_gpu.m | 6 ++--- base/sources/backends/vulkan_gpu.c | 8 +++--- base/sources/backends/webgpu_gpu.c | 6 ++--- base/sources/backends/windows_system.c | 2 +- base/sources/iron_draw.c | 6 ++--- base/sources/iron_gpu.h | 21 ++++++++++------ base/sources/ts/iron/const_data.ts | 4 +-- base/sources/ts/iron/iron.ts | 35 ++------------------------ base/sources/ts/util_mesh.ts | 10 ++++---- base/sources/ts/util_render.ts | 2 +- 12 files changed, 41 insertions(+), 67 deletions(-) diff --git a/base/sources/backends/direct3d12_gpu.c b/base/sources/backends/direct3d12_gpu.c index 29fedfbd..7543a600 100644 --- a/base/sources/backends/direct3d12_gpu.c +++ b/base/sources/backends/direct3d12_gpu.c @@ -1471,13 +1471,13 @@ void kinc_g5_pipeline_compile(kinc_g5_pipeline_t *pipe) { case KINC_G5_VERTEX_DATA_F32_4X: vertexDesc[i].Format = DXGI_FORMAT_R32G32B32A32_FLOAT; break; - case KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_U8_4X_NORM: vertexDesc[i].Format = DXGI_FORMAT_R8G8B8A8_UNORM; break; - case KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_2X_NORM: vertexDesc[i].Format = DXGI_FORMAT_R16G16_SNORM; break; - case KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_4X_NORM: vertexDesc[i].Format = DXGI_FORMAT_R16G16B16A16_SNORM; break; default: diff --git a/base/sources/backends/linux_system.h b/base/sources/backends/linux_system.h index c3140c82..1df22fcd 100644 --- a/base/sources/backends/linux_system.h +++ b/base/sources/backends/linux_system.h @@ -8,7 +8,7 @@ #include #include -#define MAXIMUM_WINDOWS 16 +#define MAXIMUM_WINDOWS 1 #define MAXIMUM_DISPLAYS 16 struct kinc_x11_window { diff --git a/base/sources/backends/metal_gpu.m b/base/sources/backends/metal_gpu.m index 1a94663e..a7c1c668 100644 --- a/base/sources/backends/metal_gpu.m +++ b/base/sources/backends/metal_gpu.m @@ -842,13 +842,13 @@ void kinc_g5_pipeline_compile(kinc_g5_pipeline_t *pipeline) { case KINC_G5_VERTEX_DATA_F32_4X: vertexDescriptor.attributes[index].format = MTLVertexFormatFloat4; break; - case KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_U8_4X_NORM: vertexDescriptor.attributes[index].format = MTLVertexFormatUChar4Normalized; break; - case KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_2X_NORM: vertexDescriptor.attributes[index].format = MTLVertexFormatShort2Normalized; break; - case KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_4X_NORM: vertexDescriptor.attributes[index].format = MTLVertexFormatShort4Normalized; break; } diff --git a/base/sources/backends/vulkan_gpu.c b/base/sources/backends/vulkan_gpu.c index a82e912e..35ca3f31 100644 --- a/base/sources/backends/vulkan_gpu.c +++ b/base/sources/backends/vulkan_gpu.c @@ -2651,13 +2651,13 @@ void kinc_g5_pipeline_compile(kinc_g5_pipeline_t *pipeline) { case KINC_G5_VERTEX_DATA_F32_4X: vi_attrs[attr].format = VK_FORMAT_R32G32B32A32_SFLOAT; break; - case KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_U8_4X_NORM: vi_attrs[attr].format = VK_FORMAT_R8G8B8A8_UNORM; break; - case KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_2X_NORM: vi_attrs[attr].format = VK_FORMAT_R16G16_SNORM; break; - case KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_4X_NORM: vi_attrs[attr].format = VK_FORMAT_R16G16B16A16_SNORM; break; } @@ -3560,7 +3560,6 @@ void kinc_g5_texture_init_from_bytes(kinc_g5_texture_t *texture, void *data, int texture->impl.stage_depth = -1; texture->state = KINC_INTERNAL_RENDER_TARGET_STATE_TEXTURE; texture->framebuffer_index = -1; - texture->impl.renderTarget = NULL; const VkFormat tex_format = convert_image_format(format); VkFormatProperties props; @@ -3653,7 +3652,6 @@ void kinc_g5_texture_init(kinc_g5_texture_t *texture, int width, int height, kin texture->impl.stage_depth = -1; texture->state = KINC_INTERNAL_RENDER_TARGET_STATE_TEXTURE; texture->framebuffer_index = -1; - texture->impl.renderTarget = NULL; const VkFormat tex_format = convert_image_format(format); VkFormatProperties props; diff --git a/base/sources/backends/webgpu_gpu.c b/base/sources/backends/webgpu_gpu.c index 074a38a0..016d0c52 100644 --- a/base/sources/backends/webgpu_gpu.c +++ b/base/sources/backends/webgpu_gpu.c @@ -288,13 +288,13 @@ void kinc_g5_pipeline_compile(kinc_g5_pipeline_t *pipe) { case KINC_G5_VERTEX_DATA_F32_4X: vaDesc[i].format = WGPUVertexFormat_Float32x4; break; - case KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_U8_4X_NORM: vaDesc[i].format = WGPUVertexFormat_Unorm8x4; break; - case KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_2X_NORM: vaDesc[i].format = WGPUVertexFormat_Snorm16x2; break; - case KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_4X_NORM: vaDesc[i].format = WGPUVertexFormat_Snorm16x4; break; } diff --git a/base/sources/backends/windows_system.c b/base/sources/backends/windows_system.c index 8739f748..28046b5c 100644 --- a/base/sources/backends/windows_system.c +++ b/base/sources/backends/windows_system.c @@ -1800,7 +1800,7 @@ typedef struct { LRESULT WINAPI KoreWindowsMessageProcedure(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -#define MAXIMUM_WINDOWS 16 +#define MAXIMUM_WINDOWS 1 static WindowData windows[MAXIMUM_WINDOWS] = {0}; const wchar_t *windowClassName = L"KoreWindow"; diff --git a/base/sources/iron_draw.c b/base/sources/iron_draw.c index e59c8747..cb57cac3 100644 --- a/base/sources/iron_draw.c +++ b/base/sources/iron_draw.c @@ -143,7 +143,7 @@ void draw_init(buffer_t *image_vert, buffer_t *image_frag, buffer_t *colored_ver kinc_g5_vertex_structure_init(&structure); kinc_g5_vertex_structure_add(&structure, "pos", KINC_G5_VERTEX_DATA_F32_3X); kinc_g5_vertex_structure_add(&structure, "tex", KINC_G5_VERTEX_DATA_F32_2X); - kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED); + kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORM); kinc_g5_pipeline_init(&image_pipeline); image_pipeline.input_layout = &structure; image_pipeline.vertex_shader = &image_vert_shader; @@ -181,7 +181,7 @@ void draw_init(buffer_t *image_vert, buffer_t *image_frag, buffer_t *colored_ver kinc_g5_vertex_structure_t structure; kinc_g5_vertex_structure_init(&structure); kinc_g5_vertex_structure_add(&structure, "pos", KINC_G5_VERTEX_DATA_F32_3X); - kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED); + kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORM); kinc_g5_pipeline_init(&colored_pipeline); colored_pipeline.input_layout = &structure; colored_pipeline.vertex_shader = &colored_vert_shader; @@ -232,7 +232,7 @@ void draw_init(buffer_t *image_vert, buffer_t *image_frag, buffer_t *colored_ver kinc_g5_vertex_structure_init(&structure); kinc_g5_vertex_structure_add(&structure, "pos", KINC_G5_VERTEX_DATA_F32_3X); kinc_g5_vertex_structure_add(&structure, "tex", KINC_G5_VERTEX_DATA_F32_2X); - kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED); + kinc_g5_vertex_structure_add(&structure, "col", KINC_G5_VERTEX_DATA_U8_4X_NORM); kinc_g5_pipeline_init(&text_pipeline); text_pipeline.input_layout = &structure; diff --git a/base/sources/iron_gpu.h b/base/sources/iron_gpu.h index 27a0be91..6120123a 100644 --- a/base/sources/iron_gpu.h +++ b/base/sources/iron_gpu.h @@ -144,9 +144,9 @@ typedef enum kinc_g5_vertex_data { KINC_G5_VERTEX_DATA_F32_2X = 1, KINC_G5_VERTEX_DATA_F32_3X = 2, KINC_G5_VERTEX_DATA_F32_4X = 3, - KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED = 4, - KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED = 5, - KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED = 6, + KINC_G5_VERTEX_DATA_U8_4X_NORM = 4, + KINC_G5_VERTEX_DATA_I16_2X_NORM = 5, + KINC_G5_VERTEX_DATA_I16_4X_NORM = 6, } kinc_g5_vertex_data_t; typedef struct kinc_g5_vertex_element { @@ -161,7 +161,6 @@ typedef struct kinc_g5_vertex_structure { static inline int kinc_g5_vertex_data_size(kinc_g5_vertex_data_t data) { switch (data) { - default: case KINC_G5_VERTEX_DATA_F32_1X: return 1 * 4; case KINC_G5_VERTEX_DATA_F32_2X: @@ -170,15 +169,23 @@ static inline int kinc_g5_vertex_data_size(kinc_g5_vertex_data_t data) { return 3 * 4; case KINC_G5_VERTEX_DATA_F32_4X: return 4 * 4; - case KINC_G5_VERTEX_DATA_U8_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_U8_4X_NORM: return 4 * 1; - case KINC_G5_VERTEX_DATA_I16_2X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_2X_NORM: return 2 * 2; - case KINC_G5_VERTEX_DATA_I16_4X_NORMALIZED: + case KINC_G5_VERTEX_DATA_I16_4X_NORM: return 4 * 2; } } +static inline int kinc_g5_vertex_struct_size(kinc_g5_vertex_structure_t *s) { + int size = 0; + for (int i = 0; i < s->size; ++i) { + size += kinc_g5_vertex_data_size(s->elements[i].data); + } + return size; +} + void kinc_g5_vertex_structure_init(kinc_g5_vertex_structure_t *structure); void kinc_g5_vertex_structure_add(kinc_g5_vertex_structure_t *structure, const char *name, kinc_g5_vertex_data_t data); diff --git a/base/sources/ts/iron/const_data.ts b/base/sources/ts/iron/const_data.ts index 581120aa..666a1661 100644 --- a/base/sources/ts/iron/const_data.ts +++ b/base/sources/ts/iron/const_data.ts @@ -12,7 +12,7 @@ function const_data_create_screen_aligned_data() { // Mandatory vertex data names and sizes let structure: kinc_g5_vertex_structure_t = g4_vertex_struct_create(); g4_vertex_struct_add(structure, "pos", vertex_data_t.F32_2X); - const_data_screen_aligned_vb = iron_g4_create_vertex_buffer(math_floor(data.length / math_floor(g4_vertex_struct_byte_size(structure) / 4)), structure, usage_t.STATIC); + const_data_screen_aligned_vb = iron_g4_create_vertex_buffer(math_floor(data.length / math_floor(kinc_g5_vertex_struct_size(structure) / 4)), structure, usage_t.STATIC); let vertices: buffer_t = iron_g4_lock_vertex_buffer(const_data_screen_aligned_vb); for (let i: i32 = 0; i < math_floor((vertices.length) / 4); ++i) { buffer_set_f32(vertices, i * 4, data[i]); @@ -39,7 +39,7 @@ function const_data_create_skydome_data() { let structure: kinc_g5_vertex_structure_t = g4_vertex_struct_create(); g4_vertex_struct_add(structure, "pos", vertex_data_t.F32_3X); g4_vertex_struct_add(structure, "nor", vertex_data_t.F32_3X); - let struct_length: i32 = math_floor(g4_vertex_struct_byte_size(structure) / 4); + let struct_length: i32 = math_floor(kinc_g5_vertex_struct_size(structure) / 4); const_data_skydome_vb = iron_g4_create_vertex_buffer(math_floor(_const_data_skydome_pos_count / 3), structure, usage_t.STATIC); let vertices: buffer_t = iron_g4_lock_vertex_buffer(const_data_skydome_vb); for (let i: i32 = 0; i < math_floor((vertices.length) / 4 / struct_length); ++i) { diff --git a/base/sources/ts/iron/iron.ts b/base/sources/ts/iron/iron.ts index 5f1633e7..ffa494c7 100644 --- a/base/sources/ts/iron/iron.ts +++ b/base/sources/ts/iron/iron.ts @@ -580,39 +580,8 @@ function g4_vertex_struct_add(raw: kinc_g5_vertex_structure_t, name: string, dat raw.size++; } -function g4_vertex_struct_byte_size(raw: kinc_g5_vertex_structure_t): i32 { - let byte_size: i32 = 0; - for (let i: i32 = 0; i < raw.size; ++i) { - let elem: kinc_g5_vertex_element_t = ADDRESS(ARRAY_ACCESS(raw.elements, i)); - byte_size += g4_vertex_struct_data_byte_size(elem.data); - } - return byte_size; -} - -function g4_vertex_struct_data_byte_size(data: vertex_data_t): i32 { - if (data == vertex_data_t.F32_1X) { - return 1 * 4; - } - if (data == vertex_data_t.F32_2X) { - return 2 * 4; - } - if (data == vertex_data_t.F32_3X) { - return 3 * 4; - } - if (data == vertex_data_t.F32_4X) { - return 4 * 4; - } - if (data == vertex_data_t.U8_4X_NORM) { - return 4 * 1; - } - if (data == vertex_data_t.I16_2X_NORM) { - return 2 * 2; - } - if (data == vertex_data_t.I16_4X_NORM) { - return 4 * 2; - } - return 0; -} +declare function kinc_g5_vertex_struct_size(s: kinc_g5_vertex_structure_t): i32; +declare function kinc_g5_vertex_data_size(data: vertex_data_t); declare type kinc_g5_pipeline_t = { input_layout?: any; diff --git a/base/sources/ts/util_mesh.ts b/base/sources/ts/util_mesh.ts index 64d81cba..51ad97f7 100644 --- a/base/sources/ts/util_mesh.ts +++ b/base/sources/ts/util_mesh.ts @@ -159,7 +159,7 @@ function util_mesh_swap_axis(a: i32, b: i32) { } let g: mesh_data_t = o.data; - let l: i32 = g4_vertex_struct_byte_size(g._.structure) / 2; + let l: i32 = kinc_g5_vertex_struct_size(g._.structure) / 2; let vertices: buffer_t = iron_g4_lock_vertex_buffer(g._.vertex_buffer); // posnortex for (let i: i32 = 0; i < math_floor((vertices.length) / 2 / l); ++i) { buffer_set_i16(vertices, (i * l ) * 2, vas[0].values[i * 4 ]); @@ -184,7 +184,7 @@ function util_mesh_flip_normals() { let va0: i16_array_t = vas[0].values; let va1: i16_array_t = vas[1].values; let g: mesh_data_t = o.data; - let l: i32 = g4_vertex_struct_byte_size(g._.structure) / 2; + let l: i32 = kinc_g5_vertex_struct_size(g._.structure) / 2; let vertices: buffer_t = iron_g4_lock_vertex_buffer(g._.vertex_buffer); // posnortex for (let i: i32 = 0; i < math_floor((vertices.length) / 2 / l); ++i) { va0[i * 4 + 3] = -va0[i * 4 + 3]; @@ -210,7 +210,7 @@ function util_mesh_calc_normals(smooth: bool = false) { for (let i: i32 = 0; i < objects.length; ++i) { let o: mesh_object_t = objects[i]; let g: mesh_data_t = o.data; - let l: i32 = g4_vertex_struct_byte_size(g._.structure) / 2; + let l: i32 = kinc_g5_vertex_struct_size(g._.structure) / 2; let inda: u32_array_t = g._.indices[0]; let vertices: buffer_t = iron_g4_lock_vertex_buffer(g._.vertex_buffer); // posnortex for (let i: i32 = 0; i < math_floor(inda.length / 3); ++i) { @@ -370,7 +370,7 @@ function util_mesh_to_origin() { va[i * 4 + 2] = math_floor((va[i * 4 + 2] * sc - dz) / max_scale * 32767); } - let l: i32 = g4_vertex_struct_byte_size(g._.structure) / 2; + let l: i32 = kinc_g5_vertex_struct_size(g._.structure) / 2; let vertices: buffer_t = iron_g4_lock_vertex_buffer(g._.vertex_buffer); // posnortex for (let i: i32 = 0; i < math_floor((vertices.length) / 2 / l); ++i) { buffer_set_i16(vertices, (i * l ) * 2, va[i * 4 ]); @@ -388,7 +388,7 @@ function util_mesh_apply_displacement(texpaint_pack: kinc_g5_texture_t, strength let res: i32 = texpaint_pack.width; let o: mesh_object_t = project_paint_objects[0]; let g: mesh_data_t = o.data; - let l: i32 = g4_vertex_struct_byte_size(g._.structure) / 2; + let l: i32 = kinc_g5_vertex_struct_size(g._.structure) / 2; let vertices: buffer_t = iron_g4_lock_vertex_buffer(g._.vertex_buffer); // posnortex for (let i: i32 = 0; i < math_floor((vertices.length) / 2 / l); ++i) { let x: i32 = math_floor(buffer_get_i16(vertices, (i * l + 6) * 2) / 32767 * res); diff --git a/base/sources/ts/util_render.ts b/base/sources/ts/util_render.ts index 095fcc31..852c80da 100644 --- a/base/sources/ts/util_render.ts +++ b/base/sources/ts/util_render.ts @@ -463,7 +463,7 @@ function util_render_create_screen_aligned_full_data() { g4_vertex_struct_add(structure, "nor", vertex_data_t.I16_2X_NORM); g4_vertex_struct_add(structure, "tex", vertex_data_t.I16_2X_NORM); g4_vertex_struct_add(structure, "col", vertex_data_t.I16_4X_NORM); - util_render_screen_aligned_full_vb = iron_g4_create_vertex_buffer(math_floor(data.length / math_floor(g4_vertex_struct_byte_size(structure) / 2)), structure, usage_t.STATIC); + util_render_screen_aligned_full_vb = iron_g4_create_vertex_buffer(math_floor(data.length / math_floor(kinc_g5_vertex_struct_size(structure) / 2)), structure, usage_t.STATIC); let vertices: buffer_t = iron_g4_lock_vertex_buffer(util_render_screen_aligned_full_vb); for (let i: i32 = 0; i < math_floor((vertices.length) / 2); ++i) { buffer_set_i16(vertices, i * 2, data[i]);