Cycles Standalone: Support for relative paths and string OSL parameters.

Patch by John Haddon.
Differential Revision: https://developer.blender.org/D418
This commit is contained in:
Thomas Dinges 2014-03-21 17:22:41 +01:00
parent 12ce5ae5be
commit ce5395868f
3 changed files with 12 additions and 1 deletions

@ -406,7 +406,9 @@ static void xml_read_shader_graph(const XMLReadState& state, Shader *shader, pug
/* Source */ /* Source */
xml_read_string(&osl->filepath, node, "src"); 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 /* 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: case SHADER_SOCKET_NORMAL:
xml_read_float3(&in->value, node, attr.name()); xml_read_float3(&in->value, node, attr.name());
break; break;
case SHADER_SOCKET_STRING:
xml_read_ustring( &in->value_string, node, attr.name() );
break;
default: default:
break; break;
} }

@ -111,6 +111,11 @@ string path_escape(const string& path)
return result; return result;
} }
bool path_is_relative(const string& path)
{
return to_boost(path).is_relative();
}
bool path_exists(const string& path) bool path_exists(const string& path)
{ {
return boost::filesystem::exists(to_boost(path)); return boost::filesystem::exists(to_boost(path));

@ -41,6 +41,7 @@ string path_filename(const string& path);
string path_dirname(const string& path); string path_dirname(const string& path);
string path_join(const string& dir, const string& file); string path_join(const string& dir, const string& file);
string path_escape(const string& path); string path_escape(const string& path);
bool path_is_relative(const string& path);
/* file info */ /* file info */
bool path_exists(const string& path); bool path_exists(const string& path);