diff --git a/src/CRE/render_manager.cpp b/src/CRE/render_manager.cpp index d4b9ccdf..01f0372f 100644 --- a/src/CRE/render_manager.cpp +++ b/src/CRE/render_manager.cpp @@ -87,8 +87,8 @@ namespace rndr { render(), sync_gpu(), cpu_time(), gpu_time(), draw_pass_3d(), field_11E(), field_11F(), field_120(), show_ref_map(), reflect_type(), clear(), tex_index(), width(), height(), multisample_framebuffer(), multisample_renderbuffer(), multisample(), check_state(), - show_vector_flags(), show_vector_length(), show_vector_z_offset(), field_2F8(), effect_texture(), - npr_param(), field_31C(), field_31D(), field_31E(), field_31F(), field_320(), npr() { + show_vector_flags(), show_vector_length(), show_vector_z_offset(), show_stage_shadow(), + effect_texture(), npr_param(), field_31C(), field_31D(), field_31E(), field_31F(), field_320(), npr() { for (bool& i : pass_sw) i = true; @@ -158,7 +158,7 @@ namespace rndr { show_vector_flags = 0; show_vector_length = 0.05f; show_vector_z_offset = 0.0f; - field_2F8 = false; + show_stage_shadow = false; effect_texture = 0; reflect = false; @@ -433,7 +433,8 @@ namespace rndr { draw_pass_shadow_begin_make_shadowmap(shad, v11[i], j); rctx->disp_manager->draw((mdl::ObjType)(mdl::OBJ_TYPE_SHADOW_CHARA + v11[i])); if (rctx->disp_manager->get_obj_count((mdl::ObjType)(mdl::OBJ_TYPE_SHADOW_OBJECT_CHARA + v11[i])) > 0) { - gl_state_set_color_mask(field_2F8 ? GL_TRUE : GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + gl_state_set_color_mask(show_stage_shadow + ? GL_TRUE : GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); rctx->disp_manager->draw((mdl::ObjType)(mdl::OBJ_TYPE_SHADOW_OBJECT_CHARA + i)); gl_state_set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); } @@ -1210,7 +1211,7 @@ static void draw_pass_shadow_begin_make_shadowmap(Shadow* shad, int32_t index, i glClear(GL_COLOR_BUFFER_BIT); glScissor(1, 1, tex->width - 2, tex->height - 2); - float_t range = shad->get_range(); + float_t shadow_range = shad->get_shadow_range(); float_t offset; vec3* interest; vec3* view_point; @@ -1229,7 +1230,8 @@ static void draw_pass_shadow_begin_make_shadowmap(Shadow* shad, int32_t index, i mat4_translate(offset, 0.0f, 0.0f, &temp); mat4 proj; - mat4_ortho(-range, range, -range, range, shad->z_near, shad->z_far, &proj); + mat4_ortho(-shadow_range, shadow_range, + -shadow_range, shadow_range, shad->z_near, shad->z_far, &proj); mat4_mul(&proj, &temp, &rctx->proj_mat); mat4_look_at(view_point, interest, &rctx->view_mat); @@ -1643,7 +1645,7 @@ static void draw_pass_3d_shadow_set(Shadow* shad, render_context* rctx) { rctx->draw_state->light = true; uniform_value[U_LIGHT_1] = shad->num_light > 1 ? 1 : 0; - float_t range = shad->get_range(); + float_t shadow_range = shad->get_shadow_range(); for (int32_t i = 0; i < 2; i++) { float_t offset; vec3* interest; @@ -1666,7 +1668,8 @@ static void draw_pass_3d_shadow_set(Shadow* shad, render_context* rctx) { mat4_mul_translate(&temp, offset, 0.0f, 0.0f, &temp); mat4 proj; - mat4_ortho(-range, range, -range, range, shad->z_near, shad->z_far, &proj); + mat4_ortho(-shadow_range, shadow_range, + -shadow_range, shadow_range, shad->z_near, shad->z_far, &proj); mat4_mul(&proj, &temp, &proj); mat4 view; @@ -1693,11 +1696,8 @@ static void draw_pass_3d_shadow_set(Shadow* shad, render_context* rctx) { vec4 ambient; if (data->get_type() == LIGHT_PARALLEL) data->get_ambient(ambient); - else { - ambient.x = shad->ambient; - ambient.y = shad->ambient; - ambient.z = shad->ambient; - } + else + *(vec3*)&ambient.x = shad->shadow_ambient; rctx->obj_scene.g_shadow_ambient = { ambient.x, ambient.y, ambient.z, 1.0f }; rctx->obj_scene.g_shadow_ambient1 = { 1.0f - ambient.x, 1.0f - ambient.y, 1.0f - ambient.z, 0.0f }; diff --git a/src/CRE/render_manager.hpp b/src/CRE/render_manager.hpp index ce91d502..56c070da 100644 --- a/src/CRE/render_manager.hpp +++ b/src/CRE/render_manager.hpp @@ -76,7 +76,7 @@ namespace rndr { int32_t show_vector_flags; float_t show_vector_length; float_t show_vector_z_offset; - bool field_2F8; + bool show_stage_shadow; std::list pre_process; texture* effect_texture; int32_t npr_param; diff --git a/src/CRE/shadow.cpp b/src/CRE/shadow.cpp index efbbfc9b..d9c0e03a 100644 --- a/src/CRE/shadow.cpp +++ b/src/CRE/shadow.cpp @@ -10,10 +10,10 @@ Shadow* shadow_ptr; extern render_context* rctx_ptr; -Shadow::Shadow() : curr_render_textures(), view_region(), range(), field_1C0(), field_1C8(), -field_200(), field_208(), near_blur(), blur_filter(), far_blur(), field_2BC(), distance(), -field_2C4(), z_near(), z_far(), field_2D0(), field_2D4(), field_2D8(), field_2DC(), field_2E0(), -ambient(), field_2E8(), num_light(), light_enable(), self_shadow(), blur_filter_enable(), separate() { +Shadow::Shadow() : curr_render_textures(), shadow_range(), shadow_range_factor(), field_1C0(), field_1C8(), +field_200(), field_208(), near_blur(), blur_filter(), far_blur(), field_2BC(), distance(), field_2C4(), +z_near(), z_far(), field_2D0(), field_2D4(), field_2D8(), field_2DC(), field_2E0(), shadow_ambient(), +show_texture(), num_light(), light_enable(), self_shadow(), blur_filter_enable(), separate() { reset(); } @@ -111,7 +111,7 @@ void Shadow::ctrl() { float_t v2 = max_def(field_1C8[0], field_1C8[1]); separate = false; - view_region = v2 + 1.2f; + shadow_range = v2 + 1.2f; field_200[0] = 0; field_200[1] = 1; if (num_light >= 2) { @@ -125,11 +125,11 @@ void Shadow::ctrl() { v16 = 0.0f; if (v16 > 1.2f) { - view_region = v2 + 2.4f; + shadow_range = v2 + 2.4f; separate = true; } else - view_region = v2 + 1.2f + v16; + shadow_range = v2 + 1.2f + v16; if (vec3::dot(v12, direction) < vec3::dot(v14, direction)) { field_200[1] = 0; @@ -211,7 +211,7 @@ void Shadow::ctrl() { float_t v2 = 0.0f; float_t v67 = max_def(field_1C8[0], field_1C8[1]); separate = false; - view_region = v67 + 1.2f; + shadow_range = v67 + 1.2f; field_200[0] = 0; field_200[1] = 1; if (num_light >= 2) { @@ -248,11 +248,11 @@ void Shadow::ctrl() { v79 = v70; if (v79 > v67 + 1.2f) { - view_region = v67 + 2.4f; + shadow_range = v67 + 2.4f; separate = true; } else - view_region = v79 + 1.2f; + shadow_range = v79 + 1.2f; if (vec3::dot(field_1A8[0] - interest_shared, direction) < vec3::dot(field_1A8[1] - interest_shared, direction)) { @@ -273,8 +273,8 @@ void Shadow::free() { reset(); } -float_t Shadow::get_range() { - return range * view_region; +float_t Shadow::get_shadow_range() { + return shadow_range * shadow_range_factor; } int32_t Shadow::init() { @@ -313,8 +313,8 @@ int32_t Shadow::init() { } void Shadow::reset() { - view_region = 1.2f; - range = 1.0f; + shadow_range = 1.2f; + shadow_range_factor = 1.0f; for (int32_t i = 0; i < 2; i++) { view_point[i] = 1.0f; @@ -341,10 +341,10 @@ void Shadow::reset() { field_2D8 = 80.0f; field_2DC = 2.0f; field_2E0 = 0.05f; - ambient = 0.4f; + shadow_ambient = 0.4f; num_light = 0; direction = vec3(0.0f, -1.0f, -1.0f) * (1.0f / sqrtf(2.0f)); - field_2E8 = false; + show_texture = false; self_shadow = true; separate = false; field_208 = (z_far - z_near) * 0.5f; diff --git a/src/CRE/shadow.hpp b/src/CRE/shadow.hpp index 3fd96b86..a6b33d89 100644 --- a/src/CRE/shadow.hpp +++ b/src/CRE/shadow.hpp @@ -21,8 +21,8 @@ enum shadow_type_enum { struct Shadow { RenderTexture render_textures[7]; RenderTexture* curr_render_textures[3]; - float_t view_region; - float_t range; + float_t shadow_range; + float_t shadow_range_factor; vec3 view_point[2]; vec3 interest[2]; vec3 field_1A8[2]; @@ -48,8 +48,8 @@ struct Shadow { float_t field_2D8; float_t field_2DC; float_t field_2E0; - float_t ambient; - bool field_2E8; + float_t shadow_ambient; + bool show_texture; int32_t num_light; bool light_enable[2]; bool self_shadow; @@ -61,7 +61,7 @@ struct Shadow { void ctrl(); void free(); - float_t get_range(); + float_t get_shadow_range(); int32_t init(); void reset(); }; diff --git a/src/CRE/stage.cpp b/src/CRE/stage.cpp index 54afb557..ab0f5c61 100644 --- a/src/CRE/stage.cpp +++ b/src/CRE/stage.cpp @@ -439,11 +439,11 @@ static bool object_bounding_sphere_check_visibility_shadow( float_t radius = sphere->radius; Shadow* shad = shadow_ptr_get(); - float_t range = shad->get_range(); - if ((center.x + radius) < -range - || (center.x - radius) > range - || (center.y + radius) < -range - || (center.y - radius) > range + float_t shadow_range = shad->get_shadow_range(); + if ((center.x + radius) < -shadow_range + || (center.x - radius) > shadow_range + || (center.y + radius) < -shadow_range + || (center.y - radius) > shadow_range || (center.z - radius) > -shad->z_near || (center.z + radius) < -shad->z_far) return false; diff --git a/src/CRE/stage_modern.cpp b/src/CRE/stage_modern.cpp index 291b2a6d..02b8fe25 100644 --- a/src/CRE/stage_modern.cpp +++ b/src/CRE/stage_modern.cpp @@ -455,11 +455,11 @@ static bool object_bounding_sphere_check_visibility_shadow( float_t radius = sphere->radius; Shadow* shad = shadow_ptr_get(); - float_t range = shad->get_range(); - if ((center.x + radius) < -range - || (center.x - radius) > range - || (center.y + radius) < -range - || (center.y - radius) > range + float_t shadow_range = shad->get_shadow_range(); + if ((center.x + radius) < -shadow_range + || (center.x - radius) > shadow_range + || (center.y + radius) < -shadow_range + || (center.y - radius) > shadow_range || (center.z - radius) > -shad->z_near || (center.z + radius) < -shad->z_far) return false; diff --git a/src/ReDIVA/pv_game/pv_game.cpp b/src/ReDIVA/pv_game/pv_game.cpp index acdc92b0..5f60f591 100644 --- a/src/ReDIVA/pv_game/pv_game.cpp +++ b/src/ReDIVA/pv_game/pv_game.cpp @@ -4681,7 +4681,7 @@ bool pv_game::unload() { rend.update_res(0, -1); rctx_ptr->disp_manager->object_culling = true; - shadow_ptr_get()->range = 1.0f; + shadow_ptr_get()->shadow_range_factor = 1.0f; rctx_ptr->render_manager->set_effect_texture(0); sound_work_reset_all_se(); diff --git a/src/ReDIVA/pv_game/pv_game_pv_data.cpp b/src/ReDIVA/pv_game/pv_game_pv_data.cpp index fb22ae26..eded49da 100644 --- a/src/ReDIVA/pv_game/pv_game_pv_data.cpp +++ b/src/ReDIVA/pv_game/pv_game_pv_data.cpp @@ -1854,9 +1854,9 @@ bool pv_game_pv_data::dsc_ctrl(float_t delta_time, int64_t curr_time, pv_game->set_data_itmpv_chara_id(chara_id, index, attach == 1); } break; case DSC_FT_SHADOW_RANGE: { - float_t range = (float_t)data[0] * 0.001f; + float_t shadow_range_factor = (float_t)data[0] * 0.001f; - shadow_ptr_get()->range = range; + shadow_ptr_get()->shadow_range_factor = shadow_range_factor; } break; case DSC_FT_HAND_SCALE: { chara_id = data[0]; diff --git a/src/ReDIVA/x_pv_game.cpp b/src/ReDIVA/x_pv_game.cpp index 24c4bcb9..8c5afe1a 100644 --- a/src/ReDIVA/x_pv_game.cpp +++ b/src/ReDIVA/x_pv_game.cpp @@ -7388,7 +7388,7 @@ bool x_pv_game::unload() { rend.update_res(0, -1); rctx_ptr->disp_manager->object_culling = true; - shadow_ptr_get()->range = 1.0f; + shadow_ptr_get()->shadow_range_factor = 1.0f; rctx_ptr->render_manager->set_effect_texture(0); sound_work_reset_all_se();