소스 검색

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);
 	}