Skip to content

Commit

Permalink
Merge pull request #79287 from bitsawer/fix_shader_type_detection
Browse files Browse the repository at this point in the history
Fix shader type detection
  • Loading branch information
YuriSizov committed Jul 14, 2023
2 parents de14f09 + 905c10b commit ead69eb
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions scene/resources/shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,6 @@ void Shader::set_code(const String &p_code) {
E->disconnect(SNAME("changed"), callable_mp(this, &Shader::_dependency_changed));
}

String type = ShaderLanguage::get_shader_type(p_code);

if (type == "canvas_item") {
mode = MODE_CANVAS_ITEM;
} else if (type == "particles") {
mode = MODE_PARTICLES;
} else if (type == "sky") {
mode = MODE_SKY;
} else if (type == "fog") {
mode = MODE_FOG;
} else {
mode = MODE_SPATIAL;
}

code = p_code;
String pp_code = p_code;

Expand All @@ -100,6 +86,21 @@ void Shader::set_code(const String &p_code) {
}
}

// Try to get the shader type from the final, fully preprocessed shader code.
String type = ShaderLanguage::get_shader_type(pp_code);

if (type == "canvas_item") {
mode = MODE_CANVAS_ITEM;
} else if (type == "particles") {
mode = MODE_PARTICLES;
} else if (type == "sky") {
mode = MODE_SKY;
} else if (type == "fog") {
mode = MODE_FOG;
} else {
mode = MODE_SPATIAL;
}

for (const Ref<ShaderInclude> &E : include_dependencies) {
E->connect(SNAME("changed"), callable_mp(this, &Shader::_dependency_changed));
}
Expand Down

0 comments on commit ead69eb

Please sign in to comment.