diff --git a/src/Admin/WASM/exclude_wasm.txt b/src/Admin/WASM/exclude_wasm.txt
index dc354df7b7cc1a88e043414316872f552721c7e4..87800e636f7dd425936b17f689e17c934007c1bc 100644
--- a/src/Admin/WASM/exclude_wasm.txt
+++ b/src/Admin/WASM/exclude_wasm.txt
@@ -324,3 +324,4 @@ RayCastIsosurface
 SimpleRayCast
 CameraOrientationWidget
 MinIntensityRendering
+MultiBlockVolumeMapper
diff --git a/src/Cxx.md b/src/Cxx.md
index 9dd5e314d23879456fd10ae2b2761d62fdb55758..c980319df820d33c723afd9885f127e397806645 100644
--- a/src/Cxx.md
+++ b/src/Cxx.md
@@ -1157,6 +1157,7 @@ See [this tutorial](http://www.vtk.org/Wiki/VTK/Tutorials/3DDataTypes) for a bri
 [RayCastIsosurface](/Cxx/VolumeRendering/RayCastIsosurface) | Isosufaces produced by volume rendering.
 [SimpleRayCast](/Cxx/VolumeRendering/SimpleRayCast) | Volume rendering of a high potential iron protein.
 [SmartVolumeMapper](/Cxx/VolumeRendering/SmartVolumeMapper) | Smart volume mapper.
+[MultiBlockVolumeMapper](/Cxx/VolumeRendering/MultiBlockVolumeMapper) | Using a vtkMultiBlockVolumeMapper to render a vtkMultiBlockDataSet containing eight subvolumes.
 
 ## User Interaction
 
diff --git a/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.cxx b/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..44c175b9ae0adb8021fcdea3b6adc8aa83912442
--- /dev/null
+++ b/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.cxx
@@ -0,0 +1,79 @@
+#include <vtkColorSeries.h>
+#include <vtkImageData.h>
+#include <vtkMultiBlockDataSet.h>
+#include <vtkMultiBlockVolumeMapper.h>
+#include <vtkNamedColors.h>
+#include <vtkNew.h>
+#include <vtkRenderWindow.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkRenderer.h>
+#include <vtkVolumeProperty.h>
+
+int main(int argc, char* argv[])
+{
+  // set up vtkMultiBlockDataSet (just a bunch of colored blocks):
+  const int dim[3] = {10, 10, 10};
+  double spc[3] = {0.1, 0.1, 0.1};
+  vtkNew<vtkMultiBlockDataSet> mb;
+  vtkNew<vtkColorSeries> colors;
+  colors->SetColorScheme(vtkColorSeries::BREWER_QUALITATIVE_SET3);
+  for (int i=0; i<8; ++i)
+  {
+    vtkNew<vtkImageData> img;
+    img->SetDimensions(dim);
+    img->AllocateScalars(VTK_UNSIGNED_CHAR, 4);
+    img->SetSpacing(spc);
+
+    // position the volumes by their origin:
+    // shift object by the length of a volume in the axis directions so as to make them non-overlapping:
+    std::array<int, 3> ofs{ i % 2, (i / 2) % 2,  i / 4 };
+    img->SetOrigin(
+        ofs[0] * (dim[0]-1) * spc[0],
+        ofs[1] * (dim[1]-1) * spc[1],
+        ofs[2] * (dim[2]-1) * spc[2]
+    );
+
+    // set colors:
+    auto col = colors->GetColor(i);
+    for (int x = 0; x < dim[0]; ++x)
+    {
+      for (int y = 0; y < dim[1]; ++y)
+      {
+        for (int z = 0; z < dim[2]; ++z)
+        {
+          for (int c = 0; c < 3; ++c)
+          {
+            img->SetScalarComponentFromDouble(x, y, z, c, col[c]);
+          }
+          img->SetScalarComponentFromDouble(x, y, z, 3, 255);
+        }
+      }
+    }
+    mb->SetBlock(i, img);
+  }
+
+  // setting up the vtkMultiBlockVolumeMapper:
+  vtkNew<vtkMultiBlockVolumeMapper> volMapper;
+  volMapper->SetInputDataObject(mb);
+  vtkNew<vtkVolume> volume;
+  vtkNew<vtkVolumeProperty> volProp;
+  volProp->SetIndependentComponents(false);
+  volume->SetMapper(volMapper);
+  volume->SetProperty(volProp);
+  volume->SetVisibility(true);
+  volume->SetOrientation(30, -45, 0);
+
+  // standard render window and renderer setup:
+  vtkNew<vtkRenderer> renderer;
+  vtkNew<vtkNamedColors> namedColors;
+  renderer->SetBackground(namedColors->GetColor3d("ForestGreen").GetData());
+  renderer->AddVolume(volume);
+  vtkNew<vtkRenderWindow> renWin;
+  renWin->AddRenderer(renderer);
+  renWin->Render();
+  vtkNew<vtkRenderWindowInteractor> iren;
+  iren->SetRenderWindow(renWin);
+  iren->Start();
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.md b/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.md
new file mode 100644
index 0000000000000000000000000000000000000000..bb4e28dd72af46d2f9d2ba014d6e82e48216062a
--- /dev/null
+++ b/src/Cxx/VolumeRendering/MultiBlockVolumeMapper.md
@@ -0,0 +1,4 @@
+### Description
+
+This example illustrates using the vtkMultiBlockVolumeMapper to render a
+vtkMultiBlockDataSet containing eight 10x10x10 volumes.