diff --git a/libs/ImFileDialog/ImFileDialog.cpp b/libs/ImFileDialog/ImFileDialog.cpp index 83d24692..53cdb7cb 100644 --- a/libs/ImFileDialog/ImFileDialog.cpp +++ b/libs/ImFileDialog/ImFileDialog.cpp @@ -150,7 +150,11 @@ namespace ifd { ImGui::SameLine(); } if (ImGui::Button(btnList[i].c_str(), ImVec2(0, GUI_ELEMENT_SIZE))) { +#ifdef _WIN32 std::string newPath = ""; +#else + std::string newPath = "/"; +#endif for (int j = 0; j <= i; j++) { newPath += btnList[j]; #ifdef _WIN32 diff --git a/src/SHADERed/Objects/RenderEngine.cpp b/src/SHADERed/Objects/RenderEngine.cpp index 9b5d843a..5fc80814 100644 --- a/src/SHADERed/Objects/RenderEngine.cpp +++ b/src/SHADERed/Objects/RenderEngine.cpp @@ -1349,7 +1349,7 @@ namespace ed { PipelineItem* item = m_items[i]; if (item->Type == PipelineItem::ItemType::ShaderPass) { pipe::ShaderPass* shader = (pipe::ShaderPass*)item->Data; - if (strcmp(shader->VSPath, fname) == 0 || strcmp(shader->PSPath, fname) == 0 || strcmp(shader->GSPath, fname) == 0) { + if (strcmp(shader->VSPath, fname) == 0 || strcmp(shader->TESPath, fname) == 0 || strcmp(shader->TCSPath, fname) == 0 || strcmp(shader->PSPath, fname) == 0 || strcmp(shader->GSPath, fname) == 0) { Recompile(item->Name); } } else if (item->Type == PipelineItem::ItemType::ComputePass && m_computeSupported) { diff --git a/src/SHADERed/Objects/ShaderCompiler.cpp b/src/SHADERed/Objects/ShaderCompiler.cpp index f5bc696b..cc9b6483 100644 --- a/src/SHADERed/Objects/ShaderCompiler.cpp +++ b/src/SHADERed/Objects/ShaderCompiler.cpp @@ -393,6 +393,8 @@ namespace ed { // set macros std::string preambleStr = (inLang == ShaderLanguage::HLSL) ? "#extension GL_GOOGLE_include_directive : enable\n" : ""; + if (inLang == ShaderLanguage::HLSL && (sType == ShaderStage::TessellationControl || sType == ShaderStage::TessellationEvaluation)) + preambleStr += "#extension GL_EXT_debug_printf : enable\n"; #ifdef SHADERED_WEB preambleStr += "#define SHADERED_WEB\n"; @@ -462,10 +464,20 @@ namespace ed { // link glslang::TProgram prog; prog.addShader(&shader); - + if (!prog.link(messages)) { - if (msgs != nullptr) + if (msgs != nullptr) { msgs->Add(MessageStack::Type::Error, msgs->CurrentItem, "Shader linking failed", -1, sType); + + const char* infoLog = prog.getInfoLog(); + if (infoLog != nullptr) { + std::string info(infoLog); + size_t errorLoc = info.find("ERROR:"); + size_t errorEnd = info.find("\n", errorLoc+1); + if (errorLoc != std::string::npos && errorEnd != std::string::npos) + msgs->Add(MessageStack::Type::Error, msgs->CurrentItem, info.substr(errorLoc+7, errorEnd-errorLoc-7), -1, sType); + } + } return false; }