diff --git a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp index cfed001a7..1a1ba784e 100644 --- a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp +++ b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp @@ -186,6 +186,8 @@ bool AnyImageConverter::doConvertToFile(const ImageView3D& image, const Containe plugin = "OpenExrImageConverter"_s; else if(normalizedExtension == ".ktx2"_s) plugin = "KtxImageConverter"_s; + else if(normalizedExtension == ".vdb"_s) + plugin = "OpenVdbImageConverter"_s; else { Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a 3D image"; return false; diff --git a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h index ea875670d..782690e3a 100644 --- a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h +++ b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h @@ -76,6 +76,8 @@ tries to convert the file with it. Supported formats for uncompressed data: - Truevision TGA (`*.tga`, `*.vda`, `*.icb`, `*.vst`), converted with @ref TgaImageConverter or any other plugin that provides it. Only uncompressed 2D images. +- OpenVDB (`*.vdb`), converted with any plugin that provides + `OpenVdbImageConverter`. Only uncompressed 3D images. As the converter plugin is picked based on file extension, only saving to files is supported. diff --git a/src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp b/src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp index 8e1dee624..367e285f4 100644 --- a/src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp +++ b/src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp @@ -171,6 +171,7 @@ constexpr struct { {"Basis Universal", "file.basis", "BasisImageConverter"}, {"EXR", "file.exr", "OpenExrImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"}, + {"OpenVDB", "volume.vdb", "OpenVdbImageConverter"}, /* Have at least one test case with uppercase */ {"EXR uppercase", "FIL~1.EXR", "OpenExrImageConverter"} }; diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp index 9655dedce..90fd1fd10 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp @@ -125,6 +125,8 @@ void AnyImageImporter::doOpenFile(const Containers::StringView filename) { normalizedExtension == ".icb"_s || normalizedExtension == ".vst"_s) plugin = "TgaImporter"_s; + else if(normalizedExtension == ".vdb"_s) + plugin = "OpenVdbImporter"_s; else { Error{} << "Trade::AnyImageImporter::openFile(): cannot determine the format of" << filename; return; diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h index 8ceeabc1b..d312b60a9 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h @@ -97,6 +97,7 @@ Supported formats: - Truevision TGA (`*.tga`, `*.vda`, `*.icb`, `*.vst` or data with corresponding signature), loaded with @ref TgaImporter or any other plugin that provides it +- OpenVDB (`*.vdb`), loaded with any plugin that provides `OpenVdbImporter` Detecting file type through @ref openData() is supported only for a subset of formats that are marked as such in the list above. diff --git a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp index 286f5f40f..958d2ef00 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp +++ b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp @@ -122,7 +122,8 @@ constexpr struct { {"TIFF", "image.tiff", false, "TiffImporter"}, {"TIFF data", "image.tiff", true, "TiffImporter"}, {"Basis", "rgb.basis", false, "BasisImporter"}, - {"Basis data", "rgb.basis", true, "BasisImporter"} + {"Basis data", "rgb.basis", true, "BasisImporter"}, + {"OpenVDB", "volume.vdb", false, "OpenVdbImporter"} /* Not testing everything, just the most important ones */ };