[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42724] branches/bmesh/blender: svn merge ^/trunk/blender -r42680:42722
Campbell Barton
ideasman42 at gmail.com
Mon Dec 19 11:40:49 CET 2011
Revision: 42724
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42724
Author: campbellbarton
Date: 2011-12-19 10:40:48 +0000 (Mon, 19 Dec 2011)
Log Message:
-----------
svn merge ^/trunk/blender -r42680:42722
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42680
Modified Paths:
--------------
branches/bmesh/blender/CMakeLists.txt
branches/bmesh/blender/build_files/scons/config/win32-mingw-config.py
branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp
branches/bmesh/blender/intern/cycles/render/graph.cpp
branches/bmesh/blender/intern/cycles/render/graph.h
branches/bmesh/blender/intern/cycles/render/nodes.cpp
branches/bmesh/blender/intern/cycles/render/nodes.h
branches/bmesh/blender/release/scripts/startup/bl_ui/space_node.py
branches/bmesh/blender/source/blender/blenkernel/BKE_customdata.h
branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c
branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.h
branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
branches/bmesh/blender/source/blender/blenkernel/intern/deform.c
branches/bmesh/blender/source/blender/blenkernel/intern/dynamicpaint.c
branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
branches/bmesh/blender/source/blender/blenkernel/intern/tracking.c
branches/bmesh/blender/source/blender/blenlib/BLI_math_vector.h
branches/bmesh/blender/source/blender/blenlib/BLI_utildefines.h
branches/bmesh/blender/source/blender/blenlib/intern/bpath.c
branches/bmesh/blender/source/blender/blenlib/intern/math_vector.c
branches/bmesh/blender/source/blender/editors/interface/interface_panel.c
branches/bmesh/blender/source/blender/editors/interface/interface_regions.c
branches/bmesh/blender/source/blender/editors/object/object_vgroup.c
branches/bmesh/blender/source/blender/editors/sculpt_paint/sculpt.c
branches/bmesh/blender/source/blender/editors/space_node/node_draw.c
branches/bmesh/blender/source/blender/editors/space_node/node_edit.c
branches/bmesh/blender/source/blender/editors/space_node/node_intern.h
branches/bmesh/blender/source/blender/editors/space_node/node_ops.c
branches/bmesh/blender/source/blender/editors/space_node/node_select.c
branches/bmesh/blender/source/blender/editors/space_node/node_state.c
branches/bmesh/blender/source/blender/editors/uvedit/uvedit_ops.c
branches/bmesh/blender/source/blender/gpu/intern/gpu_extensions.c
branches/bmesh/blender/source/blender/makesrna/intern/rna_nodetree.c
branches/bmesh/blender/source/blender/makesrna/intern/rna_object.c
branches/bmesh/blender/source/blender/makesrna/intern/rna_object_api.c
branches/bmesh/blender/source/blender/makesrna/intern/rna_space.c
branches/bmesh/blender/source/blender/modifiers/intern/MOD_solidify.c
branches/bmesh/blender/source/blender/modifiers/intern/MOD_uvproject.c
branches/bmesh/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c
branches/bmesh/blender/source/blender/python/generic/bgl.c
branches/bmesh/blender/source/blender/python/generic/idprop_py_api.c
branches/bmesh/blender/source/blender/python/generic/py_capi_utils.c
branches/bmesh/blender/source/blender/python/intern/bpy_app_handlers.c
branches/bmesh/blender/source/blender/python/intern/bpy_props.c
branches/bmesh/blender/source/blender/python/intern/bpy_rna.c
branches/bmesh/blender/source/blender/python/intern/bpy_rna_anim.c
branches/bmesh/blender/source/blender/python/intern/bpy_rna_callback.c
branches/bmesh/blender/source/blender/python/intern/gpu.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils.h
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Color.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Euler.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Matrix.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Matrix.h
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Quaternion.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Vector.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_Vector.h
branches/bmesh/blender/source/blender/python/mathutils/mathutils_geometry.c
branches/bmesh/blender/source/blender/python/mathutils/mathutils_noise.c
branches/bmesh/blender/source/blender/windowmanager/intern/wm_init_exit.c
branches/bmesh/blender/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
Property Changed:
----------------
branches/bmesh/blender/
branches/bmesh/blender/release/
Property changes on: branches/bmesh/blender
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/soc-2011-cucumber:37517
/branches/soc-2011-tomato:42376,42378-42379,42397,42400
/trunk/blender:39992-42680
+ /branches/soc-2011-cucumber:37517
/branches/soc-2011-tomato:42376,42378-42379,42397,42400
/trunk/blender:39992-42722
Modified: branches/bmesh/blender/CMakeLists.txt
===================================================================
--- branches/bmesh/blender/CMakeLists.txt 2011-12-19 10:39:40 UTC (rev 42723)
+++ branches/bmesh/blender/CMakeLists.txt 2011-12-19 10:40:48 UTC (rev 42724)
@@ -649,10 +649,6 @@
set(ICONV_LIBPATH ${ICONV}/lib)
endif()
- set(PNG "${LIBDIR}/png")
- set(PNG_INCLUDE_DIR "${PNG}/include")
- set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
-
set(JPEG "${LIBDIR}/jpeg")
set(JPEG_INCLUDE_DIR "${JPEG}/include")
set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
@@ -733,6 +729,10 @@
set(PNG_LIBRARIES libpng_st)
endif()
set(JPEG_LIBRARIES libjpeg)
+
+ set(PNG "${LIBDIR}/png")
+ set(PNG_INCLUDE_DIR "${PNG}/include")
+ set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
if(CMAKE_CL_64)
@@ -913,6 +913,10 @@
set(GETTEXT_LIBPATH ${GETTEXT}/lib)
set(GETTEXT_LIBRARIES intl)
endif()
+
+ set(PNG "${LIBDIR}/gcc/png")
+ set(PNG_INCLUDE_DIR "${PNG}/include")
+ set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
set(JPEG_LIBRARIES libjpeg)
set(PNG_LIBRARIES png)
Modified: branches/bmesh/blender/build_files/scons/config/win32-mingw-config.py
===================================================================
--- branches/bmesh/blender/build_files/scons/config/win32-mingw-config.py 2011-12-19 10:39:40 UTC (rev 42723)
+++ branches/bmesh/blender/build_files/scons/config/win32-mingw-config.py 2011-12-19 10:40:48 UTC (rev 42724)
@@ -64,7 +64,7 @@
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
WITH_BF_PNG = True
-BF_PNG = LIBDIR + '/png'
+BF_PNG = LIBDIR + 'gcc/png'
BF_PNG_INC = '${BF_PNG}/include'
BF_PNG_LIB = 'png'
BF_PNG_LIBPATH = '${BF_PNG}/lib'
Modified: branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp 2011-12-19 10:39:40 UTC (rev 42723)
+++ branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp 2011-12-19 10:40:48 UTC (rev 42724)
@@ -50,28 +50,6 @@
/* Graph */
-static BL::NodeSocket get_node_input(BL::Node *b_group_node, BL::NodeSocket b_in)
-{
- if(b_group_node) {
-
- BL::NodeTree b_ntree = BL::NodeGroup(*b_group_node).node_tree();
- BL::NodeTree::links_iterator b_link;
-
- for(b_ntree.links.begin(b_link); b_link != b_ntree.links.end(); ++b_link) {
- if(b_link->to_socket().ptr.data == b_in.ptr.data) {
- BL::Node::inputs_iterator b_gin;
-
- for(b_group_node->inputs.begin(b_gin); b_gin != b_group_node->inputs.end(); ++b_gin)
- if(b_gin->group_socket().ptr.data == b_link->from_socket().ptr.data)
- return *b_gin;
-
- }
- }
- }
-
- return b_in;
-}
-
static BL::NodeSocket get_node_output(BL::Node b_node, const string& name)
{
BL::Node::outputs_iterator b_out;
@@ -121,7 +99,7 @@
mapping->scale = get_float3(b_mapping.scale());
}
-static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node *b_group_node, BL::ShaderNode b_node)
+static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNode b_node)
{
ShaderNode *node = NULL;
@@ -470,59 +448,115 @@
return SocketPair(node_map[b_node.ptr.data], name);
}
-static void add_nodes(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNodeTree b_ntree, BL::Node *b_group_node, PtrSockMap& sockets_map)
+static ShaderSocketType convert_socket_type(BL::NodeSocket::type_enum b_type)
{
+ switch (b_type) {
+ case BL::NodeSocket::type_VALUE:
+ return SHADER_SOCKET_FLOAT;
+ case BL::NodeSocket::type_VECTOR:
+ return SHADER_SOCKET_VECTOR;
+ case BL::NodeSocket::type_RGBA:
+ return SHADER_SOCKET_COLOR;
+ case BL::NodeSocket::type_SHADER:
+ return SHADER_SOCKET_CLOSURE;
+
+ case BL::NodeSocket::type_BOOLEAN:
+ case BL::NodeSocket::type_MESH:
+ case BL::NodeSocket::type_INT:
+ default:
+ return SHADER_SOCKET_FLOAT;
+ }
+}
+
+static void set_default_value(ShaderInput *input, BL::NodeSocket sock)
+{
+ /* copy values for non linked inputs */
+ switch(input->type) {
+ case SHADER_SOCKET_FLOAT: {
+ BL::NodeSocketFloatNone value_sock(sock);
+ input->set(value_sock.default_value());
+ break;
+ }
+ case SHADER_SOCKET_COLOR: {
+ BL::NodeSocketRGBA rgba_sock(sock);
+ input->set(get_float3(rgba_sock.default_value()));
+ break;
+ }
+ case SHADER_SOCKET_NORMAL:
+ case SHADER_SOCKET_POINT:
+ case SHADER_SOCKET_VECTOR: {
+ BL::NodeSocketVectorNone vec_sock(sock);
+ input->set(get_float3(vec_sock.default_value()));
+ break;
+ }
+ case SHADER_SOCKET_CLOSURE:
+ break;
+ }
+}
+
+static void add_nodes(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNodeTree b_ntree, PtrSockMap& sockets_map)
+{
/* add nodes */
BL::ShaderNodeTree::nodes_iterator b_node;
PtrNodeMap node_map;
- map<void*, PtrSockMap> node_groups;
+ PtrSockMap proxy_map;
for(b_ntree.nodes.begin(b_node); b_node != b_ntree.nodes.end(); ++b_node) {
if(b_node->is_a(&RNA_NodeGroup)) {
+ /* add proxy converter nodes for inputs and outputs */
BL::NodeGroup b_gnode(*b_node);
BL::ShaderNodeTree b_group_ntree(b_gnode.node_tree());
-
- node_groups[b_node->ptr.data] = PtrSockMap();
- add_nodes(b_data, graph, b_group_ntree, &b_gnode, node_groups[b_node->ptr.data]);
+ BL::Node::inputs_iterator b_input;
+ BL::Node::outputs_iterator b_output;
+
+ PtrSockMap group_sockmap;
+
+ for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
+ ShaderSocketType extern_type = convert_socket_type(b_input->type());
+ ShaderSocketType intern_type = convert_socket_type(b_input->group_socket().type());
+ ShaderNode *proxy = graph->add(new ProxyNode(extern_type, intern_type));
+
+ /* map the external node socket to the proxy node socket */
+ proxy_map[b_input->ptr.data] = SocketPair(proxy, proxy->inputs[0]->name);
+ /* map the internal group socket to the proxy node socket */
+ group_sockmap[b_input->group_socket().ptr.data] = SocketPair(proxy, proxy->outputs[0]->name);
+
+ /* default input values of the group node */
+ set_default_value(proxy->inputs[0], *b_input);
+ }
+
+ for(b_node->outputs.begin(b_output); b_output != b_node->outputs.end(); ++b_output) {
+ ShaderSocketType extern_type = convert_socket_type(b_output->type());
+ ShaderSocketType intern_type = convert_socket_type(b_output->group_socket().type());
+ ShaderNode *proxy = graph->add(new ProxyNode(intern_type, extern_type));
+
+ /* map the external node socket to the proxy node socket */
+ proxy_map[b_output->ptr.data] = SocketPair(proxy, proxy->outputs[0]->name);
+ /* map the internal group socket to the proxy node socket */
+ group_sockmap[b_output->group_socket().ptr.data] = SocketPair(proxy, proxy->inputs[0]->name);
+
+ /* default input values of internal, unlinked group outputs */
+ set_default_value(proxy->inputs[0], b_output->group_socket());
+ }
+
+ add_nodes(b_data, graph, b_group_ntree, group_sockmap);
}
else {
- ShaderNode *node = add_node(b_data, graph, b_group_node, BL::ShaderNode(*b_node));
-
+ ShaderNode *node = add_node(b_data, graph, BL::ShaderNode(*b_node));
+
if(node) {
BL::Node::inputs_iterator b_input;
- BL::Node::outputs_iterator b_output;
-
+
node_map[b_node->ptr.data] = node;
-
+
for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
SocketPair pair = node_socket_map_pair(node_map, *b_node, *b_input);
ShaderInput *input = pair.first->input(pair.second.c_str());
- BL::NodeSocket sock(get_node_input(b_group_node, *b_input));
-
+
assert(input);
-
+
/* copy values for non linked inputs */
- switch(input->type) {
- case SHADER_SOCKET_FLOAT: {
- BL::NodeSocketFloatNone value_sock(sock);
- input->set(value_sock.default_value());
- break;
- }
- case SHADER_SOCKET_COLOR: {
- BL::NodeSocketRGBA rgba_sock(sock);
- input->set(get_float3(rgba_sock.default_value()));
- break;
- }
- case SHADER_SOCKET_NORMAL:
- case SHADER_SOCKET_POINT:
- case SHADER_SOCKET_VECTOR: {
- BL::NodeSocketVectorNone vec_sock(sock);
- input->set(get_float3(vec_sock.default_value()));
- break;
- }
- case SHADER_SOCKET_CLOSURE:
- break;
- }
+ set_default_value(input, *b_input);
}
}
}
@@ -539,54 +573,34 @@
BL::NodeSocket b_from_sock = b_link->from_socket();
BL::NodeSocket b_to_sock = b_link->to_socket();
- /* if link with group socket, add to map so we can connect it later */
- if(b_group_node) {
- if(!b_from_node) {
- sockets_map[b_from_sock.ptr.data] =
- node_socket_map_pair(node_map, b_to_node, b_to_sock);
+ SocketPair from_pair, to_pair;
- continue;
- }
- else if(!b_to_node) {
- sockets_map[b_to_sock.ptr.data] =
- node_socket_map_pair(node_map, b_from_node, b_from_sock);
+ /* links without a node pointer are connections to group inputs/outputs */
- continue;
- }
- }
-
- SocketPair from_pair, to_pair;
-
/* from sock */
- if(b_from_node.is_a(&RNA_NodeGroup)) {
- /* group node */
- BL::NodeSocket group_sock = b_from_sock.group_socket();
- from_pair = node_groups[b_from_node.ptr.data][group_sock.ptr.data];
+ if(b_from_node) {
+ if (b_from_node.is_a(&RNA_NodeGroup))
+ from_pair = proxy_map[b_from_sock.ptr.data];
+ else
+ from_pair = node_socket_map_pair(node_map, b_from_node, b_from_sock);
}
- else {
- /* regular node */
- from_pair = node_socket_map_pair(node_map, b_from_node, b_from_sock);
- }
+ else
+ from_pair = sockets_map[b_from_sock.ptr.data];
/* to sock */
- if(b_to_node.is_a(&RNA_NodeGroup)) {
- /* group node */
- BL::NodeSocket group_sock = b_to_sock.group_socket();
- to_pair = node_groups[b_to_node.ptr.data][group_sock.ptr.data];
+ if(b_to_node) {
+ if (b_to_node.is_a(&RNA_NodeGroup))
+ to_pair = proxy_map[b_to_sock.ptr.data];
+ else
+ to_pair = node_socket_map_pair(node_map, b_to_node, b_to_sock);
}
- else {
- /* regular node */
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list