From f53da6a0bf155a40aa6a162ffe8fae339af73f4c Mon Sep 17 00:00:00 2001 From: korenkonder Date: Tue, 9 Jan 2024 14:42:33 +0300 Subject: [PATCH] Renamed `translucent_no_shadow` to `translucent_sort_by_radius` --- src/DivaGL/mdl/disp_manager.cpp | 13 ++++--- src/DivaGL/mdl/disp_manager.hpp | 66 ++++++++++++++++----------------- src/DivaGL/object.hpp | 2 +- src/DivaGL/render_manager.cpp | 8 ++-- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/DivaGL/mdl/disp_manager.cpp b/src/DivaGL/mdl/disp_manager.cpp index e3e75a0..5cadcdd 100644 --- a/src/DivaGL/mdl/disp_manager.cpp +++ b/src/DivaGL/mdl/disp_manager.cpp @@ -4,6 +4,7 @@ */ #include "disp_manager.hpp" +#include "../../KKdLib/hash.hpp" #include "../Glitter/glitter.hpp" #include "../rob/rob.hpp" #include "../gl_state.hpp" @@ -1586,7 +1587,7 @@ namespace mdl { switch (type) { case OBJ_TYPE_TRANSLUCENT: - case OBJ_TYPE_TRANSLUCENT_NO_SHADOW: + case OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS: //case OBJ_TYPE_TRANSLUCENT_LOCAL: if (depth_mask) func = draw_sub_mesh_translucent; @@ -1695,7 +1696,7 @@ namespace mdl { switch (type) { case OBJ_TYPE_TRANSLUCENT: - case OBJ_TYPE_TRANSLUCENT_NO_SHADOW: + case OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS: case OBJ_TYPE_REFLECT_TRANSLUCENT: case OBJ_TYPE_REFRACT_TRANSLUCENT: if (!depth_mask) @@ -1927,7 +1928,7 @@ namespace mdl { obj_mesh_index_buffer* obj_index_buf, const mat4* mat, prj::vector* textures, vec4* blend_color, mat4* bone_mat, ::obj* object_morph, obj_mesh_vertex_buffer* obj_morph_vertex_buf, int32_t instances_count, mat4* instances_mat, - void(*func)(const ObjSubMeshArgs*), const ObjSubMeshArgs* func_data, + void(*func)(const mdl::ObjSubMeshArgs*), const ObjSubMeshArgs* func_data, bool enable_bone_mat, bool local) { if (!obj_vertex_buf || !obj_index_buf) return false; @@ -2231,9 +2232,9 @@ namespace mdl { if (!attrib.translucent_priority) /*if (local) entry_list(OBJ_TYPE_TRANSLUCENT_LOCAL, data); - else */if (mesh->attrib.m.translucent_no_shadow - || obj_flags & mdl::OBJ_TRANSLUCENT_NO_SHADOW) { - entry_list(OBJ_TYPE_TRANSLUCENT_NO_SHADOW, data); + else */if (mesh->attrib.m.translucent_sort_by_radius + || obj_flags & mdl::OBJ_TRANSLUCENT_SORT_BY_RADIUS) { + entry_list(OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, data); } else entry_list(OBJ_TYPE_TRANSLUCENT, data); diff --git a/src/DivaGL/mdl/disp_manager.hpp b/src/DivaGL/mdl/disp_manager.hpp index ddb1714..d3e9401 100644 --- a/src/DivaGL/mdl/disp_manager.hpp +++ b/src/DivaGL/mdl/disp_manager.hpp @@ -40,44 +40,44 @@ namespace mdl { }; enum ObjFlags : uint32_t { - OBJ_SHADOW = 0x00000001, - OBJ_2 = 0x00000002, - OBJ_4 = 0x00000004, - OBJ_8 = 0x00000008, - OBJ_10 = 0x00000010, - OBJ_20 = 0x00000020, - OBJ_40 = 0x00000040, - OBJ_SHADOW_OBJECT = 0x00000080, - OBJ_CHARA_REFLECT = 0x00000100, - OBJ_REFLECT = 0x00000200, - OBJ_REFRACT = 0x00000400, - OBJ_800 = 0x00000800, - OBJ_TRANSLUCENT_NO_SHADOW = 0x00001000, - OBJ_SSS = 0x00002000, - OBJ_4000 = 0x00004000, - OBJ_8000 = 0x00008000, - OBJ_ALPHA_ORDER_1 = 0x00010000, - OBJ_ALPHA_ORDER_2 = 0x00020000, - OBJ_ALPHA_ORDER_3 = 0x00040000, - OBJ_80000 = 0x00080000, - OBJ_100000 = 0x00100000, - OBJ_200000 = 0x00200000, - OBJ_400000 = 0x00400000, - OBJ_800000 = 0x00800000, - OBJ_USER = 0x01000000, - OBJ_2000000 = 0x02000000, - OBJ_4000000 = 0x04000000, - OBJ_8000000 = 0x08000000, - OBJ_10000000 = 0x10000000, - OBJ_20000000 = 0x20000000, - OBJ_40000000 = 0x40000000, - OBJ_NO_TRANSLUCENCY = 0x80000000, + OBJ_SHADOW = 0x00000001, + OBJ_2 = 0x00000002, + OBJ_4 = 0x00000004, + OBJ_8 = 0x00000008, + OBJ_10 = 0x00000010, + OBJ_20 = 0x00000020, + OBJ_40 = 0x00000040, + OBJ_SHADOW_OBJECT = 0x00000080, + OBJ_CHARA_REFLECT = 0x00000100, + OBJ_REFLECT = 0x00000200, + OBJ_REFRACT = 0x00000400, + OBJ_800 = 0x00000800, + OBJ_TRANSLUCENT_SORT_BY_RADIUS = 0x00001000, + OBJ_SSS = 0x00002000, + OBJ_4000 = 0x00004000, + OBJ_8000 = 0x00008000, + OBJ_ALPHA_ORDER_1 = 0x00010000, + OBJ_ALPHA_ORDER_2 = 0x00020000, + OBJ_ALPHA_ORDER_3 = 0x00040000, + OBJ_80000 = 0x00080000, + OBJ_100000 = 0x00100000, + OBJ_200000 = 0x00200000, + OBJ_400000 = 0x00400000, + OBJ_800000 = 0x00800000, + OBJ_USER = 0x01000000, + OBJ_2000000 = 0x02000000, + OBJ_4000000 = 0x04000000, + OBJ_8000000 = 0x08000000, + OBJ_10000000 = 0x10000000, + OBJ_20000000 = 0x20000000, + OBJ_40000000 = 0x40000000, + OBJ_NO_TRANSLUCENCY = 0x80000000, }; enum ObjType { OBJ_TYPE_OPAQUE = 0, OBJ_TYPE_TRANSLUCENT, - OBJ_TYPE_TRANSLUCENT_NO_SHADOW, + OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, OBJ_TYPE_TRANSPARENT, OBJ_TYPE_SHADOW_CHARA, OBJ_TYPE_SHADOW_STAGE, diff --git a/src/DivaGL/object.hpp b/src/DivaGL/object.hpp index 44e01de..4748405 100644 --- a/src/DivaGL/object.hpp +++ b/src/DivaGL/object.hpp @@ -323,7 +323,7 @@ static_assert(sizeof(obj_sub_mesh) == 0x70, "\"obj_sub_mesh\" struct should have struct obj_mesh_attrib_member { uint32_t double_buffer : 1; uint32_t billboard_y_axis : 1; - uint32_t translucent_no_shadow : 1; + uint32_t translucent_sort_by_radius : 1; uint32_t billboard : 1; uint32_t dummy : 28; }; diff --git a/src/DivaGL/render_manager.cpp b/src/DivaGL/render_manager.cpp index 8f640eb..e8410e9 100644 --- a/src/DivaGL/render_manager.cpp +++ b/src/DivaGL/render_manager.cpp @@ -703,7 +703,7 @@ namespace rndr { if (alpha_z_sort) { disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT, 1); - disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_NO_SHADOW, 2); + disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, 2); disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, 1); disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, 1); disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, 1); @@ -768,7 +768,7 @@ namespace rndr { gl_state_enable_blend(); gl_state_set_blend_func(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); gl_state_set_depth_mask(GL_FALSE); - disp_manager->draw(mdl::OBJ_TYPE_TRANSLUCENT_NO_SHADOW); + disp_manager->draw(mdl::OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS); disp_manager->draw(mdl::OBJ_TYPE_TRANSLUCENT); gl_state_disable_blend(); } @@ -859,7 +859,7 @@ namespace rndr { if (alpha_z_sort) { disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT, 1); - disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_NO_SHADOW, 2); + disp_manager->obj_sort(&rctx->view_mat, mdl::OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, 2); } if (opaque_z_sort) @@ -875,7 +875,7 @@ namespace rndr { if (draw_pass_3d[DRAW_PASS_3D_TRANSPARENT]) draw_task_draw_objects_by_type_show_vector(mdl::OBJ_TYPE_TRANSPARENT, i); if (draw_pass_3d[DRAW_PASS_3D_TRANSLUCENT]) { - draw_task_draw_objects_by_type_show_vector(mdl::OBJ_TYPE_TRANSLUCENT_NO_SHADOW, i); + draw_task_draw_objects_by_type_show_vector(mdl::OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, i); draw_task_draw_objects_by_type_show_vector(mdl::OBJ_TYPE_TRANSLUCENT, i); } }