diff --git a/include/vkcv/PipelineConfig.hpp b/include/vkcv/PipelineConfig.hpp
index 70ef1633d9bacbcc52e6f1f78dabfb450089a79f..c17f04ee6b6bcf9ae011e2fc88d22c90f9e50809 100644
--- a/include/vkcv/PipelineConfig.hpp
+++ b/include/vkcv/PipelineConfig.hpp
@@ -15,6 +15,7 @@
 namespace vkcv {
 
     enum class PrimitiveTopology{PointList, LineList, TriangleList };
+	enum class CullMode{ None, Front, Back };
 
     struct PipelineConfig {
         ShaderProgram                           m_ShaderProgram;
@@ -28,6 +29,7 @@ namespace vkcv {
         PrimitiveTopology                       m_PrimitiveTopology = PrimitiveTopology::TriangleList;
         bool                                    m_EnableDepthClamping = false;
         Multisampling                           m_multisampling = Multisampling::None;
+        CullMode                                m_culling = CullMode::None;
     };
 
 }
\ No newline at end of file
diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp
index a9c899f3a2b481f9dbc102a963488a6cf8a7fa00..59b2d9fb3460ab6f1e9a8b59b9ce422b83c4a87c 100644
--- a/projects/voxelization/src/main.cpp
+++ b/projects/voxelization/src/main.cpp
@@ -232,8 +232,8 @@ int main(int argc, const char** argv) {
 			core.getDescriptorSet(perMeshDescriptorSets[0]).layout },
 		true
 	};
-
-	forwardPipelineConfig.m_multisampling = msaa;
+    forwardPipelineConfig.m_culling         = vkcv::CullMode::Back;
+	forwardPipelineConfig.m_multisampling   = msaa;
 	
 	vkcv::PipelineHandle forwardPipeline = core.createGraphicsPipeline(forwardPipelineConfig);
 	
diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index b1b0827285ffce91b6be3bf20a58cdef7de233b2..621abb0a5659d572b22ce11eb38adeb5e2297a4c 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -143,13 +143,21 @@ namespace vkcv
         vk::Rect2D scissor({ 0,0 }, { config.m_Width, config.m_Height });
         vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo({}, 1, &viewport, 1, &scissor);
 
+        vk::CullModeFlags cullMode;
+        switch (config.m_culling) {
+            case CullMode::None:    cullMode = vk::CullModeFlagBits::eNone;     break;
+            case CullMode::Front:   cullMode = vk::CullModeFlagBits::eFront;    break;
+            case CullMode::Back:    cullMode = vk::CullModeFlagBits::eBack;     break;
+            default: throw("Lets tilt Tobi LOLOLOL");   // I hope you review the code well
+        }
+
         // rasterization state
         vk::PipelineRasterizationStateCreateInfo pipelineRasterizationStateCreateInfo(
                 {},
                 config.m_EnableDepthClamping,
                 false,
                 vk::PolygonMode::eFill,
-                vk::CullModeFlagBits::eNone,
+                cullMode,
                 vk::FrontFace::eCounterClockwise,
                 false,
                 0.f,