mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 04:51:18 +00:00
Fix shaderc linking and crlf shader errors in linux
This commit is contained in:
parent
d71254985b
commit
ecab0acbf4
4
.gitignore
vendored
4
.gitignore
vendored
@ -8,3 +8,7 @@ Release/
|
|||||||
MinSizeRel/
|
MinSizeRel/
|
||||||
CMakeSettings.json
|
CMakeSettings.json
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
runme
|
||||||
|
res
|
||||||
|
|
||||||
|
*.log
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
include(FindVulkan)
|
||||||
|
find_package(Vulkan COMPONENTS shaderc_combined)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::shaderc_combined)
|
target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::shaderc_combined)
|
||||||
|
else()
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE shaderc_shared)
|
||||||
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,3 +36,4 @@ 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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user