Commit Graph

256 Commits

Author SHA1 Message Date
84d06f252e tag & comment unused vars with /* UNUSED */ 2011-09-20 08:48:48 +00:00
2222f536f8 use replace 0 with NULL for pointers, set some functions static
also fixed own errors in recent static check commit.
2011-09-16 08:20:21 +00:00
Lukas Toenne
7db716599c Fix for crash when duplicating image or render layer nodes.
These nodes use cached buffers (in sock->cache), which need to be cleared when duplicating the node, otherwise the buffer will be freed twice.
2011-09-07 12:46:30 +00:00
53671577a4 Fixed potential crash in NodeTagIDChanged. Discovered after merge trunk
into tomato where there were no check for tree before calling this function.
Old design worked fine with this.

Mark some arguments as UNUSED.
2011-09-06 18:15:34 +00:00
decc2c2e77 Node merge: fix crash loading files with unknown nodes (e.g. cycles files). 2011-09-06 17:34:56 +00:00
Lukas Toenne
884fc84793 Fix for multiple parallel group node executions.
This would previously break because begin/end functions for each tree type still have some checks of the ntree->execdata pointer in them, despite the intended use of execdata instances instead of trees themselves for execution data storage. This is an artifact of the old execution system that required these checks to be made in the functions to avoid multiple execution of top-level trees. Now these functions take an additional argument, so group nodes can prevent them from setting and checking the nodetree->execdata pointers.
2011-09-06 16:32:51 +00:00
0991bed413 fix some complier warnings and add -Wundef to CMake's default GCC warnings. 2011-09-05 23:40:52 +00:00
Lukas Toenne
8e0fe8bff7 Merged the particles-2010 branch with node improvements into trunk.
This branch adds mostly organizational improvements to the node system by renaming the node folders and files. A couple of internal features have been added too.
Detailed information can be found on the wiki page:

http://wiki.blender.org/index.php/User:Phonybone/Particles2010
2011-09-05 21:01:50 +00:00
540f0c64b5 add in asserts for when array/non array RNA funcions are used incorrectly, would have made previous fix a lot easier to find.
also remove unused argument from RNA_property_array_check.
2011-08-14 10:28:18 +00:00
de10ffab75 Bugfix #27761
Material nodes: when no output node was active, it sets one.
Not common to happen anymore, only for deleting output nodes
without clicking on nodes.
2011-07-09 17:03:35 +00:00
830fe8af84 Updated the indent, sorry! 2011-07-04 19:22:37 +00:00
c4491f558b Current situation
A mesh can consist out of multiple material. Take a character with clothing's. the skin can be a different material as the different clothing's. During compositing it is a common use-case to only do a part of the composit on only a specific material. Currently this can not be done.

In blender movies this feature is known to be implemented, but until now it never got integrated into trunk.
Proposal

With material index the Blender internal renderer will be capable of creating a buffer containing the material indexes of the first pixel-hit. This will be implemented in the same manner as the object index.

In the compositor the ID Mask node can be used to extract the information out of the Render pass.
Impact
User interface

On the properties-space the next changes will be done

    Scene⇒Render layer⇒Passes⇒Material index will be added
    Material⇒Options⇒Pass index will be added

DNA

    Material struct will get an new field called “index”. this will be a short-type.
    Material struct the field pad will be removed.
    A new Render-layer pass will be added (bit 1«18)

RNA

    Material RNA is updated (based on “pass index” from object)
    Render layer RNA is updated (based on IndexOB)

Blender internal renderer

The Blender internal renderer will process the render pass as a copy of the Object index.
Blender compositor

The render layer input will get a new output socket called “IndexMA”
Usage

An example on how to use material index can be found at:

https://svn.blender.org/svnroot/bf-blender/trunk/lib/tests/compositing/composite_materialindex.blend

This is also example of a commit message longer than the commit itself :)
2011-07-04 18:14:41 +00:00
8eb375048e removing python includes for blenkernel since pynodes are commented. 2011-06-19 09:32:37 +00:00
83609edd51 Fix related to #27309: group nodes with a linked datablock that was missing would crash. 2011-06-02 17:34:01 +00:00
3986896500 copying/freeing node trees now adjusts grease pencil user count.
also NULL freed texture node socket data incase its used again by accident.
2011-05-02 08:37:44 +00:00
Lukas Toenne
5c4743b9ee Another fix for node groups: Internal socket stack did not get complete initialization of the sockettype value, leading to wrong b/w outputs. 2011-04-24 05:13:35 +00:00
176e45f88e fix for possible (but unlikely) crash.
added NULL check in case nodeAddNodeType() is given an invalid type or the dynamic node cant be found.
2011-04-23 08:02:29 +00:00
Lukas Toenne
6b4cecc466 Fix for group output memory leak, bug #27104. This happens when an internal node in a group has multiple output buffers, but only some of them are used. Then all the buffers would be created, but the unlinked outputs were not correctly tagged for freeing after group execution. 2011-04-23 07:21:10 +00:00
Lukas Toenne
a6c2d8680b Internal need_exec tagging for group nodes, fixes #27034. Non-compositor node trees (texture and material) only use the need_exec flag to exclude cyclic dependencies, ugly double use of that flag. Oh well, hopefully can replace this altogether one day ;) 2011-04-20 20:31:43 +00:00
Lukas Toenne
6cb761f10c Corrected updating inside edited groups, fix for #27018. This was caused by edit updates being restricted to the actual node. Edit functions now should use the generic snode_tag_changed, which also updates all instances of the currently edited group. 2011-04-19 15:15:50 +00:00
69bd72c3b6 quiet gcc float -> double promotion warnings. 2011-04-02 02:08:33 +00:00
Lukas Toenne
05b2a75bfe Group tree sockets were not being freed after removing. 2011-03-13 22:13:42 +00:00
Lukas Toenne
24f72abf67 Fix for crashes due to links without fromnode pointers. This can happen with "unfinished" links created during the modal linking operator or when creating links from group tree inputs.
In addition don't store unfinished links in the nodetree->links list any more. This makes code a bit safer because all links in that list can be considered valid now. The temporary bNodeLinkDrag structs used by the modal linking operator are now also stored in a list in SpaceNode, so these links can be drawn too (this separation also allows different display of temporary links, e.g. currently they are drawn on top of all nodes).
2011-03-13 22:07:55 +00:00
Lukas Toenne
2907826d8c Fixed the node_recurs_check function used to define the order of nodes in ntreeSolveOrder. This was creating equal node levels in some cases (auto-linking viewer to nodes further downstream), leading to falsely detected circular dependencies. 2011-03-13 17:23:44 +00:00
efc697b481 Bugfix #26443
Node compositor crash:
When you very quickly unlink a socket *right* after connecting it
(within 0.1 second), the compositor started with a noodle without
valid connections, which was not foreseen to happen.
2011-03-10 18:17:20 +00:00
daff7a447e Bugfix #26388
Actually a todo item I forgot:

Material nodes previews now follow the scene "color managenent"
setting.
2011-03-07 11:51:09 +00:00
7fb14d9138 Bugfix #26367
Previous fix I did to make texture-node-paint work, accidentally
cleared tags for compositing nodes to be done while editing.
2011-03-05 17:04:30 +00:00
24fa1d1f04 Two additional fixes for node-tree + texture paint:
- "need exec" flag was cleared in wrong tree for preview renders
  (it should clear it in the copy, i did in original).
  This fixes projection paint on images with previews open
- Previews for nodes were copied always, now only for previews 
  invoked by node editor itself.
2011-03-04 12:59:09 +00:00
18afcbcb7d bugfix #26267
ImageWindow + 3D view texture paint + texture preview render + texture nodes.
Threading hell! But it works now :)
2011-03-03 18:53:07 +00:00
Nathan Letwory
0ff06e21cd doxygen: blender/blenkernel tagged. 2011-02-27 20:40:57 +00:00
38bd8dcf05 Bugfix #26221
Two bugs in one:

- Lukas commit monday for new group/socket handling accidentally removed
  to set socketype in stacks, which as used by (texture) nodes to detect
  whether value, color or vector had to be read.
  Result was that all texture nodes were rendering as B&W

- Old 2.5 bug: preview renders for texture nodes didn't call a 
  NodeEndExec function, which gave crashes on deleting nodes.

The change in interface_hanlers.c is only a comment to explain
how keymaps are being found.
2011-02-26 13:53:15 +00:00
09e8a8222c needed for building without python 2011-02-25 11:25:11 +00:00
Lukas Toenne
04d04f6401 Fixed memory leak in group nodes. Only buffers from exposed sockets should remain after group execution. 2011-02-24 15:48:09 +00:00
Lukas Toenne
4fe21e0b4f The material "Dynamic" node (disabled anyway) had incomplete base type initialization, which made it appear as an empty item in the input node category. 2011-02-23 13:50:41 +00:00
Nathan Letwory
5b607701a7 doxygen: prevent GPL license block from being parsed as doxygen comment. 2011-02-23 10:52:22 +00:00
Lukas Toenne
e7750aa6ed Convenience fix: Exposing internal sockets now copies the default input value to the group sockets. The "expose" function on group inputs/outputs has an optional parameter "add_link", which can be used to prevent the automatic linking. 2011-02-22 20:49:34 +00:00
Lukas Toenne
b3c60ef3ea Added RNA functions to group tree inputs/outputs for exposing internal sockets or adding custom sockets by name and type (fixes #26171). Changed a few function names for groups for consistency. 2011-02-22 20:24:06 +00:00
Lukas Toenne
8b5d019139 Fixed missing initialization of node stack entries. 2011-02-22 07:58:49 +00:00
Lukas Toenne
4fb730d6d0 Fixed do_versions for node groups which contain nodes that have changed sockets. do_versions is running before the lib_verify_nodetree function updates socket lists of nodes. This means that when adding unlinked sockets in do_versions to restore older node groups, the new sockets are not taken into account. To fix this a temporary node tree flag has been introduced, which delays actual group socket do_version until the group tree internal nodes have been updated. After that the unlinked group sockets are exposed (like old node groups did), then the external sockets look up the new index, so that external links to group instances are preserved. 2011-02-21 18:18:37 +00:00
Lukas Toenne
1c7a422f78 Big node groups improvement patch. Node group trees now have their own lists of input/output sockets. Those can be linked to internal nodes just like links between regular nodes. In addition group sockets can be renamed and have a defined order, which can be modified, and they can be removed again.
More details can be found in the patch tracker description (#24883) and on the code.blender.org development blog.
2011-02-21 13:47:49 +00:00
0955c664aa fix for warnings from Sparse static source code checker, mostly BKE/BLI and python functions.
- use NULL rather then 0 where possible (makes code & function calls more readable IMHO).
- set static variables and functions (exposed some unused vars/funcs).
- use func(void) rather then func() for definitions.
2011-02-13 10:52:18 +00:00
Lukas Toenne
69e72ea427 Removed the internal_select parameter from ntreeCopyTree. This was used just in one place when duplicating nodes, which is not an actual copying of the tree. The node duplicate operator now copies selected nodes itself. 2011-02-11 09:37:58 +00:00
Lukas Toenne
9fea58ca91 Made group label callback function static. 2011-02-11 07:46:06 +00:00
Lukas Toenne
24db3d17aa Per-type node labels and customizable names. The label displayed in the node header is now by default the node type string. A custom label callback can be implemented to display more detailed information. This is currently used by group nodes, which display their internal tree name, and math, vector math, mix and filter nodes, which use their internal operation sub-type. Also the node tree selection/naming box for groups is now displayed only on open groups, to make it clearer that this is the internal type of the group and get a cleaner main tree. 2011-02-08 12:54:32 +00:00
Lukas Toenne
37f55ec194 Group node type info is now also initialized with helper functions. 2011-02-08 09:14:18 +00:00
Lukas Toenne
803c7fb4d4 Finished the node type definition cleanup started in r34682. All static node types should now use the node_type_* definition helpers to initialize their bNodeType structs. 2011-02-08 09:02:16 +00:00
5c421c328e Todo/feature request
When using masks or other simple 3D elements in composites, doing
a layer re-rendering on a node is a bit clumsy all the time.

This commit does two things to help:
- new hotkey "Z" in node editor automatically finds render layer
  that changed and re-renders it + composites
- option "Auto Render" does same, but then after every transform
  edit in 3D window

The latter is experimental; real & proper system for this requires
full threaded render support (like previews). But it works!

Demo file:
http://download.blender.org/demo/test/auto_composite.blend

Important fix:
After any render, all the render layers were tagged "changed", which
caused any edit to first totally recomposte everthing. Now it only
composites changes.

Implementation notes

- DAG scene flush now sets 'changed' flags in render layer nodes
- Added notifier for 'transform finished' to trigger the update,
  this is temporarily.
2011-02-07 16:41:57 +00:00
Lukas Toenne
2070356a32 A simplified way of defining bNodeType structs. Instead of doing full struct member initialization for each node, this uses a couple of helper functions now. This will make it easier to change and extend the bNodeSocket interface in the future. Two examples (normal and mapping shader nodes) included, the rest should be converted too. 2011-02-07 09:33:36 +00:00
c0e74f9dce fix [#25748] Addons register parameters/functions more than once
- values were added to both the classes __dict__ as well as the internal StructRNA.
- made properties available from the type since this is where the python api assigns them:
>>> bpy.types.Scene.frame_start
<bpy_struct, IntProperty("frame_start")>
- rename RNA_struct_type_properties() -> RNA_struct_type_properties(), added RNA_struct_type_find_property()
2011-01-25 06:54:57 +00:00
Lukas Toenne
bee3d78393 Added a check in nodeGroupVerify to detect if a tree is actually a group tree. This is necessary to avoid the group-in-group error if the function is called for a tree that already contains group nodes. 2011-01-18 13:28:18 +00:00