From 6fb094093a8e8395ff73d594d1481e2fe04128f5 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Wed, 13 Sep 2023 12:38:18 +0300 Subject: [PATCH] Apply new findings --- src/CRE/draw_object.cpp | 12 ++++++------ src/CRE/object.cpp | 27 ++++++++++++++------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/CRE/draw_object.cpp b/src/CRE/draw_object.cpp index 40a1a8d7..b3d116c9 100644 --- a/src/CRE/draw_object.cpp +++ b/src/CRE/draw_object.cpp @@ -806,14 +806,14 @@ static void draw_object_material_set_default(render_context* rctx, const mdl::Ob rctx->obj_batch.g_texture_blend = { (float_t)uniform_value[U_TEXTURE_BLEND], 0.0f, 0.0f, 0.0f }; if (lighting_type != OBJ_MATERIAL_SHADER_LIGHTING_CONSTANT) { - float_t state_shininess; + float_t material_shininess; if (material->material.shader.index == SHADER_FT_GLASEYE/*SHADER_FT_EYEBALL*/) - state_shininess = 10.0f; + material_shininess = 10.0f; else { - state_shininess = (material->material.color.shininess - 16.0f) * (float_t)(1.0 / 112.0); - state_shininess = max_def(state_shininess, 0.0f); + material_shininess = (material->material.color.shininess - 16.0f) * (float_t)(1.0 / 112.0); + material_shininess = max_def(material_shininess, 0.0f); } - rctx->obj_batch.g_material_state_shininess = { state_shininess, 0.0f, 0.0f, 1.0f }; + rctx->obj_batch.g_material_state_shininess = { material_shininess, 0.0f, 0.0f, 1.0f }; float_t fresnel = (float_t)material->material.shader_info.m.fresnel_type; if (fresnel > 9.0f) @@ -1000,7 +1000,7 @@ static void draw_object_material_set_uniform(const obj_material_data* mat_data, uniform_value[U_TRANSPARENCY] = 1; v4 |= 2; } - if (shader_compo.transparency) { + if (shader_compo.translucency) { uniform_value[U_TRANSLUCENCY] = 1; v4 |= 2; } diff --git a/src/CRE/object.cpp b/src/CRE/object.cpp index 74033605..51c01ecf 100644 --- a/src/CRE/object.cpp +++ b/src/CRE/object.cpp @@ -28,8 +28,8 @@ static bool obj_set_handler_load_textures_modern(obj_set_handler* handler, const void* data, size_t size, const char* file, texture_database* tex_db); static bool obj_set_handler_vertex_buffer_load(obj_set_handler* handler); static void obj_set_handler_vertex_buffer_free(obj_set_handler* handler); -static size_t obj_vertex_format_get_vertex_size(obj_vertex_format format); -static size_t obj_vertex_format_get_vertex_size_comp(obj_vertex_format format); +static uint32_t obj_vertex_format_get_vertex_size(obj_vertex_format format); +static uint32_t obj_vertex_format_get_vertex_size_comp(obj_vertex_format format); std::map object_storage_data; std::map object_storage_data_modern; @@ -157,17 +157,18 @@ bool obj_mesh_vertex_buffer::load(obj_mesh& mesh, bool dynamic) { if (!mesh.num_vertex || !mesh.vertex_array) return false; - size_t size_vertex; + uint32_t size_vertex; if (!mesh.attrib.m.compressed) size_vertex = obj_vertex_format_get_vertex_size(mesh.vertex_format); else size_vertex = obj_vertex_format_get_vertex_size_comp(mesh.vertex_format); - void* vertex = force_malloc(size_vertex * mesh.num_vertex); + void* vertex = force_malloc((size_t)size_vertex * mesh.num_vertex); obj_mesh_vertex_buffer::fill_data(vertex, mesh); - mesh.size_vertex = (int32_t)size_vertex; + mesh.size_vertex = size_vertex; - bool ret = load_data(size_vertex * mesh.num_vertex, vertex, mesh.attrib.m.double_buffer ? 2 : 1, dynamic); + bool ret = load_data((size_t)size_vertex * mesh.num_vertex, + vertex, mesh.attrib.m.double_buffer ? 2 : 1, dynamic); free_def(vertex); return ret; } @@ -443,14 +444,14 @@ bool obj_vertex_buffer::load(obj* obj) { if (!mesh.num_vertex || !mesh.vertex_array) continue; - size_t size_vertex; + uint32_t size_vertex; if (!mesh.attrib.m.compressed) size_vertex = obj_vertex_format_get_vertex_size(mesh.vertex_format); else size_vertex = obj_vertex_format_get_vertex_size_comp(mesh.vertex_format); - mesh.size_vertex = (int32_t)size_vertex; + mesh.size_vertex = size_vertex; - buffer_size += size_vertex * mesh.num_vertex; + buffer_size += (size_t)size_vertex * mesh.num_vertex; double_buffer |= !!mesh.attrib.m.double_buffer; } @@ -2282,8 +2283,8 @@ static void obj_set_handler_vertex_buffer_free(obj_set_handler* handler) { handler->vertex_buffer_num = 0; } -inline static size_t obj_vertex_format_get_vertex_size(obj_vertex_format format) { - size_t size = 0; +inline static uint32_t obj_vertex_format_get_vertex_size(obj_vertex_format format) { + uint32_t size = 0; if (format & OBJ_VERTEX_POSITION) size += 12; if (format & OBJ_VERTEX_NORMAL) @@ -2311,8 +2312,8 @@ inline static size_t obj_vertex_format_get_vertex_size(obj_vertex_format format) return size; } -inline static size_t obj_vertex_format_get_vertex_size_comp(obj_vertex_format format) { - size_t size = 0; +inline static uint32_t obj_vertex_format_get_vertex_size_comp(obj_vertex_format format) { + uint32_t size = 0; if (format & OBJ_VERTEX_POSITION) size += 12; if (format & OBJ_VERTEX_NORMAL)