diff options
-rw-r--r-- | intern/cycles/app/cycles_xml.cpp | 7 | ||||
-rw-r--r-- | intern/cycles/util/util_path.cpp | 5 | ||||
-rw-r--r-- | intern/cycles/util/util_path.h | 1 |
3 files changed, 12 insertions, 1 deletions
diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp index 998531a577b..8db96074dc7 100644 --- a/intern/cycles/app/cycles_xml.cpp +++ b/intern/cycles/app/cycles_xml.cpp @@ -406,7 +406,9 @@ static void xml_read_shader_graph(const XMLReadState& state, Shader *shader, pug /* Source */ xml_read_string(&osl->filepath, node, "src"); - osl->filepath = path_join(state.base, osl->filepath); + if(path_is_relative(osl->filepath)) { + osl->filepath = path_join(state.base, osl->filepath); + } /* Generate inputs/outputs from node sockets * @@ -763,6 +765,9 @@ static void xml_read_shader_graph(const XMLReadState& state, Shader *shader, pug case SHADER_SOCKET_NORMAL: xml_read_float3(&in->value, node, attr.name()); break; + case SHADER_SOCKET_STRING: + xml_read_ustring( &in->value_string, node, attr.name() ); + break; default: break; } diff --git a/intern/cycles/util/util_path.cpp b/intern/cycles/util/util_path.cpp index 4fd5df4316d..85d19b6a325 100644 --- a/intern/cycles/util/util_path.cpp +++ b/intern/cycles/util/util_path.cpp @@ -111,6 +111,11 @@ string path_escape(const string& path) return result; } +bool path_is_relative(const string& path) +{ + return to_boost(path).is_relative(); +} + bool path_exists(const string& path) { return boost::filesystem::exists(to_boost(path)); diff --git a/intern/cycles/util/util_path.h b/intern/cycles/util/util_path.h index e9041e63dae..fd9ea11740d 100644 --- a/intern/cycles/util/util_path.h +++ b/intern/cycles/util/util_path.h @@ -41,6 +41,7 @@ string path_filename(const string& path); string path_dirname(const string& path); string path_join(const string& dir, const string& file); string path_escape(const string& path); +bool path_is_relative(const string& path); /* file info */ bool path_exists(const string& path); |