diff --git a/liblava/resource/image_array.cpp b/liblava/resource/image_array.cpp
index 7e627b2a012ed4cf911211f3592bc4ec6dc938ca..69065ef054347b8a8da2689f6429c6ba241b11d1 100644
--- a/liblava/resource/image_array.cpp
+++ b/liblava/resource/image_array.cpp
@@ -70,7 +70,20 @@ namespace lava {
         view_info.image = vk_image;
         view_info.subresourceRange = subresource_range;
 
-        return device->vkCreateImageView(&view_info, &view);
+        if (!device->vkCreateImageView(&view_info, &view)) {
+            return false;
+        }
+
+        layer_views.resize(layer_count);
+        for (uint32_t i = 0; i < layer_count; ++i) {
+          view_info.subresourceRange.baseArrayLayer = i;
+          view_info.subresourceRange.layerCount = 1;
+          if (!device->vkCreateImageView(&view_info, &layer_views[i])) {
+              return false;
+          }
+        }
+
+        return true;
     }
 
     void image_array::destroy(bool view_only) {
@@ -78,6 +91,12 @@ namespace lava {
             device->vkDestroyImageView(view);
             view = 0;
         }
+        for (auto& layer_view : layer_views) {
+            if (layer_view) {
+              device->vkDestroyImageView(layer_view);
+              layer_view = 0;
+            }
+        }
 
         if (view_only)
             return;
diff --git a/liblava/resource/image_array.hpp b/liblava/resource/image_array.hpp
index 09a0529120775e8a41dc969e6b905cc9a105546e..56a4c04910955c427c8d95fc4e98c2067e549545 100644
--- a/liblava/resource/image_array.hpp
+++ b/liblava/resource/image_array.hpp
@@ -41,6 +41,9 @@ namespace lava {
         VkImageView get_view() const {
             return view;
         }
+        VkImageView get_layer_view(uint32_t layer_index) const {
+            return layer_views[layer_index];
+        }
 
         VkImageCreateInfo const& get_info() const {
             return info;
@@ -94,6 +97,7 @@ namespace lava {
         VmaAllocation allocation = nullptr;
 
         VkImageView view = VK_NULL_HANDLE;
+        std::vector<VkImageView> layer_views;
 
         VkImageViewCreateInfo view_info;
         VkImageSubresourceRange subresource_range;