diff --git a/projects/first_mesh/CMakeLists.txt b/projects/first_mesh/CMakeLists.txt index eb0f028db38707272f9fbcf61662633f2868eedc..6455e75d88eee276fb89b9f7a1b3462fcbc54da2 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 b4521235c40fe5fb163bab874560c2f219b7517f..0000000000000000000000000000000000000000 --- 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 Binary files a/projects/first_mesh/resources/shaders/frag.spv and /dev/null differ 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 Binary files a/projects/first_mesh/resources/shaders/vert.spv and /dev/null differ diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp index 44a370be228be32f2e9d95685bb5297401605945..731d3e56975ff0cd2d8e6d503a19d56de1b922fe 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 467663dcb916da78d0625a33c6c88a1af3403af7..ba2f7b1a7ae4845a12b9701269361a0a3f8affb7 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 b4521235c40fe5fb163bab874560c2f219b7517f..0000000000000000000000000000000000000000 --- 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 Binary files a/projects/first_scene/resources/shaders/frag.spv and /dev/null differ 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 Binary files a/projects/first_scene/resources/shaders/vert.spv and /dev/null differ diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp index 486b21343926e1b922b73ba8ffb29428de6ea9a7..527eba8c3a1e020e14d92f5d305e2ddced936333 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 Binary files a/projects/first_triangle/shaders/comp.spv and /dev/null differ diff --git a/projects/first_triangle/shaders/compile.bat b/projects/first_triangle/shaders/compile.bat deleted file mode 100644 index 17743a7c49cdfc6e091c43a42a0adb755a731682..0000000000000000000000000000000000000000 --- 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 Binary files a/projects/first_triangle/shaders/frag.spv and /dev/null differ diff --git a/projects/first_triangle/shaders/shader.comp b/projects/first_triangle/shaders/shader.comp deleted file mode 100644 index fad6cd0815f2f09bf92dcc3171e2e3723f5466df..0000000000000000000000000000000000000000 --- 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 Binary files a/projects/first_triangle/shaders/vert.spv and /dev/null differ diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index a69f9bc755f9cfa3a75d0a51dd242876aedabf79..253efad491e6e320ba5e5e8b270b187e2e79da82 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"),