diff --git a/.gitignore b/.gitignore index 3ef0a7d..45c8290 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ Release/ MinSizeRel/ CMakeSettings.json compile_commands.json +runme +res + +*.log diff --git a/CMakeLists.txt b/CMakeLists.txt index 49b84ed..08923e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,10 +146,6 @@ if(ENGINE_BUILD_OPENGL) endif() if(ENGINE_BUILD_VULKAN) - - include(FindVulkan) - find_package(Vulkan COMPONENTS shaderc_combined) - # Volk set(VOLK_STATIC_DEFINES "") set(VOLK_PULL_IN_VULKAN ON) @@ -163,7 +159,13 @@ if(ENGINE_BUILD_VULKAN) # shaderc - target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::shaderc_combined) + if (MSVC) + include(FindVulkan) + find_package(Vulkan COMPONENTS shaderc_combined) + target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::shaderc_combined) + else() + target_link_libraries(${PROJECT_NAME} PRIVATE shaderc_shared) + endif() endif() @@ -207,4 +209,4 @@ target_link_libraries(${PROJECT_NAME} PRIVATE freetype) target_include_directories(${PROJECT_NAME} PRIVATE dependencies/freetype/include) # stb -target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb) \ No newline at end of file +target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb) diff --git a/src/gfx_device_vulkan.cpp b/src/gfx_device_vulkan.cpp index 54c6e8e..18fd570 100644 --- a/src/gfx_device_vulkan.cpp +++ b/src/gfx_device_vulkan.cpp @@ -166,7 +166,7 @@ namespace engine { options.SetSourceLanguage(shaderc_source_language_glsl); options.SetTargetEnvironment(shaderc_target_env_vulkan, shaderc_env_version_vulkan_1_3); - options.SetOptimizationLevel(shaderc_optimization_level_size); + options.SetOptimizationLevel(shaderc_optimization_level_zero); options.SetTargetSpirv(shaderc_spirv_version_1_6); options.SetAutoBindUniforms(false); @@ -175,27 +175,26 @@ namespace engine { if (preprocessed.GetCompilationStatus() != shaderc_compilation_status_success) { - throw std::runtime_error(preprocessed.GetErrorMessage()); + throw std::runtime_error("PREPROCESS ERR " + preprocessed.GetErrorMessage()); } - - - std::string shaderStr = { preprocessed.cbegin(), preprocessed.cend() }; + std::string shaderStr{preprocessed.cbegin(), preprocessed.cend()}; // compile - shaderc::SpvCompilationResult module = compiler.CompileGlslToSpv(shaderStr.data(), kind, filename, options); + shaderc::SpvCompilationResult compiledShader = compiler.CompileGlslToSpv(shaderStr.c_str(), kind, filename, options); - if (module.GetCompilationStatus() != shaderc_compilation_status_success) + + if (compiledShader.GetCompilationStatus() != shaderc_compilation_status_success) { - throw std::runtime_error(module.GetErrorMessage()); + throw std::runtime_error("COMPILE ERR " + compiledShader.GetErrorMessage()); } - std::vector shaderBytecode = { module.cbegin(), module.cend() };// not sure why sample code copy vector like this + std::vector shaderBytecode = { compiledShader.cbegin(), compiledShader.cend() };// not sure why sample code copy vector like this VkShaderModuleCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; createInfo.codeSize = shaderBytecode.size() * sizeof(uint32_t); - createInfo.pCode = module.cbegin(); + createInfo.pCode = compiledShader.cbegin(); VkShaderModule shaderModule; if (vkCreateShaderModule(device, &createInfo, nullptr, &shaderModule) != VK_SUCCESS) { @@ -216,6 +215,7 @@ namespace engine { file.seekg(0); file.read(buffer.data(), buffer.size()); file.close(); + return buffer; } diff --git a/test/res/shader.frag b/test/res/shader.frag index 12bab86..0da7da9 100644 --- a/test/res/shader.frag +++ b/test/res/shader.frag @@ -35,4 +35,5 @@ void main() { vec3 lighting = min(diffuse + ambient + specular, 1.0); outColor = min( ( vec4(baseColor, 1.0) ) * vec4(lighting + emission, 1.0), vec4(1.0)); -} \ No newline at end of file +} +