Fix shaderc linking and crlf shader errors in linux

This commit is contained in:
Bailey Harrison 2022-11-14 23:11:49 +00:00
parent d71254985b
commit ecab0acbf4
4 changed files with 24 additions and 17 deletions

4
.gitignore vendored
View File

@ -8,3 +8,7 @@ Release/
MinSizeRel/ MinSizeRel/
CMakeSettings.json CMakeSettings.json
compile_commands.json compile_commands.json
runme
res
*.log

View File

@ -146,10 +146,6 @@ if(ENGINE_BUILD_OPENGL)
endif() endif()
if(ENGINE_BUILD_VULKAN) if(ENGINE_BUILD_VULKAN)
include(FindVulkan)
find_package(Vulkan COMPONENTS shaderc_combined)
# Volk # Volk
set(VOLK_STATIC_DEFINES "") set(VOLK_STATIC_DEFINES "")
set(VOLK_PULL_IN_VULKAN ON) set(VOLK_PULL_IN_VULKAN ON)
@ -163,7 +159,13 @@ if(ENGINE_BUILD_VULKAN)
# shaderc # 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() endif()
@ -207,4 +209,4 @@ target_link_libraries(${PROJECT_NAME} PRIVATE freetype)
target_include_directories(${PROJECT_NAME} PRIVATE dependencies/freetype/include) target_include_directories(${PROJECT_NAME} PRIVATE dependencies/freetype/include)
# stb # stb
target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb) target_include_directories(${PROJECT_NAME} PRIVATE dependencies/stb)

View File

@ -166,7 +166,7 @@ namespace engine {
options.SetSourceLanguage(shaderc_source_language_glsl); options.SetSourceLanguage(shaderc_source_language_glsl);
options.SetTargetEnvironment(shaderc_target_env_vulkan, shaderc_env_version_vulkan_1_3); 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.SetTargetSpirv(shaderc_spirv_version_1_6);
options.SetAutoBindUniforms(false); options.SetAutoBindUniforms(false);
@ -175,27 +175,26 @@ namespace engine {
if (preprocessed.GetCompilationStatus() != shaderc_compilation_status_success) 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 // 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<uint32_t> shaderBytecode = { module.cbegin(), module.cend() };// not sure why sample code copy vector like this std::vector<uint32_t> shaderBytecode = { compiledShader.cbegin(), compiledShader.cend() };// not sure why sample code copy vector like this
VkShaderModuleCreateInfo createInfo{}; VkShaderModuleCreateInfo createInfo{};
createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
createInfo.codeSize = shaderBytecode.size() * sizeof(uint32_t); createInfo.codeSize = shaderBytecode.size() * sizeof(uint32_t);
createInfo.pCode = module.cbegin(); createInfo.pCode = compiledShader.cbegin();
VkShaderModule shaderModule; VkShaderModule shaderModule;
if (vkCreateShaderModule(device, &createInfo, nullptr, &shaderModule) != VK_SUCCESS) { if (vkCreateShaderModule(device, &createInfo, nullptr, &shaderModule) != VK_SUCCESS) {
@ -216,6 +215,7 @@ namespace engine {
file.seekg(0); file.seekg(0);
file.read(buffer.data(), buffer.size()); file.read(buffer.data(), buffer.size());
file.close(); file.close();
return buffer; return buffer;
} }

View File

@ -35,4 +35,5 @@ void main() {
vec3 lighting = min(diffuse + ambient + specular, 1.0); vec3 lighting = min(diffuse + ambient + specular, 1.0);
outColor = min( ( vec4(baseColor, 1.0) ) * vec4(lighting + emission, 1.0), vec4(1.0)); outColor = min( ( vec4(baseColor, 1.0) ) * vec4(lighting + emission, 1.0), vec4(1.0));
} }