[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