mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-07-14 05:12:25 +08:00
Workaround errors when loading wallpapers made recently (#244)
* Add sampler2DComparison and uint to known types * Ignore unsupported `#require` preprocessor directive `#require LightingV1` is found in generic4.frag, genericimage4.frag, ... * Mark _alias_* textures as FBOs Currently not supported, but prevents loading from the file, thereby avoiding CAssetLoadException
This commit is contained in:
parent
d4687f09ec
commit
5a45c9a26b
@ -451,7 +451,7 @@ void CPass::setupUniforms () {
|
||||
// resolve the texture first
|
||||
const ITexture* textureRef;
|
||||
|
||||
if (textureName.find ("_rt_") == 0) {
|
||||
if (textureName.find ("_rt_") == 0 || textureName.find ("_alias_") == 0) {
|
||||
textureRef = this->getMaterial ()->getEffect ()->findFBO (textureName);
|
||||
|
||||
if (textureRef == nullptr)
|
||||
|
@ -265,6 +265,15 @@ void Compiler::precompile () {
|
||||
this->m_includesContent += this->lookupShaderFile (filename);
|
||||
this->m_includesContent += "\r\n// end of included from file " + filename + "\r\n";
|
||||
}
|
||||
} else if (this->peekString ("#require ", it)) {
|
||||
// TODO: PROPERLY IMPLEMENT #require
|
||||
this->m_compiledContent += "// #require ";
|
||||
// ignore whitespaces
|
||||
this->ignoreSpaces (it);
|
||||
BREAK_IF_ERROR
|
||||
std::string name = this->extractName (it);
|
||||
BREAK_IF_ERROR
|
||||
this->m_compiledContent += name;
|
||||
} else {
|
||||
this->m_compiledContent += '#';
|
||||
++it;
|
||||
@ -694,7 +703,7 @@ void Compiler::parseParameterConfiguration (const std::string& type, const std::
|
||||
value = *constant->second->as<CShaderConstantInteger> ()->getValue ();
|
||||
|
||||
parameter = new Variables::CShaderVariableInteger (value);
|
||||
} else if (type == "sampler2D") {
|
||||
} else if (type == "sampler2D" || type == "sampler2DComparison") {
|
||||
// samplers can have special requirements, check what sampler we're working with and create definitions
|
||||
// if needed
|
||||
const auto textureName = data.find ("default");
|
||||
@ -755,7 +764,8 @@ const std::map<int, std::string>& Compiler::getTextures () const {
|
||||
return this->m_textures;
|
||||
}
|
||||
|
||||
std::vector<std::string> Compiler::sTypes = {
|
||||
"vec4", "uvec4", "ivec4", "dvec4", "bvec4", "vec3", "uvec3", "ivec3", "dvec3", "bvec3", "vec2",
|
||||
"uvec2", "ivec2", "dvec2", "bvec2", "float", "sampler2D", "mat4x3", "mat4", "mat3", "uint4", "void"};
|
||||
std::vector<std::string> Compiler::sTypes = {"vec4", "uvec4", "ivec4", "dvec4", "bvec4", "vec3",
|
||||
"uvec3", "ivec3", "dvec3", "bvec3", "vec2", "uvec2",
|
||||
"ivec2", "dvec2", "bvec2", "float", "sampler2D", "sampler2DComparison",
|
||||
"mat4x3", "mat4", "mat3", "uint", "uint4", "void"};
|
||||
} // namespace WallpaperEngine::Render::Shaders
|
||||
|
Loading…
Reference in New Issue
Block a user