Explorar el Código

Fix Shader and ShaderInclude resource loading

bitsawer hace 2 años
padre
commit
26e3443eef
Se han modificado 2 ficheros con 16 adiciones y 10 borrados
  1. 8 5
      scene/resources/shader.cpp
  2. 8 5
      scene/resources/shader_include.cpp

+ 8 - 5
scene/resources/shader.cpp

@@ -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);

+ 8 - 5
scene/resources/shader_include.cpp

@@ -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);