Renamed Alpha Order types

This commit is contained in:
korenkonder
2025-05-30 23:12:42 +03:00
parent 7a13681d90
commit eb5d2112cb
8 changed files with 108 additions and 106 deletions
+1 -1
View File
@@ -754,7 +754,7 @@ void auth_3d::reset() {
once = false;
mat = mat4_identity;
alpha = 1.0f;
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_POST_GLITTER;
chara_id = -1;
chara_item = false;
shadow = false;
+31 -32
View File
@@ -2226,16 +2226,16 @@ namespace mdl {
if (reflect_draw)
rend_data_ctx.state.set_cull_face_mode(GL_FRONT);
break;
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1:
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2:
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3:
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_GLITTER:
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_TRANSLUCENT:
case OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_OPAQUE:
alpha_test = 1;
min_alpha = 0.1f;
alpha_threshold = 0.5f;
break;
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE:
rend_data_ctx.state.set_depth_mask(GL_FALSE);
alpha_test = 1;
@@ -2327,9 +2327,9 @@ namespace mdl {
if (reflect_draw)
rend_data_ctx.state.set_cull_face_mode(GL_BACK);
break;
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT:
case OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE:
rend_data_ctx.state.set_depth_mask(GL_TRUE);
break;
}
@@ -2793,8 +2793,7 @@ namespace mdl {
}
const obj_material_attrib_member attrib = material->material.attrib.m;
if (obj_flags & (mdl::OBJ_ALPHA_ORDER_1 | mdl::OBJ_ALPHA_ORDER_2 | mdl::OBJ_ALPHA_ORDER_3)
&& data->args.sub_mesh.blend_color.w < 1.0f) {
if ((obj_flags & mdl::OBJ_ALPHA_ORDER) && data->args.sub_mesh.blend_color.w < 1.0f) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
bool translucent = false;
if (!attrib.flag_28 && (!attrib.punch_through
@@ -2803,29 +2802,29 @@ namespace mdl {
translucent = true;
if (translucent) {
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_GLITTER)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT, data);
else
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE, data);
}
else {
if (!attrib.punch_through) {
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_2, data);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_GLITTER)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_GLITTER, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_TRANSLUCENT, data);
else
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_3, data);
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_OPAQUE, data);
}
else {
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2, data);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_GLITTER)
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_GLITTER, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT)
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_TRANSLUCENT, data);
else
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3, data);
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_OPAQUE, data);
}
if (obj_flags & mdl::OBJ_SSS)
@@ -2927,12 +2926,12 @@ namespace mdl {
ObjData* data = alloc_obj_data(OBJ_KIND_TRANSLUCENT);
if (data) {
data->init_translucent(mat, translucent_args);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_3)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_GLITTER)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT, data);
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_POST_OPAQUE)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE, data);
else
entry_list(OBJ_TYPE_TRANSLUCENT, data);
}
+44 -41
View File
@@ -94,38 +94,41 @@ 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_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,
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_POST_GLITTER = 0x00010000,
OBJ_ALPHA_ORDER_POST_TRANSLUCENT = 0x00020000,
OBJ_ALPHA_ORDER_POST_OPAQUE = 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_ALPHA_ORDER = OBJ_ALPHA_ORDER_POST_OPAQUE
| OBJ_ALPHA_ORDER_POST_TRANSLUCENT | OBJ_ALPHA_ORDER_POST_GLITTER,
};
enum ObjType {
@@ -149,15 +152,15 @@ namespace mdl {
OBJ_TYPE_REFRACT_TRANSLUCENT,
OBJ_TYPE_REFRACT_TRANSPARENT,
OBJ_TYPE_SSS,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_1,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_2,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_3,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_GLITTER,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_GLITTER,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_TRANSLUCENT,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_TRANSLUCENT,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT,
OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_OPAQUE,
OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_OPAQUE,
OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE,
OBJ_TYPE_USER,
OBJ_TYPE_MAX,
};
+3 -3
View File
@@ -1026,13 +1026,13 @@ namespace pv_param_task {
switch (i.type) {
case 0:
default:
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_POST_GLITTER;
break;
case 1:
obj_flags = mdl::OBJ_ALPHA_ORDER_2;
obj_flags = mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT;
break;
case 2:
obj_flags = mdl::OBJ_ALPHA_ORDER_3;
obj_flags = mdl::OBJ_ALPHA_ORDER_POST_OPAQUE;
break;
}
+21 -21
View File
@@ -1022,11 +1022,11 @@ namespace rndr {
rctx->disp_manager->obj_sort(rend_data_ctx,
mdl::OBJ_TYPE_TRANSLUCENT_SORT_BY_RADIUS, 2, cam);
rctx->disp_manager->obj_sort(rend_data_ctx,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, 1, cam, field_31F);
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER, 1, cam, field_31F);
rctx->disp_manager->obj_sort(rend_data_ctx,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, 1, cam, field_31F);
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT, 1, cam, field_31F);
rctx->disp_manager->obj_sort(rend_data_ctx,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, 1, cam, field_31F);
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE, 1, cam, field_31F);
}
if (opaque_z_sort)
@@ -1057,9 +1057,9 @@ namespace rndr {
star_catalog_draw(rend_data_ctx, cam);
draw_pass_3d_translucent(rend_data_ctx, rctx,
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_3,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, cam);
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_OPAQUE,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_OPAQUE,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE, cam);
snow_particle_draw(rend_data_ctx, cam);
rain_particle_draw(rend_data_ctx, cam);
@@ -1095,9 +1095,9 @@ namespace rndr {
rend_data_ctx.state.set_depth_mask(GL_TRUE);
draw_pass_3d_translucent(rend_data_ctx, rctx,
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_2,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, cam);
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_TRANSLUCENT,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_TRANSLUCENT,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT, cam);
rend_data_ctx.state.disable_depth_test();
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
@@ -1107,9 +1107,9 @@ namespace rndr {
rend_data_ctx.state.enable_depth_test();
rend_data_ctx.state.set_depth_mask(GL_TRUE);
draw_pass_3d_translucent(rend_data_ctx, rctx,
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_1,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, cam);
mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_GLITTER,
mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_GLITTER,
mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER, cam);
if (Glitter::glt_particle_manager->CheckHasLocalEffect()) { // X
rend_data_ctx.state.begin_event("local");
@@ -1778,15 +1778,15 @@ static void draw_pass_sss_filter(render_data_context& rend_data_ctx, render_cont
static int32_t draw_pass_3d_get_translucent_count(render_context* rctx) {
int32_t count = 0;
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_1);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_2);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_3);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_GLITTER);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_GLITTER);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_GLITTER);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_TRANSLUCENT);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_TRANSLUCENT);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_TRANSLUCENT);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_OPAQUE_ALPHA_ORDER_POST_OPAQUE);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_POST_OPAQUE);
count += rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_POST_OPAQUE);
return count;
}
+2 -2
View File
@@ -13433,7 +13433,7 @@ void rob_chara_item_equip_object::disp(const mat4& mat, render_context* rctx) {
if (fabsf(alpha - 1.0f) > 0.000001f)
enum_or(chara_flags, obj_flags);
else
enum_and(chara_flags, ~(mdl::OBJ_ALPHA_ORDER_3 | mdl::OBJ_ALPHA_ORDER_2 | mdl::OBJ_ALPHA_ORDER_1));
enum_and(chara_flags, ~mdl::OBJ_ALPHA_ORDER);
rctx->disp_manager->set_obj_flags(chara_flags);
if (can_disp) {
rctx->disp_manager->entry_obj_by_object_info_object_skin(obj_info,
@@ -13548,7 +13548,7 @@ void rob_chara_item_equip_object::init_members(size_t index) {
texture_data.texture_specular_coefficients = 1.0f;
texture_data.texture_specular_offset = 0.0f;
alpha = 1.0f;
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_POST_GLITTER;
null_blocks_data_set = 0;
can_disp = true;
field_A4 = 0;
+3 -3
View File
@@ -5057,13 +5057,13 @@ void pv_game::chara_item_alpha_callback(void* data, int32_t chara_id, int32_t ty
switch (type) {
case 0:
default:
flags = mdl::OBJ_ALPHA_ORDER_1;
flags = mdl::OBJ_ALPHA_ORDER_POST_GLITTER;
break;
case 1:
flags = mdl::OBJ_ALPHA_ORDER_2;
flags = mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT;
break;
case 2:
flags = mdl::OBJ_ALPHA_ORDER_3;
flags = mdl::OBJ_ALPHA_ORDER_POST_OPAQUE;
break;
}
+3 -3
View File
@@ -10750,13 +10750,13 @@ static void x_pv_game_item_alpha_callback(void* data, int32_t chara_id, int32_t
switch (type) {
case 0:
default:
flags = mdl::OBJ_ALPHA_ORDER_1;
flags = mdl::OBJ_ALPHA_ORDER_POST_GLITTER;
break;
case 1:
flags = mdl::OBJ_ALPHA_ORDER_2;
flags = mdl::OBJ_ALPHA_ORDER_POST_TRANSLUCENT;
break;
case 2:
flags = mdl::OBJ_ALPHA_ORDER_3;
flags = mdl::OBJ_ALPHA_ORDER_POST_OPAQUE;
break;
}