diff --git a/projects/first_mesh/resources/Szene/Szene.bin b/projects/first_mesh/assets/Szene/Szene.bin
similarity index 100%
rename from projects/first_mesh/resources/Szene/Szene.bin
rename to projects/first_mesh/assets/Szene/Szene.bin
diff --git a/projects/first_mesh/resources/Szene/Szene.gltf b/projects/first_mesh/assets/Szene/Szene.gltf
similarity index 100%
rename from projects/first_mesh/resources/Szene/Szene.gltf
rename to projects/first_mesh/assets/Szene/Szene.gltf
diff --git a/projects/first_mesh/resources/Szene/boards2_vcyc.jpg b/projects/first_mesh/assets/Szene/boards2_vcyc.jpg
similarity index 100%
rename from projects/first_mesh/resources/Szene/boards2_vcyc.jpg
rename to projects/first_mesh/assets/Szene/boards2_vcyc.jpg
diff --git a/projects/first_mesh/resources/Szene/boards2_vcyc_jpg.jpg b/projects/first_mesh/assets/Szene/boards2_vcyc_jpg.jpg
similarity index 100%
rename from projects/first_mesh/resources/Szene/boards2_vcyc_jpg.jpg
rename to projects/first_mesh/assets/Szene/boards2_vcyc_jpg.jpg
diff --git a/projects/first_mesh/resources/cube/boards2_vcyc_jpg.jpg b/projects/first_mesh/assets/cube/boards2_vcyc_jpg.jpg
similarity index 100%
rename from projects/first_mesh/resources/cube/boards2_vcyc_jpg.jpg
rename to projects/first_mesh/assets/cube/boards2_vcyc_jpg.jpg
diff --git a/projects/first_mesh/resources/cube/cube.bin b/projects/first_mesh/assets/cube/cube.bin
similarity index 100%
rename from projects/first_mesh/resources/cube/cube.bin
rename to projects/first_mesh/assets/cube/cube.bin
diff --git a/projects/first_mesh/resources/cube/cube.blend b/projects/first_mesh/assets/cube/cube.blend
similarity index 100%
rename from projects/first_mesh/resources/cube/cube.blend
rename to projects/first_mesh/assets/cube/cube.blend
diff --git a/projects/first_mesh/resources/cube/cube.blend1 b/projects/first_mesh/assets/cube/cube.blend1
similarity index 100%
rename from projects/first_mesh/resources/cube/cube.blend1
rename to projects/first_mesh/assets/cube/cube.blend1
diff --git a/projects/first_mesh/resources/cube/cube.glb b/projects/first_mesh/assets/cube/cube.glb
similarity index 100%
rename from projects/first_mesh/resources/cube/cube.glb
rename to projects/first_mesh/assets/cube/cube.glb
diff --git a/projects/first_mesh/resources/cube/cube.gltf b/projects/first_mesh/assets/cube/cube.gltf
similarity index 100%
rename from projects/first_mesh/resources/cube/cube.gltf
rename to projects/first_mesh/assets/cube/cube.gltf
diff --git a/projects/first_mesh/resources/shaders/shader.frag b/projects/first_mesh/assets/shaders/shader.frag
similarity index 100%
rename from projects/first_mesh/resources/shaders/shader.frag
rename to projects/first_mesh/assets/shaders/shader.frag
diff --git a/projects/first_mesh/resources/shaders/shader.vert b/projects/first_mesh/assets/shaders/shader.vert
similarity index 100%
rename from projects/first_mesh/resources/shaders/shader.vert
rename to projects/first_mesh/assets/shaders/shader.vert
diff --git a/projects/first_mesh/resources/triangle/Triangle.bin b/projects/first_mesh/assets/triangle/Triangle.bin
similarity index 100%
rename from projects/first_mesh/resources/triangle/Triangle.bin
rename to projects/first_mesh/assets/triangle/Triangle.bin
diff --git a/projects/first_mesh/resources/triangle/Triangle.blend b/projects/first_mesh/assets/triangle/Triangle.blend
similarity index 100%
rename from projects/first_mesh/resources/triangle/Triangle.blend
rename to projects/first_mesh/assets/triangle/Triangle.blend
diff --git a/projects/first_mesh/resources/triangle/Triangle.glb b/projects/first_mesh/assets/triangle/Triangle.glb
similarity index 100%
rename from projects/first_mesh/resources/triangle/Triangle.glb
rename to projects/first_mesh/assets/triangle/Triangle.glb
diff --git a/projects/first_mesh/resources/triangle/Triangle.gltf b/projects/first_mesh/assets/triangle/Triangle.gltf
similarity index 100%
rename from projects/first_mesh/resources/triangle/Triangle.gltf
rename to projects/first_mesh/assets/triangle/Triangle.gltf
diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index 53a17a2597bc6a5b9b4edc2a4665664a0d6ef366..e381cab6315bdb86a6c28ba0fa4b0a6388c50a38 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -22,7 +22,7 @@ int main(int argc, const char** argv) {
 
 	vkcv::asset::Scene mesh;
 
-	const char* path = argc > 1 ? argv[1] : "resources/cube/cube.gltf";
+	const char* path = argc > 1 ? argv[1] : "assets/cube/cube.gltf";
 	int result = vkcv::asset::loadScene(path, mesh);
 
 	if (result == 1) {
@@ -73,12 +73,12 @@ int main(int argc, const char** argv) {
 	vkcv::ShaderProgram firstMeshProgram;
 	vkcv::shader::GLSLCompiler compiler;
 	
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/shader.vert"),
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/shader.vert"),
 					 [&firstMeshProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		firstMeshProgram.addShader(shaderStage, path);
 	});
 	
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 					 [&firstMeshProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		firstMeshProgram.addShader(shaderStage, path);
 	});
@@ -153,8 +153,15 @@ int main(int argc, const char** argv) {
 	setWrites.samplerWrites			= { vkcv::SamplerDescriptorWrite(1, sampler) };
 
 	core.writeDescriptorSet(descriptorSet, setWrites);
-
-	vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight, 1, false).getHandle();
+	
+	auto swapchainExtent = core.getSwapchain(windowHandle).getExtent();
+	
+	vkcv::ImageHandle depthBuffer = core.createImage(
+			vk::Format::eD32Sfloat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false
+	).getHandle();
 
 	const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 
@@ -181,11 +188,11 @@ int main(int argc, const char** argv) {
 			continue;
 		}
 		
-		if ((swapchainWidth != windowWidth) || ((swapchainHeight != windowHeight))) {
+		if ((swapchainWidth != swapchainExtent.width) || ((swapchainHeight != swapchainExtent.height))) {
 			depthBuffer = core.createImage(vk::Format::eD32Sfloat, swapchainWidth, swapchainHeight).getHandle();
 			
-			windowWidth = swapchainWidth;
-			windowHeight = swapchainHeight;
+			swapchainExtent.width = swapchainWidth;
+			swapchainExtent.height = swapchainHeight;
 		}
   
 		auto end = std::chrono::system_clock::now();
diff --git a/projects/first_scene/resources/Cutlery/Cutlery_chrome_BaseColor.png b/projects/first_scene/assets/Cutlery/Cutlery_chrome_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Cutlery_chrome_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Cutlery_chrome_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Cutlery_chrome_Normal.png b/projects/first_scene/assets/Cutlery/Cutlery_chrome_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Cutlery_chrome_Normal.png
rename to projects/first_scene/assets/Cutlery/Cutlery_chrome_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/Cutlery_details_BaseColor.png b/projects/first_scene/assets/Cutlery/Cutlery_details_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Cutlery_details_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Cutlery_details_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Cutlery_details_Normal.png b/projects/first_scene/assets/Cutlery/Cutlery_details_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Cutlery_details_Normal.png
rename to projects/first_scene/assets/Cutlery/Cutlery_details_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Caps_BaseColor.png b/projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Caps_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Caps_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Caps_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Caps_Normal.png b/projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Caps_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Caps_Normal.png
rename to projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Caps_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Glass_Wine_BaseColor.png b/projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Glass_Wine_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Glass_Wine_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Glass_Wine_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Glass_Wine_Normal.png b/projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Glass_Wine_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Paris_LiquorBottle_01_Glass_Wine_Normal.png
rename to projects/first_scene/assets/Cutlery/Paris_LiquorBottle_01_Glass_Wine_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/Plates_Ceramic_BaseColor.png b/projects/first_scene/assets/Cutlery/Plates_Ceramic_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Plates_Ceramic_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Plates_Ceramic_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Plates_Ceramic_Normal.png b/projects/first_scene/assets/Cutlery/Plates_Ceramic_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Plates_Ceramic_Normal.png
rename to projects/first_scene/assets/Cutlery/Plates_Ceramic_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/Plates_Details_BaseColor-Plates_Details_BaseColor.png b/projects/first_scene/assets/Cutlery/Plates_Details_BaseColor-Plates_Details_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Plates_Details_BaseColor-Plates_Details_BaseColor.png
rename to projects/first_scene/assets/Cutlery/Plates_Details_BaseColor-Plates_Details_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/Plates_Details_Normal.png b/projects/first_scene/assets/Cutlery/Plates_Details_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/Plates_Details_Normal.png
rename to projects/first_scene/assets/Cutlery/Plates_Details_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/ToffeeJar_Label_BaseColor.png b/projects/first_scene/assets/Cutlery/ToffeeJar_Label_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/ToffeeJar_Label_BaseColor.png
rename to projects/first_scene/assets/Cutlery/ToffeeJar_Label_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/ToffeeJar_Label_Normal.png b/projects/first_scene/assets/Cutlery/ToffeeJar_Label_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/ToffeeJar_Label_Normal.png
rename to projects/first_scene/assets/Cutlery/ToffeeJar_Label_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/TransparentGlass_BaseColor.png b/projects/first_scene/assets/Cutlery/TransparentGlass_BaseColor.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/TransparentGlass_BaseColor.png
rename to projects/first_scene/assets/Cutlery/TransparentGlass_BaseColor.png
diff --git a/projects/first_scene/resources/Cutlery/TransparentGlass_Normal.png b/projects/first_scene/assets/Cutlery/TransparentGlass_Normal.png
similarity index 100%
rename from projects/first_scene/resources/Cutlery/TransparentGlass_Normal.png
rename to projects/first_scene/assets/Cutlery/TransparentGlass_Normal.png
diff --git a/projects/first_scene/resources/Cutlery/cutlerySzene.bin b/projects/first_scene/assets/Cutlery/cutlerySzene.bin
similarity index 100%
rename from projects/first_scene/resources/Cutlery/cutlerySzene.bin
rename to projects/first_scene/assets/Cutlery/cutlerySzene.bin
diff --git a/projects/first_scene/resources/Cutlery/cutlerySzene.glb b/projects/first_scene/assets/Cutlery/cutlerySzene.glb
similarity index 100%
rename from projects/first_scene/resources/Cutlery/cutlerySzene.glb
rename to projects/first_scene/assets/Cutlery/cutlerySzene.glb
diff --git a/projects/first_scene/resources/Cutlery/cutlerySzene.gltf b/projects/first_scene/assets/Cutlery/cutlerySzene.gltf
similarity index 100%
rename from projects/first_scene/resources/Cutlery/cutlerySzene.gltf
rename to projects/first_scene/assets/Cutlery/cutlerySzene.gltf
diff --git a/projects/first_scene/resources/Sponza/Sponza.bin b/projects/first_scene/assets/Sponza/Sponza.bin
similarity index 100%
rename from projects/first_scene/resources/Sponza/Sponza.bin
rename to projects/first_scene/assets/Sponza/Sponza.bin
diff --git a/projects/first_scene/resources/Sponza/Sponza.gltf b/projects/first_scene/assets/Sponza/Sponza.gltf
similarity index 100%
rename from projects/first_scene/resources/Sponza/Sponza.gltf
rename to projects/first_scene/assets/Sponza/Sponza.gltf
diff --git a/projects/first_scene/resources/Sponza/SponzaFloor.bin b/projects/first_scene/assets/Sponza/SponzaFloor.bin
similarity index 100%
rename from projects/first_scene/resources/Sponza/SponzaFloor.bin
rename to projects/first_scene/assets/Sponza/SponzaFloor.bin
diff --git a/projects/first_scene/resources/Sponza/SponzaFloor.gltf b/projects/first_scene/assets/Sponza/SponzaFloor.gltf
similarity index 100%
rename from projects/first_scene/resources/Sponza/SponzaFloor.gltf
rename to projects/first_scene/assets/Sponza/SponzaFloor.gltf
diff --git a/projects/first_scene/resources/Sponza/background.png b/projects/first_scene/assets/Sponza/background.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/background.png
rename to projects/first_scene/assets/Sponza/background.png
diff --git a/projects/first_scene/resources/Sponza/chain_texture.png b/projects/first_scene/assets/Sponza/chain_texture.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/chain_texture.png
rename to projects/first_scene/assets/Sponza/chain_texture.png
diff --git a/projects/first_scene/resources/Sponza/lion.png b/projects/first_scene/assets/Sponza/lion.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/lion.png
rename to projects/first_scene/assets/Sponza/lion.png
diff --git a/projects/first_scene/resources/Sponza/spnza_bricks_a_diff.png b/projects/first_scene/assets/Sponza/spnza_bricks_a_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/spnza_bricks_a_diff.png
rename to projects/first_scene/assets/Sponza/spnza_bricks_a_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_arch_diff.png b/projects/first_scene/assets/Sponza/sponza_arch_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_arch_diff.png
rename to projects/first_scene/assets/Sponza/sponza_arch_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_ceiling_a_diff.png b/projects/first_scene/assets/Sponza/sponza_ceiling_a_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_ceiling_a_diff.png
rename to projects/first_scene/assets/Sponza/sponza_ceiling_a_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_column_a_diff.png b/projects/first_scene/assets/Sponza/sponza_column_a_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_column_a_diff.png
rename to projects/first_scene/assets/Sponza/sponza_column_a_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_column_b_diff.png b/projects/first_scene/assets/Sponza/sponza_column_b_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_column_b_diff.png
rename to projects/first_scene/assets/Sponza/sponza_column_b_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_column_c_diff.png b/projects/first_scene/assets/Sponza/sponza_column_c_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_column_c_diff.png
rename to projects/first_scene/assets/Sponza/sponza_column_c_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_curtain_blue_diff.png b/projects/first_scene/assets/Sponza/sponza_curtain_blue_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_curtain_blue_diff.png
rename to projects/first_scene/assets/Sponza/sponza_curtain_blue_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_curtain_diff.png b/projects/first_scene/assets/Sponza/sponza_curtain_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_curtain_diff.png
rename to projects/first_scene/assets/Sponza/sponza_curtain_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_curtain_green_diff.png b/projects/first_scene/assets/Sponza/sponza_curtain_green_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_curtain_green_diff.png
rename to projects/first_scene/assets/Sponza/sponza_curtain_green_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_details_diff.png b/projects/first_scene/assets/Sponza/sponza_details_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_details_diff.png
rename to projects/first_scene/assets/Sponza/sponza_details_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_fabric_blue_diff.png b/projects/first_scene/assets/Sponza/sponza_fabric_blue_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_fabric_blue_diff.png
rename to projects/first_scene/assets/Sponza/sponza_fabric_blue_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_fabric_diff.png b/projects/first_scene/assets/Sponza/sponza_fabric_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_fabric_diff.png
rename to projects/first_scene/assets/Sponza/sponza_fabric_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_fabric_green_diff.png b/projects/first_scene/assets/Sponza/sponza_fabric_green_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_fabric_green_diff.png
rename to projects/first_scene/assets/Sponza/sponza_fabric_green_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_flagpole_diff.png b/projects/first_scene/assets/Sponza/sponza_flagpole_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_flagpole_diff.png
rename to projects/first_scene/assets/Sponza/sponza_flagpole_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_floor_a_diff.png b/projects/first_scene/assets/Sponza/sponza_floor_a_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_floor_a_diff.png
rename to projects/first_scene/assets/Sponza/sponza_floor_a_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_roof_diff.png b/projects/first_scene/assets/Sponza/sponza_roof_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_roof_diff.png
rename to projects/first_scene/assets/Sponza/sponza_roof_diff.png
diff --git a/projects/first_scene/resources/Sponza/sponza_thorn_diff.png b/projects/first_scene/assets/Sponza/sponza_thorn_diff.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/sponza_thorn_diff.png
rename to projects/first_scene/assets/Sponza/sponza_thorn_diff.png
diff --git a/projects/first_scene/resources/Sponza/vase_dif.png b/projects/first_scene/assets/Sponza/vase_dif.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/vase_dif.png
rename to projects/first_scene/assets/Sponza/vase_dif.png
diff --git a/projects/first_scene/resources/Sponza/vase_hanging.png b/projects/first_scene/assets/Sponza/vase_hanging.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/vase_hanging.png
rename to projects/first_scene/assets/Sponza/vase_hanging.png
diff --git a/projects/first_scene/resources/Sponza/vase_plant.png b/projects/first_scene/assets/Sponza/vase_plant.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/vase_plant.png
rename to projects/first_scene/assets/Sponza/vase_plant.png
diff --git a/projects/first_scene/resources/Sponza/vase_round.png b/projects/first_scene/assets/Sponza/vase_round.png
similarity index 100%
rename from projects/first_scene/resources/Sponza/vase_round.png
rename to projects/first_scene/assets/Sponza/vase_round.png
diff --git a/projects/first_scene/resources/Szene/Szene.bin b/projects/first_scene/assets/Szene/Szene.bin
similarity index 100%
rename from projects/first_scene/resources/Szene/Szene.bin
rename to projects/first_scene/assets/Szene/Szene.bin
diff --git a/projects/first_scene/resources/Szene/Szene.gltf b/projects/first_scene/assets/Szene/Szene.gltf
similarity index 100%
rename from projects/first_scene/resources/Szene/Szene.gltf
rename to projects/first_scene/assets/Szene/Szene.gltf
diff --git a/projects/first_scene/resources/Szene/boards2_vcyc.jpg b/projects/first_scene/assets/Szene/boards2_vcyc.jpg
similarity index 100%
rename from projects/first_scene/resources/Szene/boards2_vcyc.jpg
rename to projects/first_scene/assets/Szene/boards2_vcyc.jpg
diff --git a/projects/first_scene/resources/Szene/boards2_vcyc_jpg.jpg b/projects/first_scene/assets/Szene/boards2_vcyc_jpg.jpg
similarity index 100%
rename from projects/first_scene/resources/Szene/boards2_vcyc_jpg.jpg
rename to projects/first_scene/assets/Szene/boards2_vcyc_jpg.jpg
diff --git a/projects/first_scene/resources/shaders/shader.frag b/projects/first_scene/assets/shaders/shader.frag
similarity index 100%
rename from projects/first_scene/resources/shaders/shader.frag
rename to projects/first_scene/assets/shaders/shader.frag
diff --git a/projects/first_scene/resources/shaders/shader.vert b/projects/first_scene/assets/shaders/shader.vert
similarity index 100%
rename from projects/first_scene/resources/shaders/shader.vert
rename to projects/first_scene/assets/shaders/shader.vert
diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp
index 95755fca1b59bb4b41e8d741e097bb09239fd9d0..17ac917a57a2ece0dda4c8b20750792a0491340d 100644
--- a/projects/first_scene/src/main.cpp
+++ b/projects/first_scene/src/main.cpp
@@ -32,7 +32,7 @@ int main(int argc, const char** argv) {
 	cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f);
 
 	vkcv::scene::Scene scene = vkcv::scene::Scene::load(core, std::filesystem::path(
-			argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf"
+			argc > 1 ? argv[1] : "assets/Sponza/Sponza.gltf"
 	));
 
 	const vkcv::AttachmentDescription present_color_attachment(
@@ -58,12 +58,12 @@ int main(int argc, const char** argv) {
 	vkcv::ShaderProgram sceneShaderProgram;
 	vkcv::shader::GLSLCompiler compiler;
 	
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/shader.vert"),
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/shader.vert"),
 					 [&sceneShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		sceneShaderProgram.addShader(shaderStage, path);
 	});
 	
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 					 [&sceneShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		sceneShaderProgram.addShader(shaderStage, path);
 	});
@@ -92,8 +92,14 @@ int main(int argc, const char** argv) {
 		std::cout << "Error. Could not create graphics pipeline. Exiting." << std::endl;
 		return EXIT_FAILURE;
 	}
+	
+	auto swapchainExtent = core.getSwapchain().getExtent();
 
-	vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight).getHandle();
+	vkcv::ImageHandle depthBuffer = core.createImage(
+			vk::Format::eD32Sfloat,
+			swapchainExtent.width,
+			swapchainExtent.height
+	).getHandle();
 
 	const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 	
@@ -109,11 +115,11 @@ int main(int argc, const char** argv) {
 			continue;
 		}
 		
-		if ((swapchainWidth != windowWidth) || ((swapchainHeight != windowHeight))) {
+		if ((swapchainWidth != swapchainExtent.width) || ((swapchainHeight != swapchainExtent.height))) {
 			depthBuffer = core.createImage(vk::Format::eD32Sfloat, swapchainWidth, swapchainHeight).getHandle();
 			
-			windowWidth = swapchainWidth;
-			windowHeight = swapchainHeight;
+			swapchainExtent.width = swapchainWidth;
+			swapchainExtent.height = swapchainHeight;
 		}
   
 		auto end = std::chrono::system_clock::now();
diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index 5b69539fe95ab22059d4c7fb81a380e7c2836e72..78ec4afe42aa96aec781e6b873676453d083487c 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -56,11 +56,13 @@ int main(int argc, const char** argv) {
 					 [&triangleShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		triangleShaderProgram.addShader(shaderStage, path);
 	});
+	
+	const auto swapchainExtent = core.getSwapchain(windowHandle).getExtent();
 
 	const vkcv::PipelineConfig trianglePipelineDefinition {
 		triangleShaderProgram,
-		(uint32_t)windowWidth,
-		(uint32_t)windowHeight,
+		swapchainExtent.width,
+		swapchainExtent.height,
 		trianglePass,
 		{},
 		{},
diff --git a/projects/indirect_dispatch/resources/models/cube.bin b/projects/indirect_dispatch/assets/models/cube.bin
similarity index 100%
rename from projects/indirect_dispatch/resources/models/cube.bin
rename to projects/indirect_dispatch/assets/models/cube.bin
diff --git a/projects/indirect_dispatch/resources/models/cube.gltf b/projects/indirect_dispatch/assets/models/cube.gltf
similarity index 100%
rename from projects/indirect_dispatch/resources/models/cube.gltf
rename to projects/indirect_dispatch/assets/models/cube.gltf
diff --git a/projects/indirect_dispatch/resources/models/grid.png b/projects/indirect_dispatch/assets/models/grid.png
similarity index 100%
rename from projects/indirect_dispatch/resources/models/grid.png
rename to projects/indirect_dispatch/assets/models/grid.png
diff --git a/projects/indirect_dispatch/resources/models/ground.bin b/projects/indirect_dispatch/assets/models/ground.bin
similarity index 100%
rename from projects/indirect_dispatch/resources/models/ground.bin
rename to projects/indirect_dispatch/assets/models/ground.bin
diff --git a/projects/indirect_dispatch/resources/models/ground.gltf b/projects/indirect_dispatch/assets/models/ground.gltf
similarity index 100%
rename from projects/indirect_dispatch/resources/models/ground.gltf
rename to projects/indirect_dispatch/assets/models/ground.gltf
diff --git a/projects/indirect_dispatch/resources/shaders/gammaCorrection.comp b/projects/indirect_dispatch/assets/shaders/gammaCorrection.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/gammaCorrection.comp
rename to projects/indirect_dispatch/assets/shaders/gammaCorrection.comp
diff --git a/projects/indirect_dispatch/resources/shaders/mesh.frag b/projects/indirect_dispatch/assets/shaders/mesh.frag
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/mesh.frag
rename to projects/indirect_dispatch/assets/shaders/mesh.frag
diff --git a/projects/indirect_dispatch/resources/shaders/mesh.vert b/projects/indirect_dispatch/assets/shaders/mesh.vert
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/mesh.vert
rename to projects/indirect_dispatch/assets/shaders/mesh.vert
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlur.comp b/projects/indirect_dispatch/assets/shaders/motionBlur.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlur.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlur.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlur.inc b/projects/indirect_dispatch/assets/shaders/motionBlur.inc
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlur.inc
rename to projects/indirect_dispatch/assets/shaders/motionBlur.inc
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurColorCopy.comp b/projects/indirect_dispatch/assets/shaders/motionBlurColorCopy.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurColorCopy.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlurColorCopy.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurConfig.inc b/projects/indirect_dispatch/assets/shaders/motionBlurConfig.inc
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurConfig.inc
rename to projects/indirect_dispatch/assets/shaders/motionBlurConfig.inc
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurFastPath.comp b/projects/indirect_dispatch/assets/shaders/motionBlurFastPath.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurFastPath.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlurFastPath.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurTileClassification.comp b/projects/indirect_dispatch/assets/shaders/motionBlurTileClassification.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurTileClassification.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlurTileClassification.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurTileClassificationVis.comp b/projects/indirect_dispatch/assets/shaders/motionBlurTileClassificationVis.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurTileClassificationVis.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlurTileClassificationVis.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurWorkTile.inc b/projects/indirect_dispatch/assets/shaders/motionBlurWorkTile.inc
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurWorkTile.inc
rename to projects/indirect_dispatch/assets/shaders/motionBlurWorkTile.inc
diff --git a/projects/indirect_dispatch/resources/shaders/motionBlurWorkTileReset.comp b/projects/indirect_dispatch/assets/shaders/motionBlurWorkTileReset.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionBlurWorkTileReset.comp
rename to projects/indirect_dispatch/assets/shaders/motionBlurWorkTileReset.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionVector.inc b/projects/indirect_dispatch/assets/shaders/motionVector.inc
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionVector.inc
rename to projects/indirect_dispatch/assets/shaders/motionVector.inc
diff --git a/projects/indirect_dispatch/resources/shaders/motionVectorMinMax.comp b/projects/indirect_dispatch/assets/shaders/motionVectorMinMax.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionVectorMinMax.comp
rename to projects/indirect_dispatch/assets/shaders/motionVectorMinMax.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionVectorMinMaxNeighbourhood.comp b/projects/indirect_dispatch/assets/shaders/motionVectorMinMaxNeighbourhood.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionVectorMinMaxNeighbourhood.comp
rename to projects/indirect_dispatch/assets/shaders/motionVectorMinMaxNeighbourhood.comp
diff --git a/projects/indirect_dispatch/resources/shaders/motionVectorVisualisation.comp b/projects/indirect_dispatch/assets/shaders/motionVectorVisualisation.comp
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/motionVectorVisualisation.comp
rename to projects/indirect_dispatch/assets/shaders/motionVectorVisualisation.comp
diff --git a/projects/indirect_dispatch/resources/shaders/prepass.frag b/projects/indirect_dispatch/assets/shaders/prepass.frag
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/prepass.frag
rename to projects/indirect_dispatch/assets/shaders/prepass.frag
diff --git a/projects/indirect_dispatch/resources/shaders/prepass.vert b/projects/indirect_dispatch/assets/shaders/prepass.vert
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/prepass.vert
rename to projects/indirect_dispatch/assets/shaders/prepass.vert
diff --git a/projects/indirect_dispatch/resources/shaders/sky.frag b/projects/indirect_dispatch/assets/shaders/sky.frag
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/sky.frag
rename to projects/indirect_dispatch/assets/shaders/sky.frag
diff --git a/projects/indirect_dispatch/resources/shaders/sky.vert b/projects/indirect_dispatch/assets/shaders/sky.vert
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/sky.vert
rename to projects/indirect_dispatch/assets/shaders/sky.vert
diff --git a/projects/indirect_dispatch/resources/shaders/skyPrepass.frag b/projects/indirect_dispatch/assets/shaders/skyPrepass.frag
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/skyPrepass.frag
rename to projects/indirect_dispatch/assets/shaders/skyPrepass.frag
diff --git a/projects/indirect_dispatch/resources/shaders/skyPrepass.vert b/projects/indirect_dispatch/assets/shaders/skyPrepass.vert
similarity index 100%
rename from projects/indirect_dispatch/resources/shaders/skyPrepass.vert
rename to projects/indirect_dispatch/assets/shaders/skyPrepass.vert
diff --git a/projects/indirect_dispatch/src/App.cpp b/projects/indirect_dispatch/src/App.cpp
index 83b8aa524d55ffe021a2f9dc3fd6ff02b1c04ee9..8b2db80a002a520571c91aa157bde685203bd96a 100644
--- a/projects/indirect_dispatch/src/App.cpp
+++ b/projects/indirect_dispatch/src/App.cpp
@@ -30,16 +30,16 @@ bool App::initialize() {
 	if (!loadSkyPrePass(m_core, &m_skyPrePass))
 		return false;
 
-	if (!loadComputePass(m_core, "resources/shaders/gammaCorrection.comp", &m_gammaCorrectionPass))
+	if (!loadComputePass(m_core, "assets/shaders/gammaCorrection.comp", &m_gammaCorrectionPass))
 		return false;
 
-	if (!loadMesh(m_core, "resources/models/cube.gltf", &m_cubeMesh))
+	if (!loadMesh(m_core, "assets/models/cube.gltf", &m_cubeMesh))
 		return false;
 
-	if (!loadMesh(m_core, "resources/models/ground.gltf", &m_groundMesh))
+	if (!loadMesh(m_core, "assets/models/ground.gltf", &m_groundMesh))
 		return false;
 
-	if(!loadImage(m_core, "resources/models/grid.png", &m_gridTexture))
+	if(!loadImage(m_core, "assets/models/grid.png", &m_gridTexture))
 		return false;
 
 	if (!m_motionBlur.initialize(&m_core, m_windowWidth, m_windowHeight))
diff --git a/projects/indirect_dispatch/src/AppSetup.cpp b/projects/indirect_dispatch/src/AppSetup.cpp
index 659ceffd55570db64cf26ed1597d8256c3b8efa0..729072cfabd2c7ac109b121ac4bc5e0304b9662e 100644
--- a/projects/indirect_dispatch/src/AppSetup.cpp
+++ b/projects/indirect_dispatch/src/AppSetup.cpp
@@ -166,8 +166,8 @@ bool loadMeshPass(vkcv::Core& core, GraphicPassHandles* outHandles) {
 
 	return loadGraphicPass(
 		core,
-		"resources/shaders/mesh.vert",
-		"resources/shaders/mesh.frag",
+		"assets/shaders/mesh.vert",
+		"assets/shaders/mesh.frag",
 		vkcv::PassConfig({ colorAttachment, depthAttachment }),
 		vkcv::DepthTest::Equal,
 		outHandles);
@@ -189,8 +189,8 @@ bool loadSkyPass(vkcv::Core& core, GraphicPassHandles* outHandles) {
 
 	return loadGraphicPass(
 		core,
-		"resources/shaders/sky.vert",
-		"resources/shaders/sky.frag",
+		"assets/shaders/sky.vert",
+		"assets/shaders/sky.frag",
 		vkcv::PassConfig({ colorAttachment, depthAttachment }),
 		vkcv::DepthTest::Equal,
 		outHandles);
@@ -211,8 +211,8 @@ bool loadPrePass(vkcv::Core& core, GraphicPassHandles* outHandles) {
 
 	return loadGraphicPass(
 		core,
-		"resources/shaders/prepass.vert",
-		"resources/shaders/prepass.frag",
+		"assets/shaders/prepass.vert",
+		"assets/shaders/prepass.frag",
 		vkcv::PassConfig({ motionAttachment, depthAttachment }),
 		vkcv::DepthTest::LessEqual,
 		outHandles);
@@ -233,8 +233,8 @@ bool loadSkyPrePass(vkcv::Core& core, GraphicPassHandles* outHandles) {
 
 	return loadGraphicPass(
 		core,
-		"resources/shaders/skyPrepass.vert",
-		"resources/shaders/skyPrepass.frag",
+		"assets/shaders/skyPrepass.vert",
+		"assets/shaders/skyPrepass.frag",
 		vkcv::PassConfig({ motionAttachment, depthAttachment }),
 		vkcv::DepthTest::LessEqual,
 		outHandles);
diff --git a/projects/indirect_dispatch/src/MotionBlur.cpp b/projects/indirect_dispatch/src/MotionBlur.cpp
index 49f650a97e2fea5821959ae53f468e6fe7de6ffe..fea5b1d6f726851ad1d88e71301bffb0f6d71f4a 100644
--- a/projects/indirect_dispatch/src/MotionBlur.cpp
+++ b/projects/indirect_dispatch/src/MotionBlur.cpp
@@ -24,31 +24,31 @@ bool MotionBlur::initialize(vkcv::Core* corePtr, const uint32_t targetWidth, con
 
 	m_core = corePtr;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlur.comp", &m_motionBlurPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlur.comp", &m_motionBlurPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionVectorMinMax.comp", &m_motionVectorMinMaxPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionVectorMinMax.comp", &m_motionVectorMinMaxPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionVectorMinMaxNeighbourhood.comp", &m_motionVectorMinMaxNeighbourhoodPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionVectorMinMaxNeighbourhood.comp", &m_motionVectorMinMaxNeighbourhoodPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionVectorVisualisation.comp", &m_motionVectorVisualisationPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionVectorVisualisation.comp", &m_motionVectorVisualisationPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlurColorCopy.comp", &m_colorCopyPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlurColorCopy.comp", &m_colorCopyPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlurTileClassification.comp", &m_tileClassificationPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlurTileClassification.comp", &m_tileClassificationPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlurWorkTileReset.comp", &m_tileResetPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlurWorkTileReset.comp", &m_tileResetPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlurTileClassificationVis.comp", &m_tileVisualisationPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlurTileClassificationVis.comp", &m_tileVisualisationPass))
 		return false;
 
-	if (!loadComputePass(*m_core, "resources/shaders/motionBlurFastPath.comp", &m_motionBlurFastPathPass))
+	if (!loadComputePass(*m_core, "assets/shaders/motionBlurFastPath.comp", &m_motionBlurFastPathPass))
 		return false;
 
 	// work tile buffers and descriptors
diff --git a/projects/mesh_shader/resources/Bunny/Bunny.glb b/projects/mesh_shader/assets/Bunny/Bunny.glb
similarity index 100%
rename from projects/mesh_shader/resources/Bunny/Bunny.glb
rename to projects/mesh_shader/assets/Bunny/Bunny.glb
diff --git a/projects/mesh_shader/resources/monke.glb b/projects/mesh_shader/assets/monke.glb
similarity index 100%
rename from projects/mesh_shader/resources/monke.glb
rename to projects/mesh_shader/assets/monke.glb
diff --git a/projects/mesh_shader/resources/shaders/common.inc b/projects/mesh_shader/assets/shaders/common.inc
similarity index 100%
rename from projects/mesh_shader/resources/shaders/common.inc
rename to projects/mesh_shader/assets/shaders/common.inc
diff --git a/projects/mesh_shader/resources/shaders/meshlet.inc b/projects/mesh_shader/assets/shaders/meshlet.inc
similarity index 100%
rename from projects/mesh_shader/resources/shaders/meshlet.inc
rename to projects/mesh_shader/assets/shaders/meshlet.inc
diff --git a/projects/mesh_shader/resources/shaders/shader.frag b/projects/mesh_shader/assets/shaders/shader.frag
similarity index 100%
rename from projects/mesh_shader/resources/shaders/shader.frag
rename to projects/mesh_shader/assets/shaders/shader.frag
diff --git a/projects/mesh_shader/resources/shaders/shader.mesh b/projects/mesh_shader/assets/shaders/shader.mesh
similarity index 100%
rename from projects/mesh_shader/resources/shaders/shader.mesh
rename to projects/mesh_shader/assets/shaders/shader.mesh
diff --git a/projects/mesh_shader/resources/shaders/shader.task b/projects/mesh_shader/assets/shaders/shader.task
similarity index 100%
rename from projects/mesh_shader/resources/shaders/shader.task
rename to projects/mesh_shader/assets/shaders/shader.task
diff --git a/projects/mesh_shader/resources/shaders/shader.vert b/projects/mesh_shader/assets/shaders/shader.vert
similarity index 100%
rename from projects/mesh_shader/resources/shaders/shader.vert
rename to projects/mesh_shader/assets/shaders/shader.vert
diff --git a/projects/mesh_shader/src/main.cpp b/projects/mesh_shader/src/main.cpp
index 3066213bf7d9ba9998417762590c3ff58f06ecf6..bbfe16ac549383d13fe5f400802d3dfed267db50 100644
--- a/projects/mesh_shader/src/main.cpp
+++ b/projects/mesh_shader/src/main.cpp
@@ -101,7 +101,7 @@ int main(int argc, const char** argv) {
     vkcv::gui::GUI gui (core, windowHandle);
 
     vkcv::asset::Scene mesh;
-    const char* path = argc > 1 ? argv[1] : "resources/Bunny/Bunny.glb";
+    const char* path = argc > 1 ? argv[1] : "assets/Bunny/Bunny.glb";
     vkcv::asset::loadScene(path, mesh);
 
     assert(!mesh.vertexGroups.empty());
@@ -183,12 +183,12 @@ int main(int argc, const char** argv) {
 	vkcv::ShaderProgram bunnyShaderProgram{};
 	vkcv::shader::GLSLCompiler compiler;
 	
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/shader.vert"),
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/shader.vert"),
 					 [&bunnyShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		 bunnyShaderProgram.addShader(shaderStage, path);
 	});
 	
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 					 [&bunnyShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		bunnyShaderProgram.addShader(shaderStage, path);
 	});
@@ -203,10 +203,12 @@ int main(int argc, const char** argv) {
     vkcv::DescriptorSetLayoutHandle vertexShaderDescriptorSetLayout = core.createDescriptorSetLayout(bunnyShaderProgram.getReflectedDescriptors().at(0));
     vkcv::DescriptorSetHandle vertexShaderDescriptorSet = core.createDescriptorSet(vertexShaderDescriptorSetLayout);
 
+	auto swapchainExtent = core.getSwapchain().getExtent();
+	
 	const vkcv::PipelineConfig bunnyPipelineDefinition {
 			bunnyShaderProgram,
-			(uint32_t)windowWidth,
-			(uint32_t)windowHeight,
+			swapchainExtent.width,
+			swapchainExtent.height,
 			renderPass,
 			{ bunnyLayout },
 			{ core.getDescriptorSetLayout(vertexShaderDescriptorSetLayout).vulkanHandle },
@@ -234,17 +236,17 @@ int main(int argc, const char** argv) {
 
 	// mesh shader
 	vkcv::ShaderProgram meshShaderProgram;
-	compiler.compile(vkcv::ShaderStage::TASK, std::filesystem::path("resources/shaders/shader.task"),
+	compiler.compile(vkcv::ShaderStage::TASK, std::filesystem::path("assets/shaders/shader.task"),
 		[&meshShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		meshShaderProgram.addShader(shaderStage, path);
 	});
 
-	compiler.compile(vkcv::ShaderStage::MESH, std::filesystem::path("resources/shaders/shader.mesh"),
+	compiler.compile(vkcv::ShaderStage::MESH, std::filesystem::path("assets/shaders/shader.mesh"),
 		[&meshShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		meshShaderProgram.addShader(shaderStage, path);
 	});
 
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 		[&meshShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		meshShaderProgram.addShader(shaderStage, path);
 	});
@@ -255,8 +257,8 @@ int main(int argc, const char** argv) {
 
 	const vkcv::PipelineConfig meshShaderPipelineDefinition{
 		meshShaderProgram,
-		(uint32_t)windowWidth,
-		(uint32_t)windowHeight,
+		swapchainExtent.width,
+		swapchainExtent.height,
 		renderPass,
 		{meshShaderLayout},
 		{core.getDescriptorSetLayout(meshShaderDescriptorSetLayout).vulkanHandle},
@@ -287,7 +289,12 @@ int main(int argc, const char** argv) {
 
     core.writeDescriptorSet( meshShaderDescriptorSet, meshShaderWrites);
 
-    vkcv::ImageHandle depthBuffer = core.createImage(vk::Format::eD32Sfloat, windowWidth, windowHeight, 1, false).getHandle();
+    vkcv::ImageHandle depthBuffer = core.createImage(
+			vk::Format::eD32Sfloat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false
+	).getHandle();
 
     auto start = std::chrono::system_clock::now();
 
diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp
index 6cfd04d0badf723f5fbaa83fa014763d8593c802..4171c73a4a9e101502a46885a6eff9c97130f3a8 100644
--- a/projects/particle_simulation/src/main.cpp
+++ b/projects/particle_simulation/src/main.cpp
@@ -209,12 +209,23 @@ int main(int argc, const char **argv) {
     cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, -2.0f));
     cameraManager.getCamera(camIndex1).setCenter(glm::vec3(0.0f, 0.0f, 0.0f));
 
-    vkcv::ImageHandle colorBuffer = core.createImage(colorFormat, windowWidth, windowHeight, 1, false, true, true).getHandle();
-    BloomAndFlares bloomAndFlares(&core, colorFormat, windowWidth, windowHeight);
+	auto swapchainExtent = core.getSwapchain().getExtent();
+	
+    vkcv::ImageHandle colorBuffer = core.createImage(
+			colorFormat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false, true, true
+	).getHandle();
+    BloomAndFlares bloomAndFlares(&core, colorFormat, swapchainExtent.width, swapchainExtent.height);
     window.e_resize.add([&](int width, int height) {
-        windowWidth = width;
-        windowHeight = height;
-        colorBuffer = core.createImage(colorFormat, windowWidth, windowHeight, 1, false, true, true).getHandle();
+		swapchainExtent = core.getSwapchain().getExtent();
+        colorBuffer = core.createImage(
+				colorFormat,
+				swapchainExtent.width,
+				swapchainExtent.height,
+				1, false, true, true
+		).getHandle();
         bloomAndFlares.updateImageDimensions(width, height);
     });
 
@@ -298,8 +309,8 @@ int main(int argc, const char **argv) {
         core.writeDescriptorSet(tonemappingDescriptor, tonemappingDescriptorWrites);
 
         uint32_t tonemappingDispatchCount[3];
-        tonemappingDispatchCount[0] = std::ceil(windowWidth / 8.f);
-        tonemappingDispatchCount[1] = std::ceil(windowHeight / 8.f);
+        tonemappingDispatchCount[0] = std::ceil(swapchainExtent.width / 8.f);
+        tonemappingDispatchCount[1] = std::ceil(swapchainExtent.height / 8.f);
         tonemappingDispatchCount[2] = 1;
 
         core.recordComputeDispatchToCmdStream(
diff --git a/projects/voxelization/resources/RadialLUT.png b/projects/voxelization/assets/RadialLUT.png
similarity index 100%
rename from projects/voxelization/resources/RadialLUT.png
rename to projects/voxelization/assets/RadialLUT.png
diff --git a/projects/voxelization/resources/Sponza/Sponza.bin b/projects/voxelization/assets/Sponza/Sponza.bin
similarity index 100%
rename from projects/voxelization/resources/Sponza/Sponza.bin
rename to projects/voxelization/assets/Sponza/Sponza.bin
diff --git a/projects/voxelization/resources/Sponza/Sponza.gltf b/projects/voxelization/assets/Sponza/Sponza.gltf
similarity index 100%
rename from projects/voxelization/resources/Sponza/Sponza.gltf
rename to projects/voxelization/assets/Sponza/Sponza.gltf
diff --git a/projects/voxelization/resources/Sponza/Textures/Arch_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Arch_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Arch_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Arch_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Arch_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Arch_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Arch_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Arch_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Arch_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Arch_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Arch_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Arch_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Background_Albedo.png b/projects/voxelization/assets/Sponza/Textures/Background_Albedo.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Background_Albedo.png
rename to projects/voxelization/assets/Sponza/Textures/Background_Albedo.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Background_Normal.png b/projects/voxelization/assets/Sponza/Textures/Background_Normal.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Background_Normal.png
rename to projects/voxelization/assets/Sponza/Textures/Background_Normal.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Background_Roughness.png b/projects/voxelization/assets/Sponza/Textures/Background_Roughness.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Background_Roughness.png
rename to projects/voxelization/assets/Sponza/Textures/Background_Roughness.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Bricks_A_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Bricks_A_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Bricks_A_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Bricks_A_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Bricks_A_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Bricks_A_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Bricks_A_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Bricks_A_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Bricks_A_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Bricks_A_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Bricks_A_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Bricks_A_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Ceiling_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Ceiling_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Ceiling_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Ceiling_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Ceiling_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Ceiling_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Ceiling_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Ceiling_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Ceiling_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Ceiling_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Ceiling_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Ceiling_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Chain_Diff.png b/projects/voxelization/assets/Sponza/Textures/Chain_Diff.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Chain_Diff.png
rename to projects/voxelization/assets/Sponza/Textures/Chain_Diff.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Chain_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Chain_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Chain_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Chain_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Cloth1_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Cloth1_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Cloth1_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Cloth1_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Cloth1_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Cloth1_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Cloth1_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Cloth1_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Cloth2_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Cloth2_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Cloth2_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Cloth2_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Cloth2_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Cloth2_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Cloth2_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Cloth2_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothBlue1_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothBlue1_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothBlue1_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothBlue1_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothBlue2_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothBlue2_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothBlue2_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothBlue2_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothBlue2_Diff_jpg.jpg b/projects/voxelization/assets/Sponza/Textures/ClothBlue2_Diff_jpg.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothBlue2_Diff_jpg.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothBlue2_Diff_jpg.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothGreen1_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothGreen1_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothGreen1_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothGreen1_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothGreen2_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothGreen2_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothGreen2_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothGreen2_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothRed1_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothRed1_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothRed1_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothRed1_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/ClothRed2_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/ClothRed2_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/ClothRed2_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/ClothRed2_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_B_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Column_B_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_B_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_B_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_B_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Column_B_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_B_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_B_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_B_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Column_B_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_B_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_B_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_C_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Column_C_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_C_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_C_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_C_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Column_C_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_C_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_C_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_C_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Column_C_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_C_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_C_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Column_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Column_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Column_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Column_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Column_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Column_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Detail_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Detail_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Detail_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Detail_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Detail_norm.jpg b/projects/voxelization/assets/Sponza/Textures/Detail_norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Detail_norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Detail_norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Detail_spec.jpg b/projects/voxelization/assets/Sponza/Textures/Detail_spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Detail_spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Detail_spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Fill_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Fill_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Fill_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Fill_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Flagpole_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Flagpole_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flagpole_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Flagpole_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Flagpole_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Flagpole_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flagpole_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Flagpole_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Flagpole_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Flagpole_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flagpole_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Flagpole_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Floor_A_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Floor_A_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Floor_A_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Floor_A_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Floor_A_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Floor_A_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Floor_A_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Floor_A_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Floor_A_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Floor_A_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Floor_A_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Floor_A_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Flower_Diff.png b/projects/voxelization/assets/Sponza/Textures/Flower_Diff.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flower_Diff.png
rename to projects/voxelization/assets/Sponza/Textures/Flower_Diff.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Flower_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Flower_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flower_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Flower_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Flower_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Flower_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Flower_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Flower_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Lion_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Lion_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Lion_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Lion_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Lion_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Lion_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Lion_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Lion_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Lion_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Lion_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Lion_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Lion_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Roof_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Roof_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Roof_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Roof_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Roof_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Roof_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Roof_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Roof_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Roof_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Roof_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Roof_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Roof_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Shield_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Shield_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Shield_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Shield_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Shield_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Shield_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Shield_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Shield_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Shield_diff.jpg b/projects/voxelization/assets/Sponza/Textures/Shield_diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Shield_diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Shield_diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Thorn_Diff.png b/projects/voxelization/assets/Sponza/Textures/Thorn_Diff.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Thorn_Diff.png
rename to projects/voxelization/assets/Sponza/Textures/Thorn_Diff.png
diff --git a/projects/voxelization/resources/Sponza/Textures/Thorn_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Thorn_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Thorn_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Thorn_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Thorn_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Thorn_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Thorn_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Thorn_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/VaseRound_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/VaseRound_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/VaseRound_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/VaseRound_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/VaseRound_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/VaseRound_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/VaseRound_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/VaseRound_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/VaseRound_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/VaseRound_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/VaseRound_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/VaseRound_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Diff.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Diff.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Diff.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Diff.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Spec.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_Hanging_Spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_Hanging_Spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_Norm.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_Norm.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_Norm.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_Norm.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/Vase_spec.jpg b/projects/voxelization/assets/Sponza/Textures/Vase_spec.jpg
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/Vase_spec.jpg
rename to projects/voxelization/assets/Sponza/Textures/Vase_spec.jpg
diff --git a/projects/voxelization/resources/Sponza/Textures/white.png b/projects/voxelization/assets/Sponza/Textures/white.png
similarity index 100%
rename from projects/voxelization/resources/Sponza/Textures/white.png
rename to projects/voxelization/assets/Sponza/Textures/white.png
diff --git a/projects/voxelization/resources/cube/boards2_vcyc_jpg.jpg b/projects/voxelization/assets/cube/boards2_vcyc_jpg.jpg
similarity index 100%
rename from projects/voxelization/resources/cube/boards2_vcyc_jpg.jpg
rename to projects/voxelization/assets/cube/boards2_vcyc_jpg.jpg
diff --git a/projects/voxelization/resources/cube/cube.bin b/projects/voxelization/assets/cube/cube.bin
similarity index 100%
rename from projects/voxelization/resources/cube/cube.bin
rename to projects/voxelization/assets/cube/cube.bin
diff --git a/projects/voxelization/resources/cube/cube.blend b/projects/voxelization/assets/cube/cube.blend
similarity index 100%
rename from projects/voxelization/resources/cube/cube.blend
rename to projects/voxelization/assets/cube/cube.blend
diff --git a/projects/voxelization/resources/cube/cube.blend1 b/projects/voxelization/assets/cube/cube.blend1
similarity index 100%
rename from projects/voxelization/resources/cube/cube.blend1
rename to projects/voxelization/assets/cube/cube.blend1
diff --git a/projects/voxelization/resources/cube/cube.glb b/projects/voxelization/assets/cube/cube.glb
similarity index 100%
rename from projects/voxelization/resources/cube/cube.glb
rename to projects/voxelization/assets/cube/cube.glb
diff --git a/projects/voxelization/resources/cube/cube.gltf b/projects/voxelization/assets/cube/cube.gltf
similarity index 100%
rename from projects/voxelization/resources/cube/cube.gltf
rename to projects/voxelization/assets/cube/cube.gltf
diff --git a/projects/voxelization/resources/lensDirt.jpg b/projects/voxelization/assets/lensDirt.jpg
similarity index 100%
rename from projects/voxelization/resources/lensDirt.jpg
rename to projects/voxelization/assets/lensDirt.jpg
diff --git a/projects/voxelization/resources/shaders/bloomDownsample.comp b/projects/voxelization/assets/shaders/bloomDownsample.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/bloomDownsample.comp
rename to projects/voxelization/assets/shaders/bloomDownsample.comp
diff --git a/projects/voxelization/resources/shaders/bloomFlaresComposite.comp b/projects/voxelization/assets/shaders/bloomFlaresComposite.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/bloomFlaresComposite.comp
rename to projects/voxelization/assets/shaders/bloomFlaresComposite.comp
diff --git a/projects/voxelization/resources/shaders/bloomUpsample.comp b/projects/voxelization/assets/shaders/bloomUpsample.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/bloomUpsample.comp
rename to projects/voxelization/assets/shaders/bloomUpsample.comp
diff --git a/projects/voxelization/resources/shaders/brdf.inc b/projects/voxelization/assets/shaders/brdf.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/brdf.inc
rename to projects/voxelization/assets/shaders/brdf.inc
diff --git a/projects/voxelization/resources/shaders/depthPrepass.frag b/projects/voxelization/assets/shaders/depthPrepass.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/depthPrepass.frag
rename to projects/voxelization/assets/shaders/depthPrepass.frag
diff --git a/projects/voxelization/resources/shaders/depthPrepass.vert b/projects/voxelization/assets/shaders/depthPrepass.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/depthPrepass.vert
rename to projects/voxelization/assets/shaders/depthPrepass.vert
diff --git a/projects/voxelization/resources/shaders/depthToMoments.comp b/projects/voxelization/assets/shaders/depthToMoments.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/depthToMoments.comp
rename to projects/voxelization/assets/shaders/depthToMoments.comp
diff --git a/projects/voxelization/resources/shaders/lensFlares.comp b/projects/voxelization/assets/shaders/lensFlares.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/lensFlares.comp
rename to projects/voxelization/assets/shaders/lensFlares.comp
diff --git a/projects/voxelization/resources/shaders/lightInfo.inc b/projects/voxelization/assets/shaders/lightInfo.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/lightInfo.inc
rename to projects/voxelization/assets/shaders/lightInfo.inc
diff --git a/projects/voxelization/resources/shaders/luma.inc b/projects/voxelization/assets/shaders/luma.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/luma.inc
rename to projects/voxelization/assets/shaders/luma.inc
diff --git a/projects/voxelization/resources/shaders/msaa4XResolve.comp b/projects/voxelization/assets/shaders/msaa4XResolve.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/msaa4XResolve.comp
rename to projects/voxelization/assets/shaders/msaa4XResolve.comp
diff --git a/projects/voxelization/resources/shaders/perMeshResources.inc b/projects/voxelization/assets/shaders/perMeshResources.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/perMeshResources.inc
rename to projects/voxelization/assets/shaders/perMeshResources.inc
diff --git a/projects/voxelization/resources/shaders/postEffects.comp b/projects/voxelization/assets/shaders/postEffects.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/postEffects.comp
rename to projects/voxelization/assets/shaders/postEffects.comp
diff --git a/projects/voxelization/resources/shaders/shader.frag b/projects/voxelization/assets/shaders/shader.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/shader.frag
rename to projects/voxelization/assets/shaders/shader.frag
diff --git a/projects/voxelization/resources/shaders/shader.vert b/projects/voxelization/assets/shaders/shader.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/shader.vert
rename to projects/voxelization/assets/shaders/shader.vert
diff --git a/projects/voxelization/resources/shaders/shadow.frag b/projects/voxelization/assets/shaders/shadow.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/shadow.frag
rename to projects/voxelization/assets/shaders/shadow.frag
diff --git a/projects/voxelization/resources/shaders/shadow.vert b/projects/voxelization/assets/shaders/shadow.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/shadow.vert
rename to projects/voxelization/assets/shaders/shadow.vert
diff --git a/projects/voxelization/resources/shaders/shadowBlur.inc b/projects/voxelization/assets/shaders/shadowBlur.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/shadowBlur.inc
rename to projects/voxelization/assets/shaders/shadowBlur.inc
diff --git a/projects/voxelization/resources/shaders/shadowBlurX.comp b/projects/voxelization/assets/shaders/shadowBlurX.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/shadowBlurX.comp
rename to projects/voxelization/assets/shaders/shadowBlurX.comp
diff --git a/projects/voxelization/resources/shaders/shadowBlurY.comp b/projects/voxelization/assets/shaders/shadowBlurY.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/shadowBlurY.comp
rename to projects/voxelization/assets/shaders/shadowBlurY.comp
diff --git a/projects/voxelization/resources/shaders/shadowMapping.inc b/projects/voxelization/assets/shaders/shadowMapping.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/shadowMapping.inc
rename to projects/voxelization/assets/shaders/shadowMapping.inc
diff --git a/projects/voxelization/resources/shaders/sky.frag b/projects/voxelization/assets/shaders/sky.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/sky.frag
rename to projects/voxelization/assets/shaders/sky.frag
diff --git a/projects/voxelization/resources/shaders/sky.vert b/projects/voxelization/assets/shaders/sky.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/sky.vert
rename to projects/voxelization/assets/shaders/sky.vert
diff --git a/projects/voxelization/resources/shaders/tonemapping.comp b/projects/voxelization/assets/shaders/tonemapping.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/tonemapping.comp
rename to projects/voxelization/assets/shaders/tonemapping.comp
diff --git a/projects/voxelization/resources/shaders/voxel.inc b/projects/voxelization/assets/shaders/voxel.inc
similarity index 100%
rename from projects/voxelization/resources/shaders/voxel.inc
rename to projects/voxelization/assets/shaders/voxel.inc
diff --git a/projects/voxelization/resources/shaders/voxelBufferToImage.comp b/projects/voxelization/assets/shaders/voxelBufferToImage.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelBufferToImage.comp
rename to projects/voxelization/assets/shaders/voxelBufferToImage.comp
diff --git a/projects/voxelization/resources/shaders/voxelReset.comp b/projects/voxelization/assets/shaders/voxelReset.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelReset.comp
rename to projects/voxelization/assets/shaders/voxelReset.comp
diff --git a/projects/voxelization/resources/shaders/voxelSecondaryBounce.comp b/projects/voxelization/assets/shaders/voxelSecondaryBounce.comp
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelSecondaryBounce.comp
rename to projects/voxelization/assets/shaders/voxelSecondaryBounce.comp
diff --git a/projects/voxelization/resources/shaders/voxelVisualisation.frag b/projects/voxelization/assets/shaders/voxelVisualisation.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelVisualisation.frag
rename to projects/voxelization/assets/shaders/voxelVisualisation.frag
diff --git a/projects/voxelization/resources/shaders/voxelVisualisation.geom b/projects/voxelization/assets/shaders/voxelVisualisation.geom
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelVisualisation.geom
rename to projects/voxelization/assets/shaders/voxelVisualisation.geom
diff --git a/projects/voxelization/resources/shaders/voxelVisualisation.vert b/projects/voxelization/assets/shaders/voxelVisualisation.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelVisualisation.vert
rename to projects/voxelization/assets/shaders/voxelVisualisation.vert
diff --git a/projects/voxelization/resources/shaders/voxelization.frag b/projects/voxelization/assets/shaders/voxelization.frag
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelization.frag
rename to projects/voxelization/assets/shaders/voxelization.frag
diff --git a/projects/voxelization/resources/shaders/voxelization.geom b/projects/voxelization/assets/shaders/voxelization.geom
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelization.geom
rename to projects/voxelization/assets/shaders/voxelization.geom
diff --git a/projects/voxelization/resources/shaders/voxelization.vert b/projects/voxelization/assets/shaders/voxelization.vert
similarity index 100%
rename from projects/voxelization/resources/shaders/voxelization.vert
rename to projects/voxelization/assets/shaders/voxelization.vert
diff --git a/projects/voxelization/resources/triangle/Triangle.bin b/projects/voxelization/assets/triangle/Triangle.bin
similarity index 100%
rename from projects/voxelization/resources/triangle/Triangle.bin
rename to projects/voxelization/assets/triangle/Triangle.bin
diff --git a/projects/voxelization/resources/triangle/Triangle.blend b/projects/voxelization/assets/triangle/Triangle.blend
similarity index 100%
rename from projects/voxelization/resources/triangle/Triangle.blend
rename to projects/voxelization/assets/triangle/Triangle.blend
diff --git a/projects/voxelization/resources/triangle/Triangle.glb b/projects/voxelization/assets/triangle/Triangle.glb
similarity index 100%
rename from projects/voxelization/resources/triangle/Triangle.glb
rename to projects/voxelization/assets/triangle/Triangle.glb
diff --git a/projects/voxelization/resources/triangle/Triangle.gltf b/projects/voxelization/assets/triangle/Triangle.gltf
similarity index 100%
rename from projects/voxelization/resources/triangle/Triangle.gltf
rename to projects/voxelization/assets/triangle/Triangle.gltf
diff --git a/projects/voxelization/src/BloomAndFlares.cpp b/projects/voxelization/src/BloomAndFlares.cpp
index 1837ffe0f16500e18e2c013c5c74ac0e10ef6221..6a7eae3b90e83722a7a1c45ed95e96d4291b28ec 100644
--- a/projects/voxelization/src/BloomAndFlares.cpp
+++ b/projects/voxelization/src/BloomAndFlares.cpp
@@ -3,7 +3,7 @@
 #include <vkcv/asset/asset_loader.hpp>
 
 vkcv::Image loadLenseDirtTexture(vkcv::Core* corePtr) {
-    const auto texture = vkcv::asset::loadTexture("resources/lensDirt.jpg");
+    const auto texture = vkcv::asset::loadTexture("assets/lensDirt.jpg");
     vkcv::Image image = corePtr->createImage(vk::Format::eR8G8B8A8Unorm, texture.width, texture.height);
     image.fill((void*)texture.data.data(), texture.data.size());
     return image;
@@ -37,7 +37,7 @@ BloomAndFlares::BloomAndFlares(
     // DOWNSAMPLE
     vkcv::ShaderProgram dsProg;
     compiler.compile(vkcv::ShaderStage::COMPUTE,
-                     "resources/shaders/bloomDownsample.comp",
+                     "assets/shaders/bloomDownsample.comp",
                      [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path)
                      {
                          dsProg.addShader(shaderStage, path);
@@ -55,7 +55,7 @@ BloomAndFlares::BloomAndFlares(
     // UPSAMPLE
     vkcv::ShaderProgram usProg;
     compiler.compile(vkcv::ShaderStage::COMPUTE,
-                     "resources/shaders/bloomUpsample.comp",
+                     "assets/shaders/bloomUpsample.comp",
                      [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path)
                      {
                          usProg.addShader(shaderStage, path);
@@ -80,7 +80,7 @@ BloomAndFlares::BloomAndFlares(
     // LENS FEATURES
     vkcv::ShaderProgram lensProg;
     compiler.compile(vkcv::ShaderStage::COMPUTE,
-                     "resources/shaders/lensFlares.comp",
+                     "assets/shaders/lensFlares.comp",
                      [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path)
                      {
                          lensProg.addShader(shaderStage, path);
@@ -93,7 +93,7 @@ BloomAndFlares::BloomAndFlares(
     // COMPOSITE
     vkcv::ShaderProgram compProg;
     compiler.compile(vkcv::ShaderStage::COMPUTE,
-                     "resources/shaders/bloomFlaresComposite.comp",
+                     "assets/shaders/bloomFlaresComposite.comp",
                      [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path)
                      {
                          compProg.addShader(shaderStage, path);
@@ -105,7 +105,7 @@ BloomAndFlares::BloomAndFlares(
             compProg, { p_Core->getDescriptorSetLayout(m_CompositeDescSetLayout).vulkanHandle });
 
     // radial LUT
-    const auto texture = vkcv::asset::loadTexture("resources/RadialLUT.png");
+    const auto texture = vkcv::asset::loadTexture("assets/RadialLUT.png");
 
     m_radialLut.fill((void*)texture.data.data(), texture.data.size());
 }
diff --git a/projects/voxelization/src/ShadowMapping.cpp b/projects/voxelization/src/ShadowMapping.cpp
index 69feca36b40dcad37c6abc55904e2251de57d435..3f764618da0d3736dcd4cae212e95faeb834d68a 100644
--- a/projects/voxelization/src/ShadowMapping.cpp
+++ b/projects/voxelization/src/ShadowMapping.cpp
@@ -9,11 +9,11 @@ const vkcv::Multisampling   msaa                    = vkcv::Multisampling::MSAA8
 vkcv::ShaderProgram loadShadowShader() {
 	vkcv::ShaderProgram shader;
 	vkcv::shader::GLSLCompiler compiler;
-	compiler.compile(vkcv::ShaderStage::VERTEX, "resources/shaders/shadow.vert",
+	compiler.compile(vkcv::ShaderStage::VERTEX, "assets/shaders/shadow.vert",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, "resources/shaders/shadow.frag",
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, "assets/shaders/shadow.frag",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -23,7 +23,7 @@ vkcv::ShaderProgram loadShadowShader() {
 vkcv::ShaderProgram loadDepthToMomentsShader() {
 	vkcv::ShaderProgram shader;
 	vkcv::shader::GLSLCompiler compiler;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/depthToMoments.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/depthToMoments.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -33,7 +33,7 @@ vkcv::ShaderProgram loadDepthToMomentsShader() {
 vkcv::ShaderProgram loadShadowBlurXShader() {
 	vkcv::ShaderProgram shader;
 	vkcv::shader::GLSLCompiler compiler;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/shadowBlurX.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/shadowBlurX.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -43,7 +43,7 @@ vkcv::ShaderProgram loadShadowBlurXShader() {
 vkcv::ShaderProgram loadShadowBlurYShader() {
 	vkcv::ShaderProgram shader;
 	vkcv::shader::GLSLCompiler compiler;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/shadowBlurY.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/shadowBlurY.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
diff --git a/projects/voxelization/src/Voxelization.cpp b/projects/voxelization/src/Voxelization.cpp
index 4021b8da4b43f6af63383e3bb9a1f6682bbfc981..783eb8b2edf4ad9310295a1f716ec3394c2b4c2e 100644
--- a/projects/voxelization/src/Voxelization.cpp
+++ b/projects/voxelization/src/Voxelization.cpp
@@ -6,15 +6,15 @@
 vkcv::ShaderProgram loadVoxelizationShader() {
 	vkcv::shader::GLSLCompiler compiler;
 	vkcv::ShaderProgram shader;
-	compiler.compile(vkcv::ShaderStage::VERTEX, "resources/shaders/voxelization.vert",
+	compiler.compile(vkcv::ShaderStage::VERTEX, "assets/shaders/voxelization.vert",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::GEOMETRY, "resources/shaders/voxelization.geom",
+	compiler.compile(vkcv::ShaderStage::GEOMETRY, "assets/shaders/voxelization.geom",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, "resources/shaders/voxelization.frag",
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, "assets/shaders/voxelization.frag",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -24,15 +24,15 @@ vkcv::ShaderProgram loadVoxelizationShader() {
 vkcv::ShaderProgram loadVoxelVisualisationShader() {
 	vkcv::shader::GLSLCompiler compiler;
 	vkcv::ShaderProgram shader;
-	compiler.compile(vkcv::ShaderStage::VERTEX, "resources/shaders/voxelVisualisation.vert",
+	compiler.compile(vkcv::ShaderStage::VERTEX, "assets/shaders/voxelVisualisation.vert",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::GEOMETRY, "resources/shaders/voxelVisualisation.geom",
+	compiler.compile(vkcv::ShaderStage::GEOMETRY, "assets/shaders/voxelVisualisation.geom",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, "resources/shaders/voxelVisualisation.frag",
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, "assets/shaders/voxelVisualisation.frag",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -42,7 +42,7 @@ vkcv::ShaderProgram loadVoxelVisualisationShader() {
 vkcv::ShaderProgram loadVoxelResetShader() {
 	vkcv::shader::GLSLCompiler compiler;
 	vkcv::ShaderProgram shader;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/voxelReset.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/voxelReset.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -52,7 +52,7 @@ vkcv::ShaderProgram loadVoxelResetShader() {
 vkcv::ShaderProgram loadVoxelBufferToImageShader() {
 	vkcv::shader::GLSLCompiler compiler;
 	vkcv::ShaderProgram shader;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/voxelBufferToImage.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/voxelBufferToImage.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
@@ -62,7 +62,7 @@ vkcv::ShaderProgram loadVoxelBufferToImageShader() {
 vkcv::ShaderProgram loadSecondaryBounceShader() {
 	vkcv::shader::GLSLCompiler compiler;
 	vkcv::ShaderProgram shader;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/voxelSecondaryBounce.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/voxelSecondaryBounce.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		shader.addShader(shaderStage, path);
 	});
diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp
index d70fefca926530e1153de9f363557c6b501f49db..3b3e60a1be484f999f6ee38cf6347d16c43cd6c5 100644
--- a/projects/voxelization/src/main.cpp
+++ b/projects/voxelization/src/main.cpp
@@ -15,8 +15,6 @@
 int main(int argc, const char** argv) {
 	const char* applicationName = "Voxelization";
 
-	uint32_t windowWidth = 1280;
-	uint32_t windowHeight = 720;
 	const vkcv::Multisampling   msaa        = vkcv::Multisampling::MSAA4X;
 	const bool                  usingMsaa   = msaa != vkcv::Multisampling::None;
 
@@ -35,8 +33,8 @@ int main(int argc, const char** argv) {
 	vkcv::Window& window = core.getWindow(windowHandle);
 
 	bool     isFullscreen            = false;
-	uint32_t windowedWidthBackup     = windowWidth;
-	uint32_t windowedHeightBackup    = windowHeight;
+	uint32_t windowedWidthBackup     = window.getWidth();
+	uint32_t windowedHeightBackup    = window.getHeight();
 	int      windowedPosXBackup;
 	int      windowedPosYBackup;
     glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
@@ -54,8 +52,8 @@ int main(int argc, const char** argv) {
 					GLFW_DONT_CARE);
 			}
 			else {
-				windowedWidthBackup     = windowWidth;
-				windowedHeightBackup    = windowHeight;
+				windowedWidthBackup     = window.getWidth();
+				windowedHeightBackup    = window.getHeight();
 
 				glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
 
@@ -88,7 +86,7 @@ int main(int argc, const char** argv) {
 
 	vkcv::asset::Scene mesh;
 
-	const char* path = argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf";
+	const char* path = argc > 1 ? argv[1] : "assets/Sponza/Sponza.gltf";
 	vkcv::asset::Scene scene;
 	int result = vkcv::asset::loadScene(path, scene);
 
@@ -169,11 +167,11 @@ int main(int argc, const char** argv) {
 	vkcv::shader::GLSLCompiler compiler;
 
 	vkcv::ShaderProgram forwardProgram;
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/shader.vert"), 
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/shader.vert"), 
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		forwardProgram.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		forwardProgram.addShader(shaderStage, path);
 	});
@@ -191,11 +189,11 @@ int main(int argc, const char** argv) {
 
 	// depth prepass config
 	vkcv::ShaderProgram depthPrepassShader;
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/depthPrepass.vert"),
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/depthPrepass.vert"),
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		depthPrepassShader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/depthPrepass.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/depthPrepass.frag"),
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		depthPrepassShader.addShader(shaderStage, path);
 	});
@@ -297,10 +295,12 @@ int main(int argc, const char** argv) {
 	vkcv::DescriptorSetLayoutHandle prepassDescriptorSetLayout = core.createDescriptorSetLayout({});
 	vkcv::DescriptorSetHandle prepassDescriptorSet = core.createDescriptorSet(prepassDescriptorSetLayout);
 
+	auto swapchainExtent = core.getSwapchain().getExtent();
+	
 	vkcv::PipelineConfig prepassPipelineConfig{
 		depthPrepassShader,
-		windowWidth,
-		windowHeight,
+		swapchainExtent.width,
+		swapchainExtent.height,
 		prepassPass,
 		vertexLayout,
 		{ 
@@ -317,8 +317,8 @@ int main(int argc, const char** argv) {
 	// forward pipeline
 	vkcv::PipelineConfig forwardPipelineConfig {
 		forwardProgram,
-		windowWidth,
-		windowHeight,
+		swapchainExtent.width,
+		swapchainExtent.height,
 		forwardPass,
 		vertexLayout,
 		{	
@@ -361,19 +361,19 @@ int main(int argc, const char** argv) {
 	vkcv::PassHandle skyPass = core.createPass(skyPassConfig);
 
 	vkcv::ShaderProgram skyShader;
-	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/sky.vert"),
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/sky.vert"),
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		skyShader.addShader(shaderStage, path);
 	});
-	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/sky.frag"),
+	compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/sky.frag"),
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		skyShader.addShader(shaderStage, path);
 	});
 
 	vkcv::PipelineConfig skyPipeConfig;
 	skyPipeConfig.m_ShaderProgram       = skyShader;
-	skyPipeConfig.m_Width               = windowWidth;
-	skyPipeConfig.m_Height              = windowHeight;
+	skyPipeConfig.m_Width               = swapchainExtent.width;
+	skyPipeConfig.m_Height              = swapchainExtent.height;
 	skyPipeConfig.m_PassHandle          = skyPass;
 	skyPipeConfig.m_VertexLayout        = vkcv::VertexLayout();
 	skyPipeConfig.m_DescriptorLayouts   = {};
@@ -384,21 +384,47 @@ int main(int argc, const char** argv) {
 	vkcv::PipelineHandle skyPipe = core.createGraphicsPipeline(skyPipeConfig);
 
 	// render targets
-	vkcv::ImageHandle depthBuffer           = core.createImage(depthBufferFormat, windowWidth, windowHeight, 1, false, false, false, msaa).getHandle();
+	vkcv::ImageHandle depthBuffer           = core.createImage(
+			depthBufferFormat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false, false, false, msaa
+	).getHandle();
 
     const bool colorBufferRequiresStorage   = !usingMsaa;
-	vkcv::ImageHandle colorBuffer           = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, colorBufferRequiresStorage, true, msaa).getHandle();
+	vkcv::ImageHandle colorBuffer           = core.createImage(
+			colorBufferFormat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false, colorBufferRequiresStorage, true, msaa
+	).getHandle();
 
 	vkcv::ImageHandle resolvedColorBuffer;
 	if (usingMsaa) {
-		resolvedColorBuffer = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, true, true).getHandle();
+		resolvedColorBuffer = core.createImage(
+				colorBufferFormat,
+				swapchainExtent.width,
+				swapchainExtent.height,
+				1, false, true, true
+		).getHandle();
 	}
 	else {
 		resolvedColorBuffer = colorBuffer;
 	}
 	
-	vkcv::ImageHandle swapBuffer = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, true).getHandle();
-	vkcv::ImageHandle swapBuffer2 = core.createImage(colorBufferFormat, windowWidth, windowHeight, 1, false, true).getHandle();
+	vkcv::ImageHandle swapBuffer = core.createImage(
+			colorBufferFormat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false, true
+	).getHandle();
+	
+	vkcv::ImageHandle swapBuffer2 = core.createImage(
+			colorBufferFormat,
+			swapchainExtent.width,
+			swapchainExtent.height,
+			1, false, true
+	).getHandle();
 
 	const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 
@@ -418,7 +444,7 @@ int main(int argc, const char** argv) {
 
 	// tonemapping compute shader
 	vkcv::ShaderProgram tonemappingProgram;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/tonemapping.comp", 
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/tonemapping.comp", 
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		tonemappingProgram.addShader(shaderStage, path);
 	});
@@ -431,7 +457,7 @@ int main(int argc, const char** argv) {
 	
 	// tonemapping compute shader
 	vkcv::ShaderProgram postEffectsProgram;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/postEffects.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/postEffects.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		postEffectsProgram.addShader(shaderStage, path);
 	});
@@ -444,7 +470,7 @@ int main(int argc, const char** argv) {
 
 	// resolve compute shader
 	vkcv::ShaderProgram resolveProgram;
-	compiler.compile(vkcv::ShaderStage::COMPUTE, "resources/shaders/msaa4XResolve.comp",
+	compiler.compile(vkcv::ShaderStage::COMPUTE, "assets/shaders/msaa4XResolve.comp",
 		[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 		resolveProgram.addShader(shaderStage, path);
 	});
@@ -513,11 +539,11 @@ int main(int argc, const char** argv) {
 		voxelSampler,
 		msaa);
 
-	BloomAndFlares bloomFlares(&core, colorBufferFormat, windowWidth, windowHeight);
+	BloomAndFlares bloomFlares(&core, colorBufferFormat, swapchainExtent.width, swapchainExtent.height);
 
 	window.e_key.add([&](int key, int scancode, int action, int mods) {
 		if (key == GLFW_KEY_R && action == GLFW_PRESS) {
-			bloomFlares = BloomAndFlares(&core, colorBufferFormat, windowWidth, windowHeight);
+			bloomFlares = BloomAndFlares(&core, colorBufferFormat, swapchainExtent.width, swapchainExtent.height);
 		}
 	});
 
@@ -547,7 +573,7 @@ int main(int argc, const char** argv) {
 	core.writeDescriptorSet(forwardShadingDescriptorSet, forwardDescriptorWrites);
 
 	vkcv::upscaling::FSRUpscaling upscaling (core);
-	uint32_t fsrWidth = windowWidth, fsrHeight = windowHeight;
+	uint32_t fsrWidth = swapchainExtent.width, fsrHeight = swapchainExtent.height;
 	
 	vkcv::upscaling::FSRQualityMode fsrMode = vkcv::upscaling::FSRQualityMode::NONE;
 	int fsrModeIndex = static_cast<int>(fsrMode);
@@ -922,11 +948,11 @@ int main(int argc, const char** argv) {
 			if (ImGui::Button("Reload forward pass")) {
 
 				vkcv::ShaderProgram newForwardProgram;
-				compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/shader.vert"),
+				compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("assets/shaders/shader.vert"),
 					[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 					newForwardProgram.addShader(shaderStage, path);
 				});
-				compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/shader.frag"),
+				compiler.compile(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("assets/shaders/shader.frag"),
 					[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 					newForwardProgram.addShader(shaderStage, path);
 				});
@@ -940,7 +966,7 @@ int main(int argc, const char** argv) {
 			if (ImGui::Button("Reload tonemapping")) {
 
 				vkcv::ShaderProgram newProgram;
-				compiler.compile(vkcv::ShaderStage::COMPUTE, std::filesystem::path("resources/shaders/tonemapping.comp"),
+				compiler.compile(vkcv::ShaderStage::COMPUTE, std::filesystem::path("assets/shaders/tonemapping.comp"),
 					[&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
 					newProgram.addShader(shaderStage, path);
 				});
diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp
index 0d4aa43446ffbe69c367651fefbce0c78bfe7710..906c6fe73c206048e5b06d03f3bf6a02ffdaf13b 100644
--- a/src/vkcv/Context.cpp
+++ b/src/vkcv/Context.cpp
@@ -264,6 +264,10 @@ namespace vkcv
 		
 		FeatureManager featureManager (physicalDevice);
 		
+#ifdef __APPLE__
+		featureManager.useExtension("VK_KHR_portability_subset", true);
+#endif
+		
 		if (featureManager.useExtension(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, false)) {
 			featureManager.useFeatures<vk::PhysicalDeviceShaderFloat16Int8Features>(
 					[](vk::PhysicalDeviceShaderFloat16Int8Features& features) {