From 11c4ea484ce5901d795a5d8802533319e0ef36d9 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Fri, 9 Jul 2021 19:25:13 +0200
Subject: [PATCH] [#56] Removed batch and SPIRV files, replaced basic shader
 loading with runtime compilation

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 projects/first_mesh/CMakeLists.txt            |   4 +--
 .../first_mesh/resources/shaders/compile.bat  |   3 ---
 .../first_mesh/resources/shaders/frag.spv     | Bin 920 -> 0 bytes
 .../first_mesh/resources/shaders/vert.spv     | Bin 1520 -> 0 bytes
 projects/first_mesh/src/main.cpp              |  16 ++++++++---
 projects/first_scene/CMakeLists.txt           |   4 +--
 .../first_scene/resources/shaders/compile.bat |   3 ---
 .../first_scene/resources/shaders/frag.spv    | Bin 920 -> 0 bytes
 .../first_scene/resources/shaders/vert.spv    | Bin 1520 -> 0 bytes
 projects/first_scene/src/main.cpp             |  19 ++++++++-----
 projects/first_triangle/shaders/comp.spv      | Bin 1520 -> 0 bytes
 projects/first_triangle/shaders/compile.bat   |   4 ---
 projects/first_triangle/shaders/frag.spv      | Bin 608 -> 0 bytes
 projects/first_triangle/shaders/shader.comp   |  25 ------------------
 projects/first_triangle/shaders/vert.spv      | Bin 1772 -> 0 bytes
 projects/first_triangle/src/main.cpp          |   6 ++---
 16 files changed, 32 insertions(+), 52 deletions(-)
 delete mode 100644 projects/first_mesh/resources/shaders/compile.bat
 delete mode 100644 projects/first_mesh/resources/shaders/frag.spv
 delete mode 100644 projects/first_mesh/resources/shaders/vert.spv
 delete mode 100644 projects/first_scene/resources/shaders/compile.bat
 delete mode 100644 projects/first_scene/resources/shaders/frag.spv
 delete mode 100644 projects/first_scene/resources/shaders/vert.spv
 delete mode 100644 projects/first_triangle/shaders/comp.spv
 delete mode 100644 projects/first_triangle/shaders/compile.bat
 delete mode 100644 projects/first_triangle/shaders/frag.spv
 delete mode 100644 projects/first_triangle/shaders/shader.comp
 delete mode 100644 projects/first_triangle/shaders/vert.spv

diff --git a/projects/first_mesh/CMakeLists.txt b/projects/first_mesh/CMakeLists.txt
index eb0f028d..6455e75d 100644
--- a/projects/first_mesh/CMakeLists.txt
+++ b/projects/first_mesh/CMakeLists.txt
@@ -22,7 +22,7 @@ if(MSVC)
 endif()
 
 # including headers of dependencies and the VkCV framework
-target_include_directories(first_mesh SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include})
+target_include_directories(first_mesh SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include} ${vkcv_shader_compiler_include})
 
 # linking with libraries from all dependencies and the VkCV framework
