Commit Graph

399 Commits

Author SHA1 Message Date
Ton Roosendaal
a8c48058f9 Bug fix #34436
Two example files that crashed texture nodes. 
- On delete texture nodes, it should free the exec cache (because this cache
  stores the node pointer.
- On redo, nodes can exist can exist without typeinfo set. Exec (free) code
  was not checking for that. Don't ask me why this happens... tex nodes are weird.
2013-02-27 14:25:39 +00:00
Campbell Barton
518bfbb1c9 style cleanup 2013-02-02 04:58:03 +00:00
Campbell Barton
c411cde415 header cleanup, include BLI before BKE, also use bool for ntreeShaderExecTree 2013-01-24 21:57:13 +00:00
Ton Roosendaal
ca7b277c12 Disabled commit that was rendering Blender Internal for Cycles nodes.
Apparently Material nodes allow a mix of Cycles and BI Materials. Nifty!
I should read more docs, like this cool tutorial:
http://urchn.org/post/combining-blender-internal-and-cycles-in-one-render
2013-01-24 19:31:44 +00:00
Ton Roosendaal
a97757c156 Logic mistake in previous commit, broke node materials for Internal render.
Stupid!
2013-01-24 18:56:04 +00:00
Ton Roosendaal
b12a019948 Usability
- Cycles materials now render in Blender Internal too, skipping the nodes.
  Not very useful, but at least things then show up on renders and in
  previews.

- Node editor: if wrong shader nodes are in a tree, they draw with thene
  color RED ALERT headers now. (Switching render engine will show it).
2013-01-24 16:11:07 +00:00
Brecht Van Lommel
eaa9258449 Code cleanup: remove some remaining code from the old compositor. 2013-01-15 12:16:44 +00:00
Campbell Barton
9c003a36d6 patch from Harley Acheson to remove multiple inline defines. 2013-01-12 17:12:48 +00:00
Campbell Barton
857df8065f style cleanup 2012-12-28 14:19:05 +00:00
Brecht Van Lommel
1212237ae4 Fix normal compositing/shader node not showing normal widget.
It would actually show after save and reload, the subtype and min/max were
not properly initialized for node output sockets.
2012-11-28 13:20:45 +00:00
Dalai Felinto
0890c2a4a0 support for string parameters in OSL nodes
for now subtype is not defined, but once we start parsing the metadata we can set texture inputs as FILEPATH
also, it takes relative strings and convert to absolute for all strings (which is arguably a good solution, but
should work for now)
2012-11-06 21:36:44 +00:00
Campbell Barton
0e494b74c4 style cleanup 2012-10-26 04:14:10 +00:00
Lukas Toenne
09ed97afc5 Internal node links are now cached in a per-node list, instead of being generated as a transient list that is returned from the callback and had to be freed by the caller. These internal links are used for muted nodes, disconnect operators and reroute nodes, to effectively replace the node with direct input-to-output links.
Storing this list in the node has the advantage of requiring far fewer calls to the potentially expensive internal_connect callback. This was called on every node redraw ...

Also it will allow Cycles to properly use the internal links for muted nodes, which ensures consistent behavior. The previous method was not applicable in Cycles because transient list return values are not supported well in the RNA and particularly the C++ API implementation.
2012-10-25 16:49:06 +00:00
Brecht Van Lommel
5aa6327e2f Cycles UI: keep node input sockets collapsed by default in the properties editor,
when doing the linking in the node editor, to keep the properties editor more
clean in this case.
2012-10-24 21:57:16 +00:00
Lukas Toenne
2af81d4a5e Fix #32835, Reroute node on shading nodes connection gives wrong renders.
Problem here is that muted nodes and reroute nodes are supposed to be removed from the execution node tree during the localize function. However, this is function is apparently only used during preview renders and must be considered a hack (is there anything that is not a hack in BI?)

Now the mute/reroute check happens in the node tree exec functions still used by BI and the legacy compositor and texture nodes. It uses the same internal_connect function from nodes to assign input stack indices directly to outputs (which also avoids overhead). Localize function also still does this. Cycles/Tile should also implement muting/reroute in their intermediate node layers by using this function, then it could be removed from localize too.
2012-10-24 12:57:48 +00:00
Lukas Toenne
cbae51bc93 Removed the experimental (and commented-out) code for FOR and WHILE loops in nodes. This was a feature i tested a while back but was only partially supported by Blender Internal renderer and the old compositor. The main idea was to have nodes that automatically mirror input and output sockets to support incremental changes of "internal variables".
It is not a well-supported feature of the primary node systems (shader, compositor, texture) in Blender. If anybody wants to create a node system that has actual use for loops, they can do so much more elegantly with Python nodes, but it does not have to be a core node type in Blender. Removing this should ease node code maintenance a bit.
2012-10-24 10:00:28 +00:00
Campbell Barton
1767b65846 style cleanup: also rename bmesh_decimate.c --> bmesh_decimate_collapse.c 2012-10-23 03:38:26 +00:00
Campbell Barton
ddc2dbc2a4 style cleanup 2012-10-22 08:15:51 +00:00
Campbell Barton
1a19cbb166 fix for some errors when unlinking.
- movieclip unlink didn't clear node ID pointers from the scene (leaving dangling pointers).
- mask datablock unlink was clearning references from scene nodes twice.
2012-10-01 07:54:37 +00:00
Campbell Barton
ed1cda9a6c style cleanup 2012-09-30 06:12:47 +00:00
Campbell Barton
f9d9459e3f code cleanup: modify DO_INLINE define to not use __inline with mingw
make RegisterBlendExtension_Fail a static func
       u
2012-09-15 02:29:47 +00:00
Campbell Barton
e75f5c8208 quiet -Wmissing-prototypes warnings, and enable this warning by default for C with gcc.
helps for finding unused functions and making functions static, also did some minor code cleanup.
2012-09-15 01:52:28 +00:00
Campbell Barton
aaafa0c2fe code cleanup: move file string defines into BLI_path_utils.h, BKE_utildefines is now unused but keep incase we want to add defines there later. 2012-09-03 22:04:14 +00:00
Campbell Barton
78ded61065 texture curves were not initialized (causing crash), own regression from moving curve initialization outside evaluation. 2012-08-29 07:58:36 +00:00
Campbell Barton
9ecc6fdcc7 style cleanup 2012-08-23 07:10:48 +00:00
Lukas Toenne
9a36b51cc7 Fix for the default internal connect function for nodes (used in muting, detaching, etc.). This is supposed to look for the first input/output of every socket type, but was actually taking the first matching link from the link list, regardless of the linked socket's position. 2012-08-09 11:45:54 +00:00
Lukas Toenne
f961afece0 Fix for incomplete Reroute node updates. Adding reroute nodes by spliting links would often result in unrelated color sockets or otherwise miss updates.
The reason is that the per-node updates used for Reroute node type inheritance are not supposed to be looking at connected nodes, they are purely for "local" updates. For this sort of "global" update which requires depth-first search, the update function on the node tree level must be used instead.
2012-08-06 18:49:28 +00:00
Lukas Toenne
e276a7c805 Fix for Reroute nodes: Reloading could change socket types without updating the socket data structs, leading to crash. This is caused by the node verification procedure, which resets any socket type to the initial type defined in the socket templates. Adding sockets dynamically without templates solves this (the sockets are then ignored by verification). 2012-08-06 16:25:38 +00:00
Bastien Montagne
468ef74ed7 More spell and typo fixes (mostly visualise->visualize, grey->gray, normalise->normalize). 2012-07-03 19:09:07 +00:00
Lukas Toenne
6c4510f681 Modification of node groups by adding/removing nodes is not possible yet. This patch extends the 'Make Group' operator and adds a new 'Separate' operator to add such functionality.
1) For inserting into existing groups:
  The 'Make Group from selected' (CTRL+g) operator shows a selection popup (like the object parenting operator), with options depending on the type of the active node (last selected):
  * "New" -> regular operator, creates new group type with all selected nodes inside.
  * "Insert" (only if active node is a group) -> adds all other selected nodes into the group.

  Currently still prohibits groups inside groups in general, though would be technically possible as long as no actual recursion occurs (group containing itself).

