diff options
author | Thomas Dinges <blender@dingto.org> | 2014-03-21 20:22:41 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2014-03-21 20:22:41 +0400 |
commit | ce5395868fde010e39d0e2db2e48aa4d84d9a40a (patch) | |
tree | 0186041af1f45e8cc84a440c64efcecdeb2827b9 | |
parent | 12ce5ae5be97fbe73fcf6b0d49ae7f7765124be9 (diff) |
Cycles Standalone: Support for relative paths and string OSL parameters.
Patch by John Haddon.
Differential Revision: https://developer.blender.org/D418
-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); |