diff --git a/fggl/gfx/ogl4/meshes.cpp b/fggl/gfx/ogl4/meshes.cpp
index 0a3d6b1a52ca31eff1777d8ee66bc8b6d5e1a213..6e5976148c3cae2040f6ec0aaae8e6517adc272f 100644
--- a/fggl/gfx/ogl4/meshes.cpp
+++ b/fggl/gfx/ogl4/meshes.cpp
@@ -221,19 +221,20 @@ namespace fggl::gfx::ogl4 {
 			return {};
 		}
 
-		debug::info("requested: {}", name );
-		for ( auto& name : manager->known() ) {
-			debug::info("known type: {}", name);
+		auto* material = manager->get<Material>("ogl_"+name);
+		if ( material != nullptr ) {
+			return material;
 		}
 
-		Material* material = new Material();
+		material = new Material();
 		if ( !meshMaterial->diffuseTextures.empty() ) {
 			material->m_diffuse = upload_texture(meshMaterial->getPrimaryDiffuse(), manager);
 		}
 		if ( !meshMaterial->normalTextures.empty() ) {
 			material->m_normals = upload_texture(meshMaterial->getPrimaryNormals(), manager);
 		}
-		return material;
+
+		return manager->set("ogl_"+name, material);
 	}
 
 	MeshData upload_mesh(const mesh::Mesh3D& rawMesh, assets::AssetManager* manager) {