from main thread using job update callback.
Added new execution-time callback to bNodeTree which marks job to be updated.
The code here could be a bit not so obvious because in some cases job update
callback need to merge local tree, but it's only needed for old compositor
system which is gonna to be removed soon, so decided not to bother with
cleanup now. Removing old compositor system will also allow to drop stats_draw
callback from bNodeTree.
This should fix following bugs:
This commit makes BKE_image_acquire_ibuf referencing result, which means once
some area requested for image buffer, it'll be guaranteed this buffer wouldn't
be freed by image signal.
To de-reference buffer BKE_image_release_ibuf should now always be used.
To make referencing working correct we can not rely on result of
image_get_ibuf_threadsafe called outside from thread lock. This is so because
we need to guarantee getting image buffer from list of loaded buffers and it's
referencing happens atomic. Without lock here it is possible that between call
of image_get_ibuf_threadsafe and referencing the buffer IMA_SIGNAL_FREE would
be called. Image signal handling too is blocking now to prevent such a
situation.
Threads are locking by spinlock, which are faster than mutexes. There were some
slowdown reports in the past about render slowdown when using OSX on Xeon CPU.
It shouldn't happen with spin locks, but more tests on different hardware would
be really welcome. So far can not see speed regressions on own computers.
This commit also removes BKE_image_get_ibuf, because it was not so intuitive
when get_ibuf and acquire_ibuf should be used.
Thanks to Ton and Brecht for discussion/review :)
As it turned out, the node space was the only place we have the option to sample the backdrop buffer RGB, but not the zed.
This code is copied from image space.
Now one can use the viewer node and sample the depth while looking at the color buffer (so Map Range Node works even better)
Patch written during BlenderPRO 2012, Brasília ;)
(reviewed by Lukas Toenne)
this node allows for more control for normalization of the mapped input range.
Made during BlenderPRO 2012 - Brasilia, Brazil :)
Idea and testing: Daniel Salazar
Implementation: yours truly
Reviewed by Lukas Toenne and Sergey Sharybin
- remove double promotions
- use UI_DPI_ICON_FAC macro rather then dpi/72
- add assert to prevent creating jobs with WM_JOB_TYPE_ANY, which should only be used for finding jobs.
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)
if make group is called with only one node selected ALL the node sockets are linked to the node group
with help+review from Lukas Toenne
This patch aims towards motivating users to use Group Node to share OSL nodes
Cutting mulitple links with for inserting reroute nodes would previously insert only one reroute node for the first cut link.
Now the operator will insert a reroute node for every link in the cut line. Also, if several links share the same input/output socket, it will insert only a single reroute node, which all affected links will then share.
* Shader script node added, which stores either a link to a text datablock or
file on disk, and has functions to add and remove sockets.
* Callback RenderEngine.update_script_node(self, node) added for render engines
to compile the shader and update the node with new sockets.
Thanks to Thomas, Lukas and Dalai for the implementation.
Rationale is that the sidebar contains some extra detail settings for several node types. Many users don't seem to even know that this feature exists, so making it visible by default should be helpful.
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.
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.
As suggested by Campbell on the IRC gave grease pencil its own notifier type (NC_GPENCIL) and made the makesrna notifier functions actually update properly.
Also got the #ifdef'd GreasePencil.layers.[new/remove] functions working.
Generated and UV coordinates from the duplicator of instance instead of the
object itself.
This was used in e.g. Big Buck Bunny for texturing instanced feathers with
a UV map on the bird. Many files changed, mainly to do some refactoring to
get rid of G.rendering global in duplilist code.
so now input color space could be changed directly from the compositor.
The only unfinished thing is missed compositor update when color space is
changing. Not sure about correct fix for this yet.