Skip to content

Commit

Permalink
Merge pull request #80705 from bitsawer/add_shader_load_error_checks
Browse files Browse the repository at this point in the history
Fix Shader and ShaderInclude resource loading
  • Loading branch information
akien-mga committed Aug 28, 2023
2 parents a7ded90 + 26e3443 commit 1c9e45f
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
13 changes: 8 additions & 5 deletions scene/resources/shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,13 +234,16 @@ Ref<Resource> ResourceFormatLoaderShader::load(const String &p_path, const Strin
*r_error = ERR_FILE_CANT_OPEN;
}

Ref<Shader> shader;
shader.instantiate();

Vector<uint8_t> buffer = FileAccess::get_file_as_bytes(p_path);
Error error = OK;
Vector<uint8_t> buffer = FileAccess::get_file_as_bytes(p_path, &error);
ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot load shader: " + p_path);

String str;
str.parse_utf8((const char *)buffer.ptr(), buffer.size());
error = str.parse_utf8((const char *)buffer.ptr(), buffer.size());
ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader: " + p_path);

Ref<Shader> shader;
shader.instantiate();

shader->set_include_path(p_path);
shader->set_code(str);
Expand Down
13 changes: 8 additions & 5 deletions scene/resources/shader_include.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,16 @@ Ref<Resource> ResourceFormatLoaderShaderInclude::load(const String &p_path, cons
*r_error = ERR_FILE_CANT_OPEN;
}

Ref<ShaderInclude> shader_inc;
shader_inc.instantiate();

Vector<uint8_t> buffer = FileAccess::get_file_as_bytes(p_path);
Error error = OK;
Vector<uint8_t> buffer = FileAccess::get_file_as_bytes(p_path, &error);
ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot load shader include: " + p_path);

String str;
str.parse_utf8((const char *)buffer.ptr(), buffer.size());
error = str.parse_utf8((const char *)buffer.ptr(), buffer.size());
ERR_FAIL_COND_V_MSG(error, nullptr, "Cannot parse shader include: " + p_path);

Ref<ShaderInclude> shader_inc;
shader_inc.instantiate();

shader_inc->set_include_path(p_path);
shader_inc->set_code(str);
Expand Down

0 comments on commit 1c9e45f

Please sign in to comment.