-target_link_libraries(first_mesh vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera)
+target_link_libraries(first_mesh vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera vkcv_shader_compiler)
diff --git a/projects/first_mesh/resources/shaders/compile.bat b/projects/first_mesh/resources/shaders/compile.bat
deleted file mode 100644
index b4521235..00000000
--- a/projects/first_mesh/resources/shaders/compile.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-%VULKAN_SDK%\Bin32\glslc.exe shader.vert -o vert.spv
-%VULKAN_SDK%\Bin32\glslc.exe shader.frag -o frag.spv
-pause
\ No newline at end of file
diff --git a/projects/first_mesh/resources/shaders/frag.spv b/projects/first_mesh/resources/shaders/frag.spv
deleted file mode 100644
index 087e4e22fb2fcec27d99b3ff2aa1a705fe755796..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 920
zcmYk4UrQTN5XDF1rZHAitHzqN#Xs+%4{a%kf{N@*XrO7+$7P#b$jT<W>~2c?_54)6
z2tB_|LifTj_spC-b7ppHn-?$4Hmqs8_Rf}P-!>I7+p&7-{r<4u%Zo|x<EIZW_N-PC
z;k2w_Tk_Z}jOHY^Wo_A8*(-6$sflhiRW^In!!5D=esJ^cHppEXW?|uid>T$%79_tO
z+_=c$G~xJzf#1Im#%UVl#oyQkaWr?qB+A5!emi)L3NM<E<He*(@WiO<^UNzXCX3=O
ziIYr{6!Gk({LJOk@9s~r$ebc|={GBuco@#o*ojR&=1apo|1ny=WmfRlB%6h?nJ*4|
zcrW9CsefLg|M;we=~c~x$+KtP)028@OwV=w18tVwo|Rj+^4`|HuGp#USnv4;V7}g|
zaAS2Re!0SECVwLJO?mkAtDZHc#?C4Mml|N^<aDHBPaa;YjPUO)d0^(_bk*^-JT=gH
zC{JJJ;q8$;J&Dr;%r1z*e<Kf{Zw$XHPi{RIm|YS3tglC1xEyAEQpA(LQWOolGG+jy
ycVC9qkyz+Fkij7i2VKW9H2o9@Jts1F#0T0mS~@b~7zaIQxt0p{PX1ZZFS38`7*62;

diff --git a/projects/first_mesh/resources/shaders/vert.spv b/projects/first_mesh/resources/shaders/vert.spv
deleted file mode 100644
index 374c023e14b351eb43cbcda5951cbb8b3d6f96a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1520
zcmYk4*>2NN5Qa~)bP2SjlrBIC4q+>SiVHwU2vAw%UPQD|(Ob(T798X_mhD!+6|cZ6
z@l@O(@qb=|Pc)gCfBu;>Gd|5mf5DhJ(=p5Dfho?KX$UdqoSDzHJ3JolrP+Az(c_0O
zR!lP|!dVrI(~?Yl8(}X?E=z7oZb^0}14&cAhV*YGw#<@ohu;2&S6&*#e&T0=mwxfb
zLE=q6eGNug3a10dJv?-WZ@p0*dujGP47|`rfj72^SoSP{w^-xZXcV4~>x8x#_5RwL
zi>^P1-cgX81W6WrlPk2qv58Gno7rh3bRp+6Z;sn2JGMV`GdV?!xfFXH+W3u4Gd~&y
zvl!bVb{dAWSX;YbPn@=XYto}>L?)vvx0PeWCugx3O|y=p1E2lcXx3tmvG3SV(|6Nk
z;)ex~{oANQz*_nDfcNpF@cA}2!ZYSTjN*&({fkp!#hc)@{O2(@JZ7wT*kJ73RRkN}
zL2agX?iX{*G=2VbsKG8cdYI;dgc@Mfa8-lZyAlpQbJu-l#-~r>yuZ3XD1GX!t17yu
zJLnsGQ`Wq+BiT|uec&_ChW;0&9SLVp`b)C8Z%2Md8a`N87V}p%h#`)6=cTJ%Ju7|Q
z1Q_?M<h-IT_u#KeINS2s4Rz_Ot1NZ|M(vBz+z&==eBKWj@k^x*pBcBL>6yEUZ%fZf
zz{$sF?_l%-_o~F0pD*F}WRXih`2Eta^6~jjaH@KIr{a#5xg(pJ?4SI*(s04y<L{Oj
z@q4n#t>XB6SFk5~L)2j}9P0cL!kgRIKeKO0*a!Q3E+%`}lz`*Y_Z0~<zgG^u?Ub0*
z47*lh+*|Q@Yvj_ykv76ku1m;=Pn_NTQe9$>guCI;Ur+jmgttI{FEjzZBdL13Et~xj
XW3Twc*vEYdyCBBS@c(KvPbL2V#KCyG

diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index 44a370be..731d3e56 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -4,6 +4,7 @@
 #include <vkcv/camera/CameraManager.hpp>
 #include <chrono>
 #include <vkcv/asset/asset_loader.hpp>
+#include <vkcv/shader/GLSLCompiler.hpp>
 
 int main(int argc, const char** argv) {
 	const char* applicationName = "First Mesh";
@@ -77,10 +78,19 @@ int main(int argc, const char** argv) {
 		return EXIT_FAILURE;
 	}
 
-	vkcv::ShaderProgram firstMeshProgram{};
-    firstMeshProgram.addShader(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/vert.spv"));
-    firstMeshProgram.addShader(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/frag.spv"));
+	vkcv::ShaderProgram firstMeshProgram;
+	vkcv::shader::GLSLCompiler compiler;
 	
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/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"),
+					 [&firstMeshProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
+		firstMeshProgram.addShader(shaderStage, path);
+	});
+ 
 	auto& attributes = mesh.vertexGroups[0].vertexBuffer.attributes;
 
 	
diff --git a/projects/first_scene/CMakeLists.txt b/projects/first_scene/CMakeLists.txt
index 467663dc..ba2f7b1a 100644
--- a/projects/first_scene/CMakeLists.txt
+++ b/projects/first_scene/CMakeLists.txt
@@ -22,7 +22,7 @@ if(MSVC)
 endif()
 
 # including headers of dependencies and the VkCV framework
-target_include_directories(first_scene SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include} ${vkcv_scene_include})
+target_include_directories(first_scene SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include} ${vkcv_scene_include} ${vkcv_shader_compiler_include})
 
 # linking with libraries from all dependencies and the VkCV framework
-target_link_libraries(first_scene vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera vkcv_scene)
+target_link_libraries(first_scene vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera vkcv_scene vkcv_shader_compiler)
diff --git a/projects/first_scene/resources/shaders/compile.bat b/projects/first_scene/resources/shaders/compile.bat
deleted file mode 100644
index b4521235..00000000
--- a/projects/first_scene/resources/shaders/compile.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-%VULKAN_SDK%\Bin32\glslc.exe shader.vert -o vert.spv
-%VULKAN_SDK%\Bin32\glslc.exe shader.frag -o frag.spv
-pause
\ No newline at end of file
diff --git a/projects/first_scene/resources/shaders/frag.spv b/projects/first_scene/resources/shaders/frag.spv
deleted file mode 100644
index 087e4e22fb2fcec27d99b3ff2aa1a705fe755796..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 920
zcmYk4UrQTN5XDF1rZHAitHzqN#Xs+%4{a%kf{N@*XrO7+$7P#b$jT<W>~2c?_54)6
z2tB_|LifTj_spC-b7ppHn-?$4Hmqs8_Rf}P-!>I7+p&7-{r<4u%Zo|x<EIZW_N-PC
z;k2w_Tk_Z}jOHY^Wo_A8*(-6$sflhiRW^In!!5D=esJ^cHppEXW?|uid>T$%79_tO
z+_=c$G~xJzf#1Im#%UVl#oyQkaWr?qB+A5!emi)L3NM<E<He*(@WiO<^UNzXCX3=O
ziIYr{6!Gk({LJOk@9s~r$ebc|={GBuco@#o*ojR&=1apo|1ny=WmfRlB%6h?nJ*4|
zcrW9CsefLg|M;we=~c~x$+KtP)028@OwV=w18tVwo|Rj+^4`|HuGp#USnv4;V7}g|
zaAS2Re!0SECVwLJO?mkAtDZHc#?C4Mml|N^<aDHBPaa;YjPUO)d0^(_bk*^-JT=gH
zC{JJJ;q8$;J&Dr;%r1z*e<Kf{Zw$XHPi{RIm|YS3tglC1xEyAEQpA(LQWOolGG+jy
ycVC9qkyz+Fkij7i2VKW9H2o9@Jts1F#0T0mS~@b~7zaIQxt0p{PX1ZZFS38`7*62;

diff --git a/projects/first_scene/resources/shaders/vert.spv b/projects/first_scene/resources/shaders/vert.spv
deleted file mode 100644
index 374c023e14b351eb43cbcda5951cbb8b3d6f96a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1520
zcmYk4*>2NN5Qa~)bP2SjlrBIC4q+>SiVHwU2vAw%UPQD|(Ob(T798X_mhD!+6|cZ6
z@l@O(@qb=|Pc)gCfBu;>Gd|5mf5DhJ(=p5Dfho?KX$UdqoSDzHJ3JolrP+Az(c_0O
zR!lP|!dVrI(~?Yl8(}X?E=z7oZb^0}14&cAhV*YGw#<@ohu;2&S6&*#e&T0=mwxfb
zLE=q6eGNug3a10dJv?-WZ@p0*dujGP47|`rfj72^SoSP{w^-xZXcV4~>x8x#_5RwL
zi>^P1-cgX81W6WrlPk2qv58Gno7rh3bRp+6Z;sn2JGMV`GdV?!xfFXH+W3u4Gd~&y
zvl!bVb{dAWSX;YbPn@=XYto}>L?)vvx0PeWCugx3O|y=p1E2lcXx3tmvG3SV(|6Nk
z;)ex~{oANQz*_nDfcNpF@cA}2!ZYSTjN*&({fkp!#hc)@{O2(@JZ7wT*kJ73RRkN}
zL2agX?iX{*G=2VbsKG8cdYI;dgc@Mfa8-lZyAlpQbJu-l#-~r>yuZ3XD1GX!t17yu
zJLnsGQ`Wq+BiT|uec&_ChW;0&9SLVp`b)C8Z%2Md8a`N87V}p%h#`)6=cTJ%Ju7|Q
z1Q_?M<h-IT_u#KeINS2s4Rz_Ot1NZ|M(vBz+z&==eBKWj@k^x*pBcBL>6yEUZ%fZf
zz{$sF?_l%-_o~F0pD*F}WRXih`2Eta^6~jjaH@KIr{a#5xg(pJ?4SI*(s04y<L{Oj
z@q4n#t>XB6SFk5~L)2j}9P0cL!kgRIKeKO0*a!Q3E+%`}lz`*Y_Z0~<zgG^u?Ub0*
z47*lh+*|Q@Yvj_ykv76ku1m;=Pn_NTQe9$>guCI;Ur+jmgttI{FEjzZBdL13Et~xj
XW3Twc*vEYdyCBBS@c(KvPbL2V#KCyG

diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp
index 486b2134..527eba8c 100644
--- a/projects/first_scene/src/main.cpp
+++ b/projects/first_scene/src/main.cpp
@@ -4,11 +4,9 @@
 #include <vkcv/camera/CameraManager.hpp>
 #include <chrono>
 #include <vkcv/asset/asset_loader.hpp>
-#include <vkcv/Logger.hpp>
+#include <vkcv/shader/GLSLCompiler.hpp>
 #include <vkcv/scene/Scene.hpp>
 
-
-
 int main(int argc, const char** argv) {
 	const char* applicationName = "First Scene";
 
@@ -64,9 +62,18 @@ int main(int argc, const char** argv) {
 		return EXIT_FAILURE;
 	}
 
-	vkcv::ShaderProgram sceneShaderProgram{};
-	sceneShaderProgram.addShader(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/shaders/vert.spv"));
-	sceneShaderProgram.addShader(vkcv::ShaderStage::FRAGMENT, std::filesystem::path("resources/shaders/frag.spv"));
+	vkcv::ShaderProgram sceneShaderProgram;
+	vkcv::shader::GLSLCompiler compiler;
+	
+	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("resources/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"),
+					 [&sceneShaderProgram](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) {
+		sceneShaderProgram.addShader(shaderStage, path);
+	});
 
 	const std::vector<vkcv::VertexAttachment> vertexAttachments = sceneShaderProgram.getVertexAttachments();
 	std::vector<vkcv::VertexBinding> bindings;
diff --git a/projects/first_triangle/shaders/comp.spv b/projects/first_triangle/shaders/comp.spv
deleted file mode 100644
index b414e36b2bea66dab00746298e536d029091e0fd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1520
zcmZvcdr#9)7{(799SCxhn-`oND1yMe0WmR}fSN+G1QI_$GrNLKYPZmi#IN9o;cvbf
z#Kgqs*Y(6^@htD&^FHS}@3n2UvNmSSh?y``X5S3foT&&gX42Gh?X|wPnrYT)?(V&U
zF>R_j5zdS_j`XPHM>|S5xFeYr4mKy@94=DTuOfXdV^mSSmhYXMc&#sf(ChhW_A?Is
zI7&jl6J3Ns7F~w$#!I{?3F3aIOmM^~$9Kdhhx6F?;_kP0e4Jc%gLW2mljG0A9sTZ0
zXJMKh_Rr433zJs?#sYsWO=V!@4fdvlQ3KdpX-73ZlxE?3TRP|_Y1U4%RQsA4%Q4P-
z{q*~%;tZR+O*UGdsvz%4$x2}_O4lUR$NAEby<D=7<jvNwCY)t4Y5?0PVblP2D)E#D
zcbP14sApBevUX!&=02&BW#e!k44?4#q^aY9WL_wELmd3GUlfPBTnTGgwjRVBgX78`
zmnLuU_k~S=z_yC}6WX)j6OS|e+Vg4c;VdZXjP#N+SdexlE4o8}vEgCU-?B}Atz9qr
z%N=-}5tkaNiT;r%HvO}8KGNQmkQ;enGhY_>SEb<+$DTjc-txhpON{w-XwNrgai?DN
z9S**Br0Ef}AQx<&FEGwu7JD0uUJah%e?8k3M(k~MlHM~*IN->>`ao=+Nfz_E6~cRd
zpnv9YS3*pB|3OUROi946#9<b*1xD|0<mH|;>$muv@$CS^H~T-zianT(^H}@gICWv*
zmh<F499I~4PqFAlL*hyflqvJzxn_pU34b4z9~eCA_nG#?vDbxxTR*&S_+g%$;RlR)
sT0bweANI2)3>*$K<HO4w$%lTDGv6q18;kD~u{I^#Cl(kydiPH97rzi=%K!iX

diff --git a/projects/first_triangle/shaders/compile.bat b/projects/first_triangle/shaders/compile.bat
deleted file mode 100644
index 17743a7c..00000000
--- a/projects/first_triangle/shaders/compile.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-%VULKAN_SDK%\Bin32\glslc.exe shader.vert -o vert.spv
-%VULKAN_SDK%\Bin32\glslc.exe shader.frag -o frag.spv
-%VULKAN_SDK%\Bin32\glslc.exe shader.comp -o comp.spv
-pause
\ No newline at end of file
diff --git a/projects/first_triangle/shaders/frag.spv b/projects/first_triangle/shaders/frag.spv
deleted file mode 100644
index cb13e606fc0041e24ff6a63c0ec7dcca466732aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 608
zcmYk2-Acni5QWF4X=`f#Ea;t7ycCKTDuPr|k=z98&jTzmSv3-qkfefleKw!U8^Lqd
zM6xiMowMKWoQc&s=!$HJBLkVr-<n7Zib!8NCcECFH!sR?etdF7VknjY$&92cZDhu~
zA0<54L~J3(;HaYkb{1Y0`NE|(2-j0r57(;DnV<WmR>i9y>RhEyZ#pOoG7cGcxpci-
z6=azz%FkG<I7+k%qa0N9p~>|cT$BXyDr^Eah^9ANY~wFol{aae=CB0CHh!OT|D_gP
z+~OR21h80hrn;VD8qTwCCKI#Y!M+1+hS&wqxmmOS4Bs9y{~Y!6s%8&r<Q-)4tjYJ0
z@w<#po;5vCJ48)(h!9y{o?-_2VJ|Me@eRdBUO?sB0|f8iL*?C3r6K)m<4R+XnwwM_
b-@k)<`rk(IK6#$g#|64_9-jTc<r(4^BDy=E

diff --git a/projects/first_triangle/shaders/shader.comp b/projects/first_triangle/shaders/shader.comp
deleted file mode 100644
index fad6cd08..00000000
--- a/projects/first_triangle/shaders/shader.comp
+++ /dev/null
@@ -1,25 +0,0 @@
-#version 440
-
-layout(std430, binding = 0) buffer testBuffer
-{ 
-    float test1[10];
-    float test2[10];
-    float test3[10];
-};
-
-layout( push_constant ) uniform constants{
-    float pushConstant;
-};
-
-layout(local_size_x = 5) in;
-
-void main(){
-
-    if(gl_GlobalInvocationID.x >= 10){
-        return;
-    }
-
-    test1[gl_GlobalInvocationID.x] = gl_GlobalInvocationID.x;
-    test2[gl_GlobalInvocationID.x] = 69;  // nice!
-    test3[gl_GlobalInvocationID.x] = pushConstant;    
-}
\ No newline at end of file
diff --git a/projects/first_triangle/shaders/vert.spv b/projects/first_triangle/shaders/vert.spv
deleted file mode 100644
index 03af5758ffff1b5b6505fe98b02044849026832d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1772
zcmYk6ZBNut5QQ)7F0TS2@}eSiT?J(k-vCimf@l_#O+ZQf+N`@3Yf5+17NUOQFZhc{
z{8fH2@jPuW={3XLbLPx+=HBa;`fG#6^qCPeW?q?WO`3i&#*CVQ)Hj+(&9yk`tgUZ6
zMlo(msSwSC8A|tM{XJ><A;6K<Wm~e6{`JfMk+^JzO{3}VetPT1Uau9k63>mlwK`tp
zcE5c0+DVLN1Wn`MpwWEqwtGD{PJRZS8~CB;cKk>x|I9--RM7chJ2>qW1r;fZJylG_
zTu~prZtN$1H`J%Zl+Cn!yBl;P5f#n5AbcFShhFsAixTgLpxBIOPb@DXb}-d*4k_=4
z$&vp{-I0^Um|d~G!0)~D<D?a~y~`M<NbEESE@Ks)mm{7<&v)h9YFC*Yk8;Z?NBrch
zCq>CD0kr6!b63r*`43@-38=$ee2rSid(5i+zBp!Ojb`qWV;(rX)iDPgJzI`F9Ov9n
zgnH=q3q4j+oXw%FsqsgP8qCJh12k7<)PSQ#LpAF1)L+RlGuWP|q(WC!4t=nn(QZKA
zk<BWfx?tkd!n{;R#;WIdSbO60!XxtJz&XNv8w`)0T4OS;3ya4yykqf1iq9`rrM7dC
zgN~TxCv(p7HvgJ<meoyZ4@V7~Pe0dXoEde{*!&sojXB@3`LjZB)W9r1mtz~V{EdQ^
z7(Cy*DWev7XgJ?n@|+3x&-Xdsc^U79^Smuj9Bx57?#|{A!#L+fdG3Jtc8;B#<KC*;
zgQ?4Rz;|S<IpLZ-b?IY4m3TvN)V?RreZo;2yp(gqm-D^VuL$!UzJVUhJA_03P@a3m
zz#H=P&iBF3b4;9kFz*)4rrtd7ls;K-f5q^B1TF84-zb|4=JyHwMrvZ*J9~KUWLMeC
z^7m!T#ksszE#`S3g9lgTS7ppX4s)!@s0ojT?>v&hf0Ty1;|Cv(Ww|HX!}S%or#Z)b
zhpNPRJd=@+o;dI6x9SpGm(d>@`r#ZmWsZy)m=TQ5_WwfrV*f9NIR|*#|F-t<<a6%e
Jf9iBg_8)N7hMWKZ

diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index a69f9bc7..253efad4 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -2,10 +2,8 @@
 #include <vkcv/Core.hpp>
 #include <GLFW/glfw3.h>
 #include <vkcv/camera/CameraManager.hpp>
-#include <chrono>
-
 #include <vkcv/shader/GLSLCompiler.hpp>
-#include <vkcv/gui/GUI.hpp>
+#include <chrono>
 
 int main(int argc, const char** argv) {
 	const char* applicationName = "First Triangle";
@@ -49,7 +47,7 @@ int main(int argc, const char** argv) {
 		return EXIT_FAILURE;
 	}
 
-	vkcv::ShaderProgram triangleShaderProgram{};
+	vkcv::ShaderProgram triangleShaderProgram;
 	vkcv::shader::GLSLCompiler compiler;
 	
 	compiler.compile(vkcv::ShaderStage::VERTEX, std::filesystem::path("shaders/shader.vert"),
-- 
GitLab