[Bf-blender-cvs] [d6ecf8e] openvdb: Merge branch 'master' into openvdb
Lukas Tönne
noreply at git.blender.org
Mon Oct 31 13:39:09 CET 2016
Commit: d6ecf8efcd2453b55a1961713c67f10565d56ad5
Author: Lukas Tönne
Date: Mon Oct 31 13:38:28 2016 +0100
Branches: openvdb
https://developer.blender.org/rBd6ecf8efcd2453b55a1961713c67f10565d56ad5
Merge branch 'master' into openvdb
===================================================================
===================================================================
diff --cc intern/cycles/CMakeLists.txt
index 0e04ca6,97854a8..cf0248b
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@@ -146,15 -146,14 +146,23 @@@ if(WITH_CYCLES_OSL
)
endif()
+ if(WITH_CYCLES_OPENSUBDIV)
+ add_definitions(-DWITH_OPENSUBDIV)
+ include_directories(
+ SYSTEM
+ ${OPENSUBDIV_INCLUDE_DIR}
+ )
+ endif()
+
+if(WITH_OPENVDB)
+ add_definitions(-DWITH_OPENVDB)
+ add_definitions(-DDWREAL_IS_DOUBLE=0)
+ add_definitions(-DTBB_USE_EXCEPTIONS=0)
+ include_directories(
+ ${OPENVDB_INCLUDE_DIRS}
+ )
+endif()
+
set(WITH_CYCLES_DEVICE_OPENCL TRUE)
set(WITH_CYCLES_DEVICE_CUDA TRUE)
set(WITH_CYCLES_DEVICE_MULTI TRUE)
diff --cc intern/cycles/app/cycles_xml.cpp
index 878d7c2,8a3eb98..e2197a3
--- a/intern/cycles/app/cycles_xml.cpp
+++ b/intern/cycles/app/cycles_xml.cpp
@@@ -385,369 -221,20 +221,27 @@@ static string xml_socket_name(const cha
return sname;
}
- static void xml_read_shader_graph(const XMLReadState& state, Shader *shader, pugi::xml_node graph_node)
+ static void xml_read_shader_graph(XMLReadState& state, Shader *shader, pugi::xml_node graph_node)
{
- ShaderGraph *graph = new ShaderGraph();
+ xml_read_node(state, shader, graph_node);
- map<string, ShaderNode*> nodemap;
+ ShaderGraph *graph = new ShaderGraph();
- nodemap["output"] = graph->output();
+ /* local state, shader nodes can't link to nodes outside the shader graph */
+ XMLReader graph_reader;
+ graph_reader.node_map[ustring("output")] = graph->output();
for(pugi::xml_node node = graph_node.first_child(); node; node = node.next_sibling()) {
- ShaderNode *snode = NULL;
-
- /* ToDo: Add missing nodes
- * RGBCurvesNode, VectorCurvesNode, RGBRampNode and ConvertNode (RGB -> BW).
- */
-
- if(string_iequals(node.name(), "image_texture")) {
- ImageTextureNode *img = new ImageTextureNode();
-
- xml_read_string(&img->filename, node, "src");
- img->filename = path_join(state.base, img->filename);
-
- xml_read_enum(&img->color_space, ImageTextureNode::color_space_enum, node, "color_space");
- xml_read_enum(&img->projection, ImageTextureNode::projection_enum, node, "projection");
- xml_read_float(&img->projection_blend, node, "projection_blend");
-
- /* ToDo: Interpolation */
-
- snode = img;
- }
- else if(string_iequals(node.name(), "environment_texture")) {
- EnvironmentTextureNode *env = new EnvironmentTextureNode();
-
- xml_read_string(&env->filename, node, "src");
- env->filename = path_join(state.base, env->filename);
-
- xml_read_enum(&env->color_space, EnvironmentTextureNode::color_space_enum, node, "color_space");
- xml_read_enum(&env->projection, EnvironmentTextureNode::projection_enum, node, "projection");
+ ustring node_name(node.name());
- snode = env;
- }
- else if(string_iequals(node.name(), "osl_shader")) {
- OSLScriptNode *osl = new OSLScriptNode();
-
- /* Source */
- xml_read_string(&osl->filepath, node, "src");
- if(path_is_relative(osl->filepath)) {
- osl->filepath = path_join(state.base, osl->filepath);
- }
-
- /* Generate inputs/outputs from node sockets
- *
- * Note: ShaderInput/ShaderOutput store shallow string copies only!
- * So we register them as ustring to ensure the pointer stays valid. */
- /* read input values */
- for(pugi::xml_node param = node.first_child(); param; param = param.next_sibling()) {
- if(string_iequals(param.name(), "input")) {
- string name;
- if(!xml_read_string(&name, param, "name"))
- continue;
-
- ShaderSocketType type = xml_read_socket_type(param, "type");
- if(type == SHADER_SOCKET_UNDEFINED)
- continue;
-
- osl->add_input(ustring(name).c_str(), type);
- }
- else if(string_iequals(param.name(), "output")) {
- string name;
- if(!xml_read_string(&name, param, "name"))
- continue;
-
- ShaderSocketType type = xml_read_socket_type(param, "type");
- if(type == SHADER_SOCKET_UNDEFINED)
- continue;
-
- osl->add_output(ustring(name).c_str(), type);
- }
- }
-
- snode = osl;
- }
- else if(string_iequals(node.name(), "sky_texture")) {
- SkyTextureNode *sky = new SkyTextureNode();
-
- xml_read_enum(&sky->type, SkyTextureNode::type_enum, node, "type");
- xml_read_float3(&sky->sun_direction, node, "sun_direction");
- xml_read_float(&sky->turbidity, node, "turbidity");
- xml_read_float(&sky->ground_albedo, node, "ground_albedo");
-
- snode = sky;
- }
- else if(string_iequals(node.name(), "noise_texture")) {
- snode = new NoiseTextureNode();
- }
- else if(string_iequals(node.name(), "checker_texture")) {
- snode = new CheckerTextureNode();
- }
- else if(string_iequals(node.name(), "brick_texture")) {
- BrickTextureNode *brick = new BrickTextureNode();
-
- xml_read_float(&brick->offset, node, "offset");
- xml_read_int(&brick->offset_frequency, node, "offset_frequency");
- xml_read_float(&brick->squash, node, "squash");
- xml_read_int(&brick->squash_frequency, node, "squash_frequency");
-
- snode = brick;
- }
- else if(string_iequals(node.name(), "gradient_texture")) {
- GradientTextureNode *blend = new GradientTextureNode();
- xml_read_enum(&blend->type, GradientTextureNode::type_enum, node, "type");
- snode = blend;
- }
- else if(string_iequals(node.name(), "voronoi_texture")) {
- VoronoiTextureNode *voronoi = new VoronoiTextureNode();
- xml_read_enum(&voronoi->coloring, VoronoiTextureNode::coloring_enum, node, "coloring");
- snode = voronoi;
- }
- else if(string_iequals(node.name(), "musgrave_texture")) {
- MusgraveTextureNode *musgrave = new MusgraveTextureNode();
- xml_read_enum(&musgrave->type, MusgraveTextureNode::type_enum, node, "type");
- snode = musgrave;
- }
- else if(string_iequals(node.name(), "magic_texture")) {
- MagicTextureNode *magic = new MagicTextureNode();
- xml_read_int(&magic->depth, node, "depth");
- snode = magic;
- }
- else if(string_iequals(node.name(), "wave_texture")) {
- WaveTextureNode *wave = new WaveTextureNode();
- xml_read_enum(&wave->type, WaveTextureNode::type_enum, node, "type");
- xml_read_enum(&wave->profile, WaveTextureNode::profile_enum, node, "profile");
- snode = wave;
- }
- else if(string_iequals(node.name(), "normal")) {
- NormalNode *normal = new NormalNode();
- xml_read_float3(&normal->direction, node, "direction");
- snode = normal;
- }
- else if(string_iequals(node.name(), "bump")) {
- BumpNode *bump = new BumpNode();
- xml_read_bool(&bump->invert, node, "invert");
- snode = bump;
- }
- else if(string_iequals(node.name(), "mapping")) {
- snode = new MappingNode();
- }
- else if(string_iequals(node.name(), "anisotropic_bsdf")) {
- AnisotropicBsdfNode *aniso = new AnisotropicBsdfNode();
- xml_read_enum(&aniso->distribution, AnisotropicBsdfNode::distribution_enum, node, "distribution");
- snode = aniso;
- }
- else if(string_iequals(node.name(), "diffuse_bsdf")) {
- snode = new DiffuseBsdfNode();
- }
- else if(string_iequals(node.name(), "translucent_bsdf")) {
- snode = new TranslucentBsdfNode();
- }
- else if(string_iequals(node.name(), "transparent_bsdf")) {
- snode = new TransparentBsdfNode();
- }
- else if(string_iequals(node.name(), "velvet_bsdf")) {
- snode = new VelvetBsdfNode();
- }
- else if(string_iequals(node.name(), "toon_bsdf")) {
- ToonBsdfNode *toon = new ToonBsdfNode();
- xml_read_enum(&toon->component, ToonBsdfNode::component_enum, node, "component");
- snode = toon;
- }
- else if(string_iequals(node.name(), "glossy_bsdf")) {
- GlossyBsdfNode *glossy = new GlossyBsdfNode();
- xml_read_enum(&glossy->distribution, GlossyBsdfNode::distribution_enum, node, "distribution");
- snode = glossy;
- }
- else if(string_iequals(node.name(), "glass_bsdf")) {
- GlassBsdfNode *diel = new GlassBsdfNode();
- xml_read_enum(&diel->distribution, GlassBsdfNode::distribution_enum, node, "distribution");
- snode = diel;
- }
- else if(string_iequals(node.name(), "refraction_bsdf")) {
- RefractionBsdfNode *diel = new RefractionBsdfNode();
- xml_read_enum(&diel->distribution, RefractionBsdfNode::distribution_enum, node, "distribution");
- snode = diel;
- }
- else if(string_iequals(node.name(), "hair_bsdf")) {
- HairBsdfNode *hair = new HairBsdfNode();
- xml_read_enum(&hair->component, HairBsdfNode::component_enum, node, "component");
- snode = hair;
- }
- else if(string_iequals(node.name(), "emission")) {
- snode = new EmissionNode();
- }
- else if(string_iequals(node.name(), "ambient_occlusion")) {
- snode = new AmbientOcclusionNode();
- }
- else if(string_iequals(node.name(), "background")) {
- snode = new BackgroundNode();
- }
- else if(string_iequals(node.name(), "holdout")) {
- snode = new HoldoutNode();
- }
- else if(string_iequals(node.name(), "absorption_volume")) {
- snode = new AbsorptionVolumeNode();
- }
- else if(string_iequals(node.name(), "scatter_volume")) {
- snode = new ScatterVolumeNode();
- }
- else if(string_iequals(node.name(), "subsurface_scattering")) {
- SubsurfaceScatteringNode *sss = new SubsurfaceScatteringNode();
-
- string falloff;
- xml_read_string(&falloff, node, "falloff");
- if(falloff == "cubic")
- sss->closure = CLOSURE_BSSRDF_CUBIC_ID;
- else if(falloff == "gaussian")
- sss->closure = CLOSURE_BSSRDF_GAUSSIAN_ID;
- else /*if(falloff == "burley")*/
- sss->closure = CLOSURE_BSSRDF_BURLEY_ID;
-
- snode = sss;
- }
- else if(string_iequals(node.name(), "geometry")) {
- snode = new GeometryNode();
- }
- else if(string_iequals(node.name(), "texture_coordinate")) {
- snode = new TextureCoordinateNode();
- }
- else if(string_iequals(node.name(), "light_path")) {
- snode = new LightPathNode();
- }
- else if(string_iequals(node.name(), "light_falloff")) {
- snode = new LightFalloffNode();
- }
- else if(string_iequals(node.name(), "object_info")) {
- snode = new ObjectInfoNode();
- }
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list