2011-02-21 06:58:46 +00:00
|
|
|
/*
|
2011-11-10 11:33:57 +00:00
|
|
|
* This program is free software; you can redistribute it and/or
|
2007-03-24 06:57:29 +00:00
|
|
|
* modify it under the terms of the GNU General Public License
|
2011-11-10 11:33:57 +00:00
|
|
|
* as published by the Free Software Foundation; either version 2
|
2011-11-29 10:54:47 +00:00
|
|
|
* of the License, or (at your option) any later version.
|
2007-03-24 06:57:29 +00:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
2011-11-10 11:33:57 +00:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2007-03-24 06:57:29 +00:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2011-11-10 11:33:57 +00:00
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 13:34:04 +00:00
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2007-03-24 06:57:29 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*/
|
|
|
|
|
2019-02-18 08:08:12 +11:00
|
|
|
/** \file
|
|
|
|
* \ingroup nodes
|
2011-02-21 06:58:46 +00:00
|
|
|
*/
|
|
|
|
|
2012-02-17 18:59:41 +00:00
|
|
|
#pragma once
|
2007-03-24 06:57:29 +00:00
|
|
|
|
|
|
|
#include "BKE_node.h"
|
|
|
|
|
2020-06-30 14:01:34 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
extern struct bNodeTreeType *ntreeType_Composite;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2007-03-24 06:57:29 +00:00
|
|
|
/* ****************** types array for all composite nodes ****************** */
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
void register_node_tree_type_cmp(void);
|
2011-11-20 16:13:27 +00:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
void register_node_type_cmp_group(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_rlayers(void);
|
|
|
|
void register_node_type_cmp_image(void);
|
|
|
|
void register_node_type_cmp_texture(void);
|
|
|
|
void register_node_type_cmp_value(void);
|
|
|
|
void register_node_type_cmp_rgb(void);
|
|
|
|
void register_node_type_cmp_curve_time(void);
|
|
|
|
void register_node_type_cmp_movieclip(void);
|
2011-11-20 16:13:27 +00:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
void register_node_type_cmp_composite(void);
|
|
|
|
void register_node_type_cmp_viewer(void);
|
|
|
|
void register_node_type_cmp_splitviewer(void);
|
|
|
|
void register_node_type_cmp_output_file(void);
|
|
|
|
void register_node_type_cmp_view_levels(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_curve_rgb(void);
|
|
|
|
void register_node_type_cmp_mix_rgb(void);
|
|
|
|
void register_node_type_cmp_hue_sat(void);
|
|
|
|
void register_node_type_cmp_brightcontrast(void);
|
|
|
|
void register_node_type_cmp_gamma(void);
|
2020-12-19 14:40:31 -05:00
|
|
|
void register_node_type_cmp_exposure(void);
|
2013-03-18 16:34:57 +00:00
|
|
|
void register_node_type_cmp_invert(void);
|
|
|
|
void register_node_type_cmp_alphaover(void);
|
|
|
|
void register_node_type_cmp_zcombine(void);
|
|
|
|
void register_node_type_cmp_colorbalance(void);
|
|
|
|
void register_node_type_cmp_huecorrect(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_normal(void);
|
|
|
|
void register_node_type_cmp_curve_vec(void);
|
|
|
|
void register_node_type_cmp_map_value(void);
|
|
|
|
void register_node_type_cmp_map_range(void);
|
|
|
|
void register_node_type_cmp_normalize(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_filter(void);
|
|
|
|
void register_node_type_cmp_blur(void);
|
|
|
|
void register_node_type_cmp_dblur(void);
|
|
|
|
void register_node_type_cmp_bilateralblur(void);
|
|
|
|
void register_node_type_cmp_vecblur(void);
|
|
|
|
void register_node_type_cmp_dilateerode(void);
|
|
|
|
void register_node_type_cmp_inpaint(void);
|
|
|
|
void register_node_type_cmp_despeckle(void);
|
|
|
|
void register_node_type_cmp_defocus(void);
|
Compositor: Added denoising node
This node is built on Intel's OpenImageDenoise library.
Other denoisers could be integrated, for example Lukas' Cycles denoiser.
Compositor: Made OpenImageDenoise optional, added CMake and build_env files to find OIDN
Compositor: Fixed some warnings in the denoising operator
build_environment: Updated OpenImageDenoise to 0.8.1
build_environment: Updated OpenImageDenoise in `make deps` for macOS
Reviewers: sergey, jbakker, brecht
Reviewed By: brecht
Subscribers: YAFU, LazyDodo, Zen_YS, slumber, samgreen, tjvoll, yeus, ponomarovmax, getrad, coder.kalyan, vitos1k, Yegor, DeepBlender, kumaran7, Darkfie9825, aliasguru, aafra, ace_dragon, juang3d, pandrodor, cdog, lordodin, jtheninja, mavek, marcog, 5k1n2, Atair, rawalanche, 0o00o0oo, filibis, poor, lukasstockner97
Tags: #compositing
Differential Revision: https://developer.blender.org/D4304
2019-08-14 15:30:26 +02:00
|
|
|
void register_node_type_cmp_denoise(void);
|
2021-03-29 07:44:27 +02:00
|
|
|
void register_node_type_cmp_antialiasing(void);
|
2013-03-18 16:34:57 +00:00
|
|
|
|
|
|
|
void register_node_type_cmp_valtorgb(void);
|
|
|
|
void register_node_type_cmp_rgbtobw(void);
|
|
|
|
void register_node_type_cmp_setalpha(void);
|
|
|
|
void register_node_type_cmp_idmask(void);
|
|
|
|
void register_node_type_cmp_math(void);
|
|
|
|
void register_node_type_cmp_seprgba(void);
|
|
|
|
void register_node_type_cmp_combrgba(void);
|
|
|
|
void register_node_type_cmp_sephsva(void);
|
|
|
|
void register_node_type_cmp_combhsva(void);
|
|
|
|
void register_node_type_cmp_sepyuva(void);
|
|
|
|
void register_node_type_cmp_combyuva(void);
|
|
|
|
void register_node_type_cmp_sepycca(void);
|
|
|
|
void register_node_type_cmp_combycca(void);
|
|
|
|
void register_node_type_cmp_premulkey(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_diff_matte(void);
|
|
|
|
void register_node_type_cmp_distance_matte(void);
|
|
|
|
void register_node_type_cmp_chroma_matte(void);
|
|
|
|
void register_node_type_cmp_color_matte(void);
|
|
|
|
void register_node_type_cmp_channel_matte(void);
|
|
|
|
void register_node_type_cmp_color_spill(void);
|
|
|
|
void register_node_type_cmp_luma_matte(void);
|
|
|
|
void register_node_type_cmp_doubleedgemask(void);
|
|
|
|
void register_node_type_cmp_keyingscreen(void);
|
|
|
|
void register_node_type_cmp_keying(void);
|
2018-07-18 13:03:09 +02:00
|
|
|
void register_node_type_cmp_cryptomatte(void);
|
Compositor: Redesign Cryptomatte node for better usability
In the current implementation, cryptomatte passes are connected to the node
and elements are picked by using the eyedropper tool on a special pick channel.
This design has two disadvantages - both connecting all passes individually
and always having to switch to the picker channel are tedious.
With the new design, the user selects the RenderLayer or Image from which the
Cryptomatte layers are directly loaded (the type of pass is determined by an
enum). This allows the node to automatically detect all relevant passes.
Then, when using the eyedropper tool, the operator looks up the selected
coordinates from the picked Image, Node backdrop or Clip and reads the picked
object directly from the Renderlayer/Image, therefore allowing to pick in any
context (e.g. by clicking on the Combined pass in the Image Viewer). The
sampled color is looked up in the metadata and the actual name is stored
in the cryptomatte node. This also allows to remove a hash by just removing
the name from the matte id.
Technically there is some loss of flexibility because the Cryptomatte pass
inputs can no longer be connected to other nodes, but since any compositing
done on them is likely to break the Cryptomatte system anyways, this isn't
really a concern in practise.
In the future, this would also allow to automatically translate values to names
by looking up the value in the associated metadata of the input, or to get a
better visualization of overlapping areas in the Pick output since we could
blend colors now that the output doesn't have to contain the exact value.
Idea + Original patch: Lucas Stockner
Reviewed By: Brecht van Lommel
Differential Revision: https://developer.blender.org/D3959
2021-03-16 07:37:30 +01:00
|
|
|
void register_node_type_cmp_cryptomatte_legacy(void);
|
2013-03-18 16:34:57 +00:00
|
|
|
|
|
|
|
void register_node_type_cmp_translate(void);
|
|
|
|
void register_node_type_cmp_rotate(void);
|
|
|
|
void register_node_type_cmp_scale(void);
|
|
|
|
void register_node_type_cmp_flip(void);
|
|
|
|
void register_node_type_cmp_crop(void);
|
|
|
|
void register_node_type_cmp_displace(void);
|
|
|
|
void register_node_type_cmp_mapuv(void);
|
|
|
|
void register_node_type_cmp_transform(void);
|
|
|
|
void register_node_type_cmp_stabilize2d(void);
|
|
|
|
void register_node_type_cmp_moviedistortion(void);
|
|
|
|
void register_node_type_cmp_mask(void);
|
|
|
|
|
|
|
|
void register_node_type_cmp_glare(void);
|
|
|
|
void register_node_type_cmp_tonemap(void);
|
|
|
|
void register_node_type_cmp_lensdist(void);
|
2014-07-26 12:59:29 +02:00
|
|
|
void register_node_type_cmp_sunbeams(void);
|
2013-03-18 16:34:57 +00:00
|
|
|
|
|
|
|
void register_node_type_cmp_colorcorrection(void);
|
|
|
|
void register_node_type_cmp_boxmask(void);
|
|
|
|
void register_node_type_cmp_ellipsemask(void);
|
|
|
|
void register_node_type_cmp_bokehimage(void);
|
|
|
|
void register_node_type_cmp_bokehblur(void);
|
|
|
|
void register_node_type_cmp_switch(void);
|
2015-04-06 10:40:12 -03:00
|
|
|
void register_node_type_cmp_switch_view(void);
|
2013-03-18 16:34:57 +00:00
|
|
|
void register_node_type_cmp_pixelate(void);
|
|
|
|
void register_node_type_cmp_trackpos(void);
|
Merge plane track feature from tomato branch
This commit includes all the changes made for plane tracker
in tomato branch.
Movie clip editor changes:
- Artist might create a plane track out of multiple point
tracks which belongs to the same track (minimum amount of
point tracks is 4, maximum is not actually limited).
When new plane track is added, it's getting "tracked"
across all point tracks, which makes it stick to the same
plane point tracks belong to.
- After plane track was added, it need to be manually adjusted
in a way it covers feature one might to mask/replace.
General transform tools (G, R, S) or sliding corners with
a mouse could be sued for this. Plane corner which
corresponds to left bottom image corner has got X/Y axis
on it (red is for X axis, green for Y).
- Re-adjusting plane corners makes plane to be "re-tracked"
for the frames sequence between current frame and next
and previous keyframes.
- Kayframes might be removed from the plane, using Shit-X
(Marker Delete) operator. However, currently manual
re-adjustment or "re-track" trigger is needed.
Compositor changes:
- Added new node called Plane Track Deform.
- User selects which plane track to use (for this he need
to select movie clip datablock, object and track names).
- Node gets an image input, which need to be warped into
the plane.
- Node outputs:
* Input image warped into the plane.
* Plane, rasterized to a mask.
Masking changes:
- Mask points might be parented to a plane track, which
makes this point deforming in a way as if it belongs
to the tracked plane.
Some video tutorials are available:
- Coder video: http://www.youtube.com/watch?v=vISEwqNHqe4
- Artist video: https://vimeo.com/71727578
This is mine and Keir's holiday code project :)
2013-08-16 09:46:30 +00:00
|
|
|
void register_node_type_cmp_planetrackdeform(void);
|
2014-03-11 14:07:49 +01:00
|
|
|
void register_node_type_cmp_cornerpin(void);
|
2012-06-19 17:29:58 +00:00
|
|
|
|
Render API/Cycles: Identify Render Passes by their name instead of a type flag
Previously, every RenderPass would have a bitfield that specified its type. That limits the number of passes to 32, which was reached a while ago.
However, most of the code already supported arbitrary RenderPasses since they were also used to store Multilayer EXR images.
Therefore, this commit completely removes the passflag from RenderPass and changes all code to use the unique pass name for identification.
Since Blender Internal relies on hardcoded passes and to preserve compatibility, 32 pass names are reserved for the old hardcoded passes.
To support these arbitrary passes, the Render Result compositor node now adds dynamic sockets. For compatibility, the old hardcoded sockets are always stored and just hidden when the corresponding pass isn't available.
To use these changes, the Render Engine API now includes a function that allows render engines to add arbitrary passes to the render result. To be able to add options for these passes, addons can now add their own properties to SceneRenderLayers.
To keep the compositor input node updated, render engine plugins have to implement a callback that registers all the passes that will be generated.
From a user perspective, nothing should change with this commit.
Differential Revision: https://developer.blender.org/D2443
Differential Revision: https://developer.blender.org/D2444
2017-05-03 00:21:18 +02:00
|
|
|
void node_cmp_rlayers_outputs(struct bNodeTree *ntree, struct bNode *node);
|
2017-11-22 10:52:39 -02:00
|
|
|
void node_cmp_rlayers_register_pass(struct bNodeTree *ntree,
|
|
|
|
struct bNode *node,
|
|
|
|
struct Scene *scene,
|
|
|
|
struct ViewLayer *view_layer,
|
|
|
|
const char *name,
|
|
|
|
int type);
|
Render API/Cycles: Identify Render Passes by their name instead of a type flag
Previously, every RenderPass would have a bitfield that specified its type. That limits the number of passes to 32, which was reached a while ago.
However, most of the code already supported arbitrary RenderPasses since they were also used to store Multilayer EXR images.
Therefore, this commit completely removes the passflag from RenderPass and changes all code to use the unique pass name for identification.
Since Blender Internal relies on hardcoded passes and to preserve compatibility, 32 pass names are reserved for the old hardcoded passes.
To support these arbitrary passes, the Render Result compositor node now adds dynamic sockets. For compatibility, the old hardcoded sockets are always stored and just hidden when the corresponding pass isn't available.
To use these changes, the Render Engine API now includes a function that allows render engines to add arbitrary passes to the render result. To be able to add options for these passes, addons can now add their own properties to SceneRenderLayers.
To keep the compositor input node updated, render engine plugins have to implement a callback that registers all the passes that will be generated.
From a user perspective, nothing should change with this commit.
Differential Revision: https://developer.blender.org/D2443
Differential Revision: https://developer.blender.org/D2444
2017-05-03 00:21:18 +02:00
|
|
|
const char *node_cmp_rlayers_sock_to_pass(int sock_index);
|
2013-06-12 11:26:44 +00:00
|
|
|
|
2019-03-16 18:48:22 +01:00
|
|
|
void register_node_type_cmp_custom_group(bNodeType *ntype);
|
|
|
|
|
2020-06-30 14:01:34 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|