From f46e9f366726fb768c5fd1f5ccf5aef2d5efd42b Mon Sep 17 00:00:00 2001 From: korenkonder Date: Thu, 29 Jun 2023 04:11:40 +0300 Subject: [PATCH] Minor fixes --- src/CRE/render_manager.cpp | 16 ++++++++-------- src/KKdLib/stage_param/snow.cpp | 16 ++++++++-------- src/KKdLib/stage_param/snow.hpp | 10 +++++----- src/ReDIVA/data_initialize.cpp | 3 ++- src/ReDIVA/dw.cpp | 9 ++++----- src/ReDIVA/render.cpp | 20 +++++++------------- 6 files changed, 34 insertions(+), 40 deletions(-) diff --git a/src/CRE/render_manager.cpp b/src/CRE/render_manager.cpp index c152b1d9..3b8e7df3 100644 --- a/src/CRE/render_manager.cpp +++ b/src/CRE/render_manager.cpp @@ -31,7 +31,7 @@ static void draw_pass_shadow_esm_filter(render_context* rctx, render_texture* dst, render_texture* buf, render_texture* src); static bool draw_pass_shadow_litproj(render_context* rctx, light_proj* litproj); static void draw_pass_sss_contour(render_context* rctx, post_process* pp); -static void draw_pass_sss_filter(render_context* rctx, sss_data* a1); +static void draw_pass_sss_filter(render_context* rctx, sss_data* sss); static int32_t draw_pass_3d_get_translucent_count(render_context* rctx); static void draw_pass_3d_shadow_reset(render_context* rctx); static void draw_pass_3d_shadow_set(shadow* shad, render_context* rctx); @@ -1228,7 +1228,7 @@ static void draw_pass_sss_filter_calc_coef(double_t a1, size_t a2, double_t a3, } } -static void draw_pass_sss_filter(render_context* rctx, sss_data* a1) { +static void draw_pass_sss_filter(render_context* rctx, sss_data* sss) { const int32_t sss_count = 6; vec3 interest = rctx->camera->interest; vec3 view_point = rctx->camera->view_point; @@ -1280,8 +1280,8 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* a1) { rctx->obj_batch.g_sss_param = { v33, 0.0f, 0.0f, 0.0f }; gl_state_active_texture(0); - if (a1->npr_contour) { - a1->textures[0].bind(); + if (sss->npr_contour) { + sss->textures[0].bind(); glViewport(0, 0, 640, 360); post_process* pp = &rctx->post_process; uniform_value[U_REDUCE] = 0; @@ -1289,11 +1289,11 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* a1) { gl_state_bind_texture_2d(pp->rend_texture.color_texture->tex); render_texture::draw_quad(&shaders_ft, 640, 360, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f); } - a1->textures[2].bind(); + sss->textures[2].bind(); glViewport(0, 0, 320, 180); uniform_value[U_SSS_FILTER] = 0; shaders_ft.set(SHADER_FT_SSS_FILT); - gl_state_bind_texture_2d(a1->textures[0].color_texture->tex); + gl_state_bind_texture_2d(sss->textures[0].color_texture->tex); render_texture::draw_quad(&shaders_ft, 640, 360, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f); sss_filter_gaussian_coef_shader_data shader_data = {}; @@ -1306,11 +1306,11 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* a1) { draw_pass_sss_filter_calc_coef(1.0, sss_count, v34, 3, a5, a6, a7, a8, shader_data.g_coef); rctx->sss_filter_gaussian_coef_ubo.WriteMapMemory(shader_data); - a1->textures[1].bind(); + sss->textures[1].bind(); glViewport(0, 0, 320, 180); uniform_value[U_SSS_FILTER] = 3; shaders_ft.set(SHADER_FT_SSS_FILT); - gl_state_bind_texture_2d(a1->textures[2].color_texture->tex); + gl_state_bind_texture_2d(sss->textures[2].color_texture->tex); rctx->sss_filter_gaussian_coef_ubo.Bind(1); render_texture::draw_quad(&shaders_ft, 320, 180, 1.0f, 1.0f, 0.96f, 1.0f, 0.0f); gl_state_bind_texture_2d(0); diff --git a/src/KKdLib/stage_param/snow.cpp b/src/KKdLib/stage_param/snow.cpp index 5ed10bd4..82f8fa60 100644 --- a/src/KKdLib/stage_param/snow.cpp +++ b/src/KKdLib/stage_param/snow.cpp @@ -18,7 +18,7 @@ static void stage_param_snow_write_string(stream& s, char* buf, size_t buf_size, std::string& value); stage_param_snow_colli_ground::stage_param_snow_colli_ground() - : field_0(), field_4(), field_8(), field_C(), field_10() { + : min_x(), max_x(), min_z(), max_z(), y() { } @@ -183,8 +183,8 @@ static void stage_param_snow_read_inner(stage_param_snow* snow, stream& s) { else if (!str_utils_compare_length(buf, sizeof(buf), "colli_ground", 12)) { stage_param_snow_colli_ground& colli_ground = snow->colli_ground; if (buf[12] != ' ' || sscanf_s(buf + 13, "%f %f %f %f %f", - &colli_ground.field_0, &colli_ground.field_4, &colli_ground.field_8, - &colli_ground.field_C, &colli_ground.field_10) != 5) + &colli_ground.min_x, &colli_ground.max_x, + &colli_ground.min_z, &colli_ground.max_z, &colli_ground.y) != 5) goto End; } } @@ -264,11 +264,11 @@ static void stage_param_snow_write_inner(stage_param_snow* snow, stream& s) { stage_param_snow_colli_ground& colli_ground = snow->colli_ground; s.write("colli_ground", 12); - stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.field_0); - stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.field_4); - stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.field_8); - stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.field_C); - stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.field_10); + stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.min_x); + stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.max_x); + stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.min_z); + stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.max_z); + stage_param_snow_write_float_t(s, buf, sizeof(buf), colli_ground.y); s.write_char('\n'); } diff --git a/src/KKdLib/stage_param/snow.hpp b/src/KKdLib/stage_param/snow.hpp index 1d23f925..0ee2efa6 100644 --- a/src/KKdLib/stage_param/snow.hpp +++ b/src/KKdLib/stage_param/snow.hpp @@ -10,11 +10,11 @@ #include struct stage_param_snow_colli_ground { - float_t field_0; - float_t field_4; - float_t field_8; - float_t field_C; - float_t field_10; + float_t min_x; + float_t max_x; + float_t min_z; + float_t max_z; + float_t y; stage_param_snow_colli_ground(); }; diff --git a/src/ReDIVA/data_initialize.cpp b/src/ReDIVA/data_initialize.cpp index 9912b812..55ba1d37 100644 --- a/src/ReDIVA/data_initialize.cpp +++ b/src/ReDIVA/data_initialize.cpp @@ -43,7 +43,8 @@ bool TaskDataInit::Ctrl() { switch (state) { case 0: { - sprite_manager_reset_res_data(); + // Fucks up scaling + //sprite_manager_reset_res_data(); sprite_manager_read_file(4, "", aft_data, aft_spr_db); sprite_manager_read_file(472, "", aft_data, aft_spr_db); sprite_manager_read_file(43, "", aft_data, aft_spr_db); diff --git a/src/ReDIVA/dw.cpp b/src/ReDIVA/dw.cpp index e3af785a..5a9ff06a 100644 --- a/src/ReDIVA/dw.cpp +++ b/src/ReDIVA/dw.cpp @@ -2651,11 +2651,10 @@ namespace dw { callback_data.field_8 = 0x1000002; else { vec2 v23 = sub_1402E4790(); - if (v23.x + v10 <= v9) - if (v9 <= v23.x + v10 + v23.y) - callback_data.field_8 = 0x1000005; - else - callback_data.field_8 = 0x1000006; + if (v23.x + v10 > v9) + callback_data.field_8 = 0x1000005; + else if (v9 > v23.x + v10 + v23.y) + callback_data.field_8 = 0x1000006; } } diff --git a/src/ReDIVA/render.cpp b/src/ReDIVA/render.cpp index d3922247..c6dfe9a1 100644 --- a/src/ReDIVA/render.cpp +++ b/src/ReDIVA/render.cpp @@ -240,6 +240,8 @@ int32_t render_main(render_init_struct* ris) { #if !(BAKE_PNG || BAKE_VIDEO) width = window_rect.right; height = window_rect.bottom; + old_width = width; + old_height = height; #endif scale_index = ris->scale_index > 0 && ris->scale_index < RENDER_SCALE_MAX @@ -852,6 +854,8 @@ static render_context* render_context_load() { internal_2d_res.x, internal_2d_res.y, width, height); rctx->render_manager.resize(internal_2d_res.x, internal_2d_res.y); rctx->litproj->resize(internal_3d_res.x, internal_3d_res.y); + sprite_manager_set_res((double_t)internal_2d_res.x / (double_t)internal_2d_res.y, + internal_2d_res.x, internal_2d_res.y); rctx->camera->initialize(aspect); @@ -1326,22 +1330,12 @@ static void render_resize_fb(render_context* rctx, bool change_fb) { double_t res_width = (double_t)width; double_t res_height = (double_t)height; double_t view_aspect = res_width / res_height; - res_width = round(res_height * aspect); - res_height = round(res_width / aspect); - if (view_aspect < aspect) { - res_width = (double_t)width; + if (view_aspect < aspect) res_height = round(res_width / aspect); - } - else { + else if (view_aspect > aspect) res_width = round(res_height * aspect); - res_height = round(res_width / aspect); - if (view_aspect > aspect) - res_height = round(res_width / aspect); - } - vec2i internal_res; - internal_res.x = (int32_t)res_width; - internal_res.y = (int32_t)res_height; + vec2i internal_res = { (int32_t)res_width, (int32_t)res_height }; #if BAKE_PNG || BAKE_VIDEO internal_2d_res = vec2i::clamp(internal_res * 2, 1, sv_max_texture_size);