diff --git a/base/sources/backends/direct3d12_gpu.c b/base/sources/backends/direct3d12_gpu.c index 0b9ad26f..47551f75 100644 --- a/base/sources/backends/direct3d12_gpu.c +++ b/base/sources/backends/direct3d12_gpu.c @@ -983,8 +983,6 @@ void gpu_texture_destroy(gpu_texture_t *render_target) { } } -void gpu_texture_generate_mipmaps(gpu_texture_t *texture, int levels) {} - void gpu_texture_set_mipmap(gpu_texture_t *texture, gpu_texture_t *mipmap, int level) {} void gpu_render_target_init(gpu_texture_t *target, int width, int height, gpu_texture_format_t format) { diff --git a/base/sources/backends/metal_gpu.m b/base/sources/backends/metal_gpu.m index e2eb0a38..492c7c15 100644 --- a/base/sources/backends/metal_gpu.m +++ b/base/sources/backends/metal_gpu.m @@ -685,9 +685,6 @@ void gpu_texture_destroy(gpu_texture_t *target) { } } -void gpu_texture_generate_mipmaps(gpu_texture_t *texture, int levels) { -} - void gpu_texture_set_mipmap(gpu_texture_t *texture, gpu_texture_t *mipmap, int level) { if (!texture->impl.has_mipmaps) { id device = getMetalDevice(); diff --git a/base/sources/backends/vulkan_gpu.c b/base/sources/backends/vulkan_gpu.c index dd4c48e6..43fcfadb 100644 --- a/base/sources/backends/vulkan_gpu.c +++ b/base/sources/backends/vulkan_gpu.c @@ -1908,8 +1908,6 @@ void gpu_texture_destroy(gpu_texture_t *target) { } } -void gpu_texture_generate_mipmaps(gpu_texture_t *texture, int levels) {} - void gpu_texture_set_mipmap(gpu_texture_t *texture, gpu_texture_t *mipmap, int level) { // VkBuffer staging_buffer; // VkDeviceMemory staging_buffer_mem; diff --git a/base/sources/backends/webgpu_gpu.c b/base/sources/backends/webgpu_gpu.c index 5f542101..254d955c 100644 --- a/base/sources/backends/webgpu_gpu.c +++ b/base/sources/backends/webgpu_gpu.c @@ -160,11 +160,7 @@ int gpu_index_buffer_count(gpu_buffer_t *buffer) { } void gpu_texture_init_from_bytes(gpu_texture_t *texture, void *data, int width, int height, gpu_texture_format_t format) {} -void gpu_texture_init_from_encoded_data(gpu_texture_t *texture, void *data, int size, const char *format, bool readable) {} -void gpu_texture_init_from_data(gpu_texture_t *texture, void *data, int width, int height, int format, bool readable) {} void gpu_texture_destroy(gpu_texture_t *texture) {} - -void gpu_texture_generate_mipmaps(gpu_texture_t *texture, int levels) {} void gpu_texture_set_mipmap(gpu_texture_t *texture, gpu_texture_t *mipmap, int level) {} void gpu_render_target_init(gpu_texture_t *target, int width, int height, gpu_texture_format_t format) { diff --git a/base/sources/iron.h b/base/sources/iron.h index eafdfa9e..b2f18064 100644 --- a/base/sources/iron.h +++ b/base/sources/iron.h @@ -934,7 +934,7 @@ u32_array_t *gpu_lock_index_buffer(gpu_buffer_t *buffer) { return ar; } -any gpu_create_vertex_buffer(i32 count, gpu_vertex_structure_t *structure, i32 usage) { +any gpu_create_vertex_buffer(i32 count, gpu_vertex_structure_t *structure) { gpu_buffer_t *buffer = (gpu_buffer_t *)malloc(sizeof(gpu_buffer_t)); gpu_vertex_buffer_init(buffer, count, structure); return buffer; @@ -1156,13 +1156,13 @@ bool _load_image(iron_file_reader_t *reader, const char *filename, unsigned char return success; } -gpu_texture_t *gpu_create_texture_from_encoded_bytes(buffer_t *data, string_t *format, bool readable); +gpu_texture_t *gpu_create_texture_from_encoded_bytes(buffer_t *data, string_t *format); -gpu_texture_t *iron_load_image(string_t *file, bool readable) { +gpu_texture_t *iron_load_image(string_t *file) { #ifdef WITH_EMBED buffer_t *b = embed_get(file); if (b != NULL) { - gpu_texture_t *texture = gpu_create_texture_from_encoded_bytes(b, ".k", readable); + gpu_texture_t *texture = gpu_create_texture_from_encoded_bytes(b, ".k"); return texture; } #endif @@ -1182,9 +1182,7 @@ gpu_texture_t *iron_load_image(string_t *file, bool readable) { gpu_texture_t *texture = (gpu_texture_t *)malloc(sizeof(gpu_texture_t)); gpu_texture_init_from_bytes(texture, image_data, image_width, image_height, image_format); - if (!readable) { - free(image_data); - } + free(image_data); return texture; } @@ -1270,22 +1268,14 @@ gpu_texture_t *gpu_create_render_target(i32 width, i32 height, i32 format) { return render_target; } -gpu_texture_t *gpu_create_texture_from_bytes(buffer_t *data, i32 width, i32 height, i32 format, bool readable) { +gpu_texture_t *gpu_create_texture_from_bytes(buffer_t *data, i32 width, i32 height, i32 format) { gpu_texture_t *texture = (gpu_texture_t *)malloc(sizeof(gpu_texture_t)); texture->buffer = NULL; - void *image_data; - if (readable) { - image_data = malloc(data->length); - memcpy(image_data, data->buffer, data->length); - } - else { - image_data = data->buffer; - } - gpu_texture_init_from_bytes(texture, image_data, width, height, (gpu_texture_format_t)format); + gpu_texture_init_from_bytes(texture, data->buffer, width, height, (gpu_texture_format_t)format); return texture; } -gpu_texture_t *gpu_create_texture_from_encoded_bytes(buffer_t *data, string_t *format, bool readable) { +gpu_texture_t *gpu_create_texture_from_encoded_bytes(buffer_t *data, string_t *format) { gpu_texture_t *texture = (gpu_texture_t *)malloc(sizeof(gpu_texture_t)); texture->buffer = NULL; @@ -1331,9 +1321,7 @@ gpu_texture_t *gpu_create_texture_from_encoded_bytes(buffer_t *data, string_t *f } gpu_texture_init_from_bytes(texture, image_data, image_width, image_height, image_format); - if (!readable) { - free(image_data);; - } + free(image_data);; return texture; } diff --git a/base/sources/iron_gpu.h b/base/sources/iron_gpu.h index 06bf8580..e12b598f 100644 --- a/base/sources/iron_gpu.h +++ b/base/sources/iron_gpu.h @@ -173,7 +173,6 @@ void gpu_set_matrix4(int location, iron_matrix4x4_t value); void gpu_vertex_structure_add(gpu_vertex_structure_t *structure, const char *name, gpu_vertex_data_t data); void gpu_texture_init_from_bytes(gpu_texture_t *texture, void *data, int width, int height, gpu_texture_format_t format); void gpu_texture_destroy(gpu_texture_t *texture); -void gpu_texture_generate_mipmaps(gpu_texture_t *texture, int levels); void gpu_texture_set_mipmap(gpu_texture_t *texture, gpu_texture_t *mipmap, int level); void gpu_render_target_init(gpu_texture_t *target, int width, int height, gpu_texture_format_t format); void gpu_render_target_init2(gpu_texture_t *render_target, int width, int height, gpu_texture_format_t format, int framebuffer_index); diff --git a/base/sources/ts/iron/const_data.ts b/base/sources/ts/iron/const_data.ts index 357a1fc9..5d39e7ab 100644 --- a/base/sources/ts/iron/const_data.ts +++ b/base/sources/ts/iron/const_data.ts @@ -11,7 +11,7 @@ function const_data_create_screen_aligned_data() { let structure: gpu_vertex_structure_t = gpu_vertex_struct_create(); gpu_vertex_struct_add(structure, "pos", vertex_data_t.F32_2X); - const_data_screen_aligned_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 4)), structure, usage_t.STATIC); + const_data_screen_aligned_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 4)), structure); let vertices: buffer_t = gpu_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() { gpu_vertex_struct_add(structure, "pos", vertex_data_t.F32_3X); gpu_vertex_struct_add(structure, "nor", vertex_data_t.F32_3X); let struct_length: i32 = math_floor(gpu_vertex_struct_size(structure) / 4); - const_data_skydome_vb = gpu_create_vertex_buffer(math_floor(_const_data_skydome_pos_count / 3), structure, usage_t.STATIC); + const_data_skydome_vb = gpu_create_vertex_buffer(math_floor(_const_data_skydome_pos_count / 3), structure); let vertices: buffer_t = gpu_lock_vertex_buffer(const_data_skydome_vb); for (let i: i32 = 0; i < math_floor((vertices.length) / 4 / struct_length); ++i) { buffer_set_f32(vertices, (i * struct_length) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3)); diff --git a/base/sources/ts/iron/data.ts b/base/sources/ts/iron/data.ts index 7327995b..c9fe4964 100644 --- a/base/sources/ts/iron/data.ts +++ b/base/sources/ts/iron/data.ts @@ -109,13 +109,13 @@ function data_get_blob(file: string): buffer_t { return b; } -function data_get_image(file: string, readable: bool = false): gpu_texture_t { +function data_get_image(file: string): gpu_texture_t { let cached: gpu_texture_t = map_get(data_cached_images, file); if (cached != null) { return cached; } - let image_: any = iron_load_image(data_resolve_path(file), readable); + let image_: any = iron_load_image(data_resolve_path(file)); if (image_ == null) { return null; } diff --git a/base/sources/ts/iron/iron.ts b/base/sources/ts/iron/iron.ts index 4a8d63cf..f61cf9b9 100644 --- a/base/sources/ts/iron/iron.ts +++ b/base/sources/ts/iron/iron.ts @@ -216,7 +216,7 @@ declare function gpu_delete_index_buffer(buffer: any): void; declare function gpu_lock_index_buffer(buffer: any): u32_array_t; declare function gpu_index_buffer_unlock(buffer: any): void; declare function gpu_set_index_buffer(buffer: any): void; -declare function gpu_create_vertex_buffer(count: i32, structure: gpu_vertex_structure_t, usage: i32): any; +declare function gpu_create_vertex_buffer(count: i32, structure: gpu_vertex_structure_t): any; declare function gpu_delete_vertex_buffer(buffer: any): void; declare function gpu_lock_vertex_buffer(buffer: any): buffer_t; declare function gpu_vertex_buffer_unlock(buffer: any): void; @@ -229,7 +229,7 @@ declare function gpu_create_pipeline(): any; declare function gpu_delete_pipeline(pipeline: any): void; declare function gpu_pipeline_compile(pipeline: any): void; declare function gpu_set_pipeline(pipeline: any): void; -declare function iron_load_image(file: string, readable: bool): any; +declare function iron_load_image(file: string): any; declare function iron_unload_image(image: gpu_texture_t): void; declare function iron_load_sound(file: string): any; declare function iron_a1_sound_destroy(sound: any): void; @@ -271,10 +271,9 @@ declare function iron_display_frequency(index: i32): i32; declare function iron_display_is_primary(index: i32): bool; declare function gpu_create_render_target(width: i32, height: i32, format: i32 = tex_format_t.RGBA32): any; -declare function gpu_create_texture_from_bytes(data: buffer_t, width: i32, height: i32, format: i32 = tex_format_t.RGBA32, readable: bool = true): any; -declare function gpu_create_texture_from_encoded_bytes(data: buffer_t, format: string, readable: bool = false): any; +declare function gpu_create_texture_from_bytes(data: buffer_t, width: i32, height: i32, format: i32 = tex_format_t.RGBA32): any; +declare function gpu_create_texture_from_encoded_bytes(data: buffer_t, format: string): any; declare function gpu_get_texture_pixels(texture: any): buffer_t; -declare function gpu_texture_generate_mipmaps(texture: any, levels: i32): void; declare function gpu_set_mipmaps(texture: any, mipmaps: gpu_texture_t[]): void; declare function gpu_viewport(x: i32, y: i32, width: i32, height: i32): void; declare function gpu_scissor(x: i32, y: i32, width: i32, height: i32): void; @@ -639,12 +638,6 @@ enum clear_flag_t { DEPTH = 2, } -enum usage_t { - STATIC, - DYNAMIC, - READABLE, -} - enum tex_format_t { RGBA32, RGBA64, diff --git a/base/sources/ts/iron/material_data.ts b/base/sources/ts/iron/material_data.ts index 96dae369..de574885 100644 --- a/base/sources/ts/iron/material_data.ts +++ b/base/sources/ts/iron/material_data.ts @@ -79,7 +79,7 @@ function material_context_create(raw: material_context_t): material_context_t { continue; } - let image: gpu_texture_t = data_get_image(tex.file, false); + let image: gpu_texture_t = data_get_image(tex.file); array_push(raw._.textures, image); // Set mipmaps @@ -100,7 +100,7 @@ function material_context_create(raw: material_context_t): material_context_t { tex.generate_mipmaps = false; } else if (tex.generate_mipmaps == true && image != null) { - gpu_texture_generate_mipmaps(image, 1000); + // gpu_texture_generate_mipmaps(image, 1000); tex.mipmaps = null; tex.generate_mipmaps = false; } diff --git a/base/sources/ts/iron/mesh_data.ts b/base/sources/ts/iron/mesh_data.ts index d2a83eb1..97b905b9 100644 --- a/base/sources/ts/iron/mesh_data.ts +++ b/base/sources/ts/iron/mesh_data.ts @@ -198,7 +198,7 @@ function mesh_data_get(raw: mesh_data_t, vs: vertex_element_t[]): gpu_buffer_t { let cols: vertex_array_t = mesh_data_get_vertex_array(raw, "col"); let vstruct: gpu_vertex_structure_t = mesh_data_get_vertex_struct(vertex_arrays); let size: i32 = mesh_data_get_vertex_size(positions.data); - vb = gpu_create_vertex_buffer(math_floor(positions.values.length / size), vstruct, usage_t.STATIC); + vb = gpu_create_vertex_buffer(math_floor(positions.values.length / size), vstruct); raw._.vertices = gpu_lock_vertex_buffer(vb); mesh_data_build_vertices(raw._.vertices, vertex_arrays, 0, has_tex && uvs == null, tex_offset); gpu_vertex_buffer_unlock(vb); @@ -220,7 +220,7 @@ function mesh_data_build(raw: mesh_data_t) { let positions: vertex_array_t = mesh_data_get_vertex_array(raw, "pos"); let size: i32 = mesh_data_get_vertex_size(positions.data); - raw._.vertex_buffer = gpu_create_vertex_buffer(math_floor(positions.values.length / size), raw._.structure, usage_t.STATIC); + raw._.vertex_buffer = gpu_create_vertex_buffer(math_floor(positions.values.length / size), raw._.structure); raw._.vertices = gpu_lock_vertex_buffer(raw._.vertex_buffer); mesh_data_build_vertices(raw._.vertices, raw.vertex_arrays); gpu_vertex_buffer_unlock(raw._.vertex_buffer); diff --git a/base/sources/ts/iron/render_path.ts b/base/sources/ts/iron/render_path.ts index 98c9f239..83221d40 100644 --- a/base/sources/ts/iron/render_path.ts +++ b/base/sources/ts/iron/render_path.ts @@ -124,11 +124,6 @@ function render_path_set_viewport(view_w: i32, view_h: i32) { render_path_set_current_scissor(view_w, view_h); } -function render_path_gen_mipmaps(target: string) { - let rt: render_target_t = map_get(render_path_render_targets, target); - gpu_texture_generate_mipmaps(rt._image, 1000); -} - function _render_path_sort_dist(a: any_ptr, b: any_ptr): i32 { let ma: mesh_object_t = DEREFERENCE(a); let mb: mesh_object_t = DEREFERENCE(b); diff --git a/base/sources/ts/iron/world_data.ts b/base/sources/ts/iron/world_data.ts index d21ece74..d7df2f53 100644 --- a/base/sources/ts/iron/world_data.ts +++ b/base/sources/ts/iron/world_data.ts @@ -25,7 +25,7 @@ function world_data_parse(name: string, id: string): world_data_t { let base: string = substring(raw.radiance, 0, dot); for (let i: i32 = 0; i < raw.radiance_mipmaps; ++i) { - let mipimg: gpu_texture_t = data_get_image(base + "_" + i + ext, true); + let mipimg: gpu_texture_t = data_get_image(base + "_" + i + ext); raw._.radiance_mipmaps[i] = mipimg; } gpu_set_mipmaps(raw._.radiance, raw._.radiance_mipmaps); diff --git a/base/sources/ts/line_draw.ts b/base/sources/ts/line_draw.ts index 16d69d47..8572a92a 100644 --- a/base/sources/ts/line_draw.ts +++ b/base/sources/ts/line_draw.ts @@ -59,7 +59,7 @@ function line_draw_init() { line_draw_vp_loc = pipes_get_constant_location("mat4"); line_draw_color_loc = pipes_get_constant_location("vec3"); line_draw_vp = mat4_identity(); - line_draw_vertex_buffer = gpu_create_vertex_buffer(line_draw_max_vertices, structure, usage_t.DYNAMIC); + line_draw_vertex_buffer = gpu_create_vertex_buffer(line_draw_max_vertices, structure); line_draw_index_buffer = gpu_create_index_buffer(line_draw_max_indices); } if (line_draw_overlay_pipeline == null) { @@ -262,7 +262,7 @@ function shape_draw_sphere(mat: mat4_t) { let posa: i16_array_t = md.vertex_arrays[0].values; let structure: gpu_vertex_structure_t = gpu_vertex_struct_create(); gpu_vertex_struct_add(structure, "pos", vertex_data_t.F32_3X); - _shape_draw_sphere_vb = gpu_create_vertex_buffer(posa.length, structure, usage_t.STATIC); + _shape_draw_sphere_vb = gpu_create_vertex_buffer(posa.length, structure); let data: buffer_t = gpu_lock_vertex_buffer(_shape_draw_sphere_vb); for (let i: i32 = 0; i < posa.length / 4; ++i) { buffer_set_f32(data, (i * 3 + 0) * 4, posa[i * 4 + 0] / 32767); diff --git a/base/sources/ts/util_render.ts b/base/sources/ts/util_render.ts index a7ec384c..584b1cff 100644 --- a/base/sources/ts/util_render.ts +++ b/base/sources/ts/util_render.ts @@ -457,7 +457,7 @@ function util_render_create_screen_aligned_full_data() { gpu_vertex_struct_add(structure, "nor", vertex_data_t.I16_2X_NORM); gpu_vertex_struct_add(structure, "tex", vertex_data_t.I16_2X_NORM); gpu_vertex_struct_add(structure, "col", vertex_data_t.I16_4X_NORM); - util_render_screen_aligned_full_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 2)), structure, usage_t.STATIC); + util_render_screen_aligned_full_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 2)), structure); let vertices: buffer_t = gpu_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]); diff --git a/base/tools/make.js b/base/tools/make.js index 08517d18..edfb0efa 100644 --- a/base/tools/make.js +++ b/base/tools/make.js @@ -2339,13 +2339,13 @@ class AssetConverter { else { images = self.exporter.copy_image(file, export_info.destination, globalThis.flags.embed && !options.noembed); } - parsed_files.push({ name: export_info.name, from: file, type: 'image', files: images, original_width: options.original_width, original_height: options.original_height, readable: options.readable, noembed: options.noembed }); + parsed_files.push({ name: export_info.name, from: file, type: 'image', files: images, original_width: options.original_width, original_height: options.original_height, noembed: options.noembed }); break; } default: { let export_info = AssetConverter.create_export_info(file, true, options, "."); let blobs = self.exporter.copy_blob(file, export_info.destination, globalThis.flags.embed && !options.noembed); - parsed_files.push({ name: export_info.name, from: file, type: 'blob', files: blobs, original_width: undefined, original_height: undefined, readable: undefined, noembed: options.noembed }); + parsed_files.push({ name: export_info.name, from: file, type: 'blob', files: blobs, original_width: undefined, original_height: undefined, noembed: options.noembed }); break; } }