From 61b87d3b31f41a8532300e46857d6e89594f3a55 Mon Sep 17 00:00:00 2001 From: Benau Date: Mon, 25 Jul 2022 10:05:46 +0800 Subject: [PATCH] Convert irrlicht mesh for addSphere --- lib/graphics_engine/src/ge_vulkan_scene_manager.cpp | 8 +++++++- src/graphics/irr_driver.cpp | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/graphics_engine/src/ge_vulkan_scene_manager.cpp b/lib/graphics_engine/src/ge_vulkan_scene_manager.cpp index 3a3f4b066..84c45c75c 100644 --- a/lib/graphics_engine/src/ge_vulkan_scene_manager.cpp +++ b/lib/graphics_engine/src/ge_vulkan_scene_manager.cpp @@ -144,7 +144,13 @@ irr::scene::IMeshSceneNode* GEVulkanSceneManager::addMeshSceneNode( video::S3DVertexSkinnedMesh sp; sp.m_position = v_ptr[j].Pos; sp.m_normal = MiniGLM::compressVector3(v_ptr[j].Normal); - sp.m_color = v_ptr[j].Color; + video::SColorf orig(v_ptr[j].Color); + video::SColorf diffuse(mb->getMaterial().DiffuseColor); + orig.r = orig.r * diffuse.r; + orig.g = orig.g * diffuse.g; + orig.b = orig.b * diffuse.b; + orig.a = orig.a * diffuse.a; + sp.m_color = orig.toSColor(); sp.m_all_uvs[0] = MiniGLM::toFloat16(v_ptr[j].TCoords.X); sp.m_all_uvs[1] = MiniGLM::toFloat16(v_ptr[j].TCoords.Y); spm_mb->m_vertices.push_back(sp); diff --git a/src/graphics/irr_driver.cpp b/src/graphics/irr_driver.cpp index 2d60e4dba..d88c7e5dc 100644 --- a/src/graphics/irr_driver.cpp +++ b/src/graphics/irr_driver.cpp @@ -1355,7 +1355,17 @@ scene::ISceneNode *IrrDriver::addSphere(float radius, } #endif +#ifndef SERVER_ONLY + bool vk = (GE::getVKDriver() != NULL); + if (vk) + GE::getGEConfig()->m_convert_irrlicht_mesh = true; +#endif scene::IMeshSceneNode *node = m_scene_manager->addMeshSceneNode(mesh); +#ifndef SERVER_ONLY + if (vk) + GE::getGEConfig()->m_convert_irrlicht_mesh = false; +#endif + mesh->drop(); return node; } // addSphere