2) For extracting from an existing group:
  New 'Separate from group' operator (p), works similar to separating vertices/edges/faces from mesh. Two modes:
  * "Copy" makes a copy of the nodes in the parent tree, but keeps the original group intact.
  * "Move" removes selected nodes from the node group and adds them to the parent tree
2012-06-12 08:44:46 +00:00
Lukas Toenne
caa59446ab Reroute node socket types update automatically from connections when possible. This prevents unnecessary conversions and breaking connections when linking incompatible types to the reroute color sockets (point in case: cycles shaders). 2012-06-12 08:28:25 +00:00
Lukas Toenne
edecf49d84 Fix for node 'make group' operator in combination with frame nodes. When a selected node is attached to an unselected frame, the parent pointer would end up pointing to a different ID data block. 2012-06-11 15:28:45 +00:00
Campbell Barton
5189356d58 style cleanup 2012-06-04 20:11:09 +00:00
Konrad Kleine
719b3e26e7 Added NULL-pointer check to avoid crash in node editor. Fixes #31664 2012-06-01 13:42:18 +00:00
Lukas Toenne
17935168c0 Reroute nodes, by Jeroen Bakker (patch #28443).
By holding shift and "cutting" a node link a new reroute helper node can be inserted. This consists of a single socket that can be used to insert additional connection points into a link. This can be used to keep a connection point in the tree when  deleting a node, or to control the path of long connections for layout cleanup.
2012-06-01 12:38:03 +00:00
Campbell Barton
b33f0ef0e3 style cleanup 2012-05-27 19:40:36 +00:00
Campbell Barton
dab1d8e487 style cleanup 2012-05-22 22:03:41 +00:00
Lukas Toenne
53b01d9002 A number of new features for the node editor in general and the Frame node in particular.
For an detailed user-level description of new features see the following blogpost:

http://code.blender.org/index.php/2012/05/node-editing-tweaks/

TL;DR:
* Frame node gets more usable bounding-box behavior
* Node resizing has helpful mouse cursor indicators and works on all borders
* Node selection/active colors are themeable independently
* Customizable background colors for nodes (useful for frames visual
distinction).
2012-05-22 14:13:33 +00:00
Campbell Barton
09b4d262b9 Quiet null pointer free warning/error. 2012-05-21 08:10:37 +00:00
Campbell Barton
af3e348430 code cleanup: use TRUE/FALSE rather then 1/0 for better readability, also replace do prefix with do_ for bool vars. 2012-05-19 13:28:19 +00:00
Campbell Barton
a731e13043 code cleanup: function naming, use BKE_*type* prefix. 2012-05-05 14:03:12 +00:00
Brecht Van Lommel
b2a9d012b4 Fix #31236: linking a socket of a different type to an existing node group output
would crash, did not convert default value storage correctly.
2012-05-02 15:47:15 +00:00
Campbell Barton
343edf2722 style cleanup: function calls & whitespace. 2012-04-29 17:11:40 +00:00
Campbell Barton
e701f9b670 style cleanup: whitespace / commas 2012-04-29 15:47:02 +00:00
Campbell Barton
5c89138684 style cleanup: comments 2012-04-22 11:54:53 +00:00
Campbell Barton
c9e1ced4dd code cleanup: (dont include ';' in defines), last commit also missed changes to paint_image.c 2012-03-28 01:06:43 +00:00
Campbell Barton
ab4a2aaf4a style cleanup: follow style guide for formatting of if/for/while loops, and else if's 2012-03-24 06:38:07 +00:00
Lukas Toenne
a4ffb69e3a Fix for #30627. This improves the behaviour of the internal_reconnect function for dissolving, detaching and muting nodes a bit. Instead of only linking a single, perfectly matching socket pair it now connects all outputs of a type to the first input of the same. Also if no such connections can be made it simply links the first connected input to the first connected output. This is the previous behaviour of the delete_reconnect operator (ctrl+x). 2012-03-22 16:07:41 +00:00
Bastien Montagne
7bc693d107 Big step forward nodes UI translation:
*Add menu is now translated.
*Nodes' title is now translated.
*Nodes' sockets' labels are now translated.

However, about the last point, and unless I’m mistaking, we’ll have to add the "i18n tag" N_() to all sockets' names, in the input/ouput templates declaration, in all nodes' files, as those sockets are collections created at runtime, I think po-generating script has no way to access that from bpy.types... Quite a piece of (borring) work. :/
2012-03-17 14:42:44 +00:00
Campbell Barton
ea13ec1699 Spelling Cleanup 2012-03-01 12:20:18 +00:00