浏览代码

Don't try to merge unused bone AABBs in the rendering server

Aaron Franke 3 年之前
父节点
当前提交
e0d80b37e9
共有 2 个文件被更改,包括 8 次插入2 次删除
  1. 4 1
      drivers/gles3/storage/mesh_storage.cpp
  2. 4 1
      servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp

+ 4 - 1
drivers/gles3/storage/mesh_storage.cpp

@@ -255,7 +255,10 @@ void MeshStorage::mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_surface)
 			mesh->bone_aabbs.resize(p_surface.bone_aabbs.size());
 		}
 		for (int i = 0; i < p_surface.bone_aabbs.size(); i++) {
-			mesh->bone_aabbs.write[i].merge_with(p_surface.bone_aabbs[i]);
+			AABB bone = p_surface.bone_aabbs[i];
+			if (!bone.has_no_volume()) {
+				mesh->bone_aabbs.write[i].merge_with(p_surface.bone_aabbs[i]);
+			}
 		}
 		mesh->aabb.merge_with(p_surface.aabb);
 	}

+ 4 - 1
servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp

@@ -416,7 +416,10 @@ void MeshStorage::mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_surface)
 			mesh->bone_aabbs.resize(p_surface.bone_aabbs.size());
 		}
 		for (int i = 0; i < p_surface.bone_aabbs.size(); i++) {
-			mesh->bone_aabbs.write[i].merge_with(p_surface.bone_aabbs[i]);
+			AABB bone = p_surface.bone_aabbs[i];
+			if (!bone.has_no_volume()) {
+				mesh->bone_aabbs.write[i].merge_with(p_surface.bone_aabbs[i]);
+			}
 		}
 		mesh->aabb.merge_with(p_surface.aabb);
 	}