This commit is contained in:
luboslenco
2025-03-08 10:43:14 +01:00
parent 3320a9ac37
commit 73977a0c38
12 changed files with 41 additions and 67 deletions
+3 -3
View File
@@ -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:
+1 -1
View File
@@ -8,7 +8,7 @@
#include <X11/extensions/Xinerama.h>
#include <X11/extensions/Xrandr.h>
#define MAXIMUM_WINDOWS 16
#define MAXIMUM_WINDOWS 1
#define MAXIMUM_DISPLAYS 16
struct kinc_x11_window {
+3 -3
View File
@@ -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;
}
+3 -5
View File
@@ -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;
+3 -3
View File
@@ -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;
}
+1 -1
View File
@@ -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";
+3 -3
View File
@@ -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;
+14 -7
View File
@@ -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);
+2 -2
View File
@@ -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) {
+2 -33
View File
@@ -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;
+5 -5
View File
@@ -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);
+1 -1
View File
@@ -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]);