2011-02-23 10:52:22 +00:00
|
|
|
/*
|
2008-12-24 10:33:10 +00:00
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
2018-06-01 18:19:39 +02:00
|
|
|
* of the License, or (at your option) any later version.
|
2008-12-24 10:33:10 +00:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* 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
|
|
|
|
* 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.
|
2008-12-24 10:33:10 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*/
|
|
|
|
|
2019-02-18 08:08:12 +11:00
|
|
|
/** \file
|
|
|
|
* \ingroup spnode
|
|
|
|
* \brief lower level node drawing for nodes (boarders, headers etc), also node layout.
|
2011-02-27 20:29:51 +00:00
|
|
|
*/
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "BLI_blenlib.h"
|
2009-11-10 20:43:45 +00:00
|
|
|
#include "BLI_math.h"
|
2019-08-27 08:13:23 -06:00
|
|
|
#include "BLI_system.h"
|
2021-01-25 12:44:18 +01:00
|
|
|
#include "BLI_threads.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
#include "DNA_node_types.h"
|
|
|
|
#include "DNA_object_types.h"
|
|
|
|
#include "DNA_screen_types.h"
|
2020-03-19 09:33:03 +01:00
|
|
|
#include "DNA_space_types.h"
|
2015-01-29 21:56:32 +11:00
|
|
|
#include "DNA_text_types.h"
|
2020-03-19 09:33:03 +01:00
|
|
|
#include "DNA_userdef_types.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "BKE_context.h"
|
2009-02-07 14:03:34 +00:00
|
|
|
#include "BKE_curve.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "BKE_image.h"
|
|
|
|
#include "BKE_main.h"
|
2011-09-05 21:01:50 +00:00
|
|
|
#include "BKE_node.h"
|
2012-06-19 17:29:58 +00:00
|
|
|
#include "BKE_tracking.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
#include "BLF_api.h"
|
2015-08-16 17:32:01 +10:00
|
|
|
#include "BLT_translation.h"
|
2012-05-22 14:13:33 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "BIF_glutil.h"
|
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
#include "GPU_batch.h"
|
2018-07-15 10:34:31 +02:00
|
|
|
#include "GPU_batch_presets.h"
|
2020-11-24 13:18:57 +01:00
|
|
|
#include "GPU_framebuffer.h"
|
2016-10-14 23:45:55 -04:00
|
|
|
#include "GPU_immediate.h"
|
2017-03-21 17:49:21 -04:00
|
|
|
#include "GPU_matrix.h"
|
2020-03-19 09:33:03 +01:00
|
|
|
#include "GPU_platform.h"
|
2018-06-27 19:07:23 -06:00
|
|
|
#include "GPU_state.h"
|
2016-10-14 23:45:55 -04:00
|
|
|
|
2020-11-24 13:18:57 +01:00
|
|
|
#include "DRW_engine.h"
|
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "RNA_access.h"
|
2013-03-18 16:34:57 +00:00
|
|
|
#include "RNA_define.h"
|
2008-12-29 00:55:23 +00:00
|
|
|
|
2010-11-06 17:55:43 +00:00
|
|
|
#include "ED_node.h"
|
2019-04-23 09:15:45 -06:00
|
|
|
#include "ED_space_api.h"
|
2010-11-06 17:55:43 +00:00
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "WM_api.h"
|
|
|
|
#include "WM_types.h"
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "UI_resources.h"
|
2016-10-14 23:45:55 -04:00
|
|
|
#include "UI_view2d.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
#include "IMB_colormanagement.h"
|
2008-12-26 18:00:38 +00:00
|
|
|
#include "IMB_imbuf_types.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
#include "NOD_composite.h"
|
2020-12-02 13:25:25 +01:00
|
|
|
#include "NOD_geometry.h"
|
2013-03-18 16:34:57 +00:00
|
|
|
#include "NOD_shader.h"
|
|
|
|
#include "NOD_texture.h"
|
2020-03-19 09:33:03 +01:00
|
|
|
#include "node_intern.h" /* own include */
|
2008-12-29 00:55:23 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
/* Default flags for uiItemR(). Name is kept short since this is used a lot in this file. */
|
|
|
|
#define DEFAULT_FLAGS UI_ITEM_R_SPLIT_EMPTY_NAME
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
/* ****************** SOCKET BUTTON DRAW FUNCTIONS ***************** */
|
|
|
|
|
2013-05-08 14:58:41 +00:00
|
|
|
static void node_socket_button_label(bContext *UNUSED(C),
|
|
|
|
uiLayout *layout,
|
|
|
|
PointerRNA *UNUSED(ptr),
|
|
|
|
PointerRNA *UNUSED(node_ptr),
|
|
|
|
const char *text)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2013-05-08 14:58:41 +00:00
|
|
|
uiItemL(layout, text, 0);
|
2012-05-02 07:18:51 +00:00
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ****************** BUTTON CALLBACKS FOR ALL TREES ***************** */
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2013-03-18 16:34:57 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
/* first output stores value */
|
|
|
|
bNodeSocket *output = node->outputs.first;
|
2009-11-11 02:15:09 +00:00
|
|
|
PointerRNA sockptr;
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_NodeSocket, output, &sockptr);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, &sockptr, "default_value", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2013-03-18 16:34:57 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
/* first output stores value */
|
|
|
|
bNodeSocket *output = node->outputs.first;
|
2009-11-11 02:15:09 +00:00
|
|
|
PointerRNA sockptr;
|
2013-03-18 16:34:57 +00:00
|
|
|
uiLayout *col;
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_NodeSocket, output, &sockptr);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, &sockptr, "default_value", 1, 0, 0, 0);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &sockptr, "default_value", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_mix_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2019-08-23 09:52:12 +02:00
|
|
|
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
uiLayout *col = uiLayoutColumn(layout, false);
|
|
|
|
uiLayout *row = uiLayoutRow(col, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "blend_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
if (ELEM(ntree->type, NTREE_COMPOSIT, NTREE_TEXTURE)) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "use_alpha", DEFAULT_FLAGS, "", ICON_IMAGE_RGB_ALPHA);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-07-10 09:12:33 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_clamp", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_time(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
|
|
|
#if 0
|
|
|
|
/* XXX no context access here .. */
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (cumap) {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag |= CUMA_DRAW_CFRA;
|
2019-05-31 23:21:16 +10:00
|
|
|
if (node->custom1 < node->custom2) {
|
2012-05-27 19:38:10 +00:00
|
|
|
cumap->sample[0] = (float)(CFRA - node->custom1) / (float)(node->custom2 - node->custom1);
|
2019-05-31 23:21:16 +10:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2018-08-23 10:25:54 +02:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "curve", 's', false, false, false, false);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
uiLayout *row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "frame_start", DEFAULT_FLAGS, IFACE_("Sta"), ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "frame_end", DEFAULT_FLAGS, IFACE_("End"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_colorramp(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-11-10 04:01:44 +00:00
|
|
|
uiTemplateColorRamp(layout, ptr, "color_ramp", 0);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_curvevec(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2018-08-23 10:25:54 +02:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "mapping", 'v', false, false, false, false);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2012-06-21 14:12:14 +00:00
|
|
|
#define SAMPLE_FLT_ISNONE FLT_MAX
|
2019-01-15 23:24:20 +11:00
|
|
|
/* bad bad, 2.5 will do better?... no it won't... */
|
|
|
|
static float _sample_col[4] = {SAMPLE_FLT_ISNONE};
|
2012-06-21 14:12:14 +00:00
|
|
|
void ED_node_sample_set(const float col[4])
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-06-21 14:12:14 +00:00
|
|
|
if (col) {
|
|
|
|
copy_v4_v4(_sample_col, col);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
copy_v4_fl(_sample_col, SAMPLE_FLT_ISNONE);
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_curvecol(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-21 14:12:14 +00:00
|
|
|
if (_sample_col[0] != SAMPLE_FLT_ISNONE) {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag |= CUMA_DRAW_SAMPLE;
|
2011-09-11 02:50:01 +00:00
|
|
|
copy_v3_v3(cumap->sample, _sample_col);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2012-06-21 14:12:14 +00:00
|
|
|
else {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag &= ~CUMA_DRAW_SAMPLE;
|
2012-06-21 14:12:14 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2021-02-05 16:23:34 +11:00
|
|
|
/* "Tone" (Standard/Film-like) only used in the Compositor. */
|
2021-01-05 16:43:59 +01:00
|
|
|
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
|
|
|
|
uiTemplateCurveMapping(
|
|
|
|
layout, ptr, "mapping", 'c', false, false, false, (ntree->type == NTREE_COMPOSIT));
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_normal(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2013-03-18 16:34:57 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
/* first output stores normal */
|
|
|
|
bNodeSocket *output = node->outputs.first;
|
2012-11-17 16:11:02 +00:00
|
|
|
PointerRNA sockptr;
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_NodeSocket, output, &sockptr);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, &sockptr, "default_value", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2013-03-18 16:34:57 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_texture(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
short multi = (node->id && ((Tex *)node->id)->use_nodes && (node->type != CMP_NODE_TEXTURE) &&
|
|
|
|
(node->type != TEX_NODE_TEXTURE));
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "texture", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (multi) {
|
2009-10-30 19:31:44 +00:00
|
|
|
/* Number Drawing not optimal here, better have a list*/
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "node_output", DEFAULT_FLAGS, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2019-12-07 12:35:07 +00:00
|
|
|
static void node_shader_buts_clamp(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2019-08-14 10:53:19 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "clamp_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-12-07 12:35:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_map_range(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "interpolation_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-12-07 12:35:07 +00:00
|
|
|
if (!ELEM(RNA_enum_get(ptr, "interpolation_type"),
|
|
|
|
NODE_MAP_RANGE_SMOOTHSTEP,
|
|
|
|
NODE_MAP_RANGE_SMOOTHERSTEP)) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "clamp", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-12-07 12:35:07 +00:00
|
|
|
}
|
2019-08-14 10:53:19 +02:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "operation", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_clamp", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
static int node_resize_area_default(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
if (node->flag & NODE_HIDDEN) {
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf totr = node->totr;
|
2011-09-05 21:01:50 +00:00
|
|
|
/* right part of node */
|
2012-05-27 19:38:10 +00:00
|
|
|
totr.xmin = node->totr.xmax - 20.0f;
|
2019-03-26 21:16:47 +11:00
|
|
|
if (BLI_rctf_isect_pt(&totr, x, y)) {
|
2012-05-22 14:13:33 +00:00
|
|
|
return NODE_RESIZE_RIGHT;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2020-07-03 17:20:08 +02:00
|
|
|
|
|
|
|
return 0;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-07-03 17:20:08 +02:00
|
|
|
const float size = NODE_RESIZE_MARGIN;
|
|
|
|
rctf totr = node->totr;
|
|
|
|
int dir = 0;
|
|
|
|
|
|
|
|
if (x >= totr.xmax - size && x < totr.xmax && y >= totr.ymin && y < totr.ymax) {
|
|
|
|
dir |= NODE_RESIZE_RIGHT;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2020-07-03 17:20:08 +02:00
|
|
|
if (x >= totr.xmin && x < totr.xmin + size && y >= totr.ymin && y < totr.ymax) {
|
|
|
|
dir |= NODE_RESIZE_LEFT;
|
|
|
|
}
|
|
|
|
return dir;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR COMMON NODES ***************** */
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_draw_buttons_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2011-11-04 13:31:15 +00:00
|
|
|
{
|
2019-11-25 19:41:30 +01:00
|
|
|
uiTemplateIDBrowse(
|
|
|
|
layout, C, ptr, "node_tree", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, NULL);
|
2011-11-04 13:31:15 +00:00
|
|
|
}
|
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* XXX Does a bounding box update by iterating over all children.
|
|
|
|
* Not ideal to do this in every draw call, but doing as transform callback doesn't work,
|
|
|
|
* since the child node totr rects are not updated properly at that point.
|
|
|
|
*/
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_draw_frame_prepare(const bContext *UNUSED(C), bNodeTree *ntree, bNode *node)
|
2012-05-22 14:13:33 +00:00
|
|
|
{
|
Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
This allows keeping UI and data without actual saves, until you actually save.
When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v).
Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards.
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
Old option is called "Save Startup File" the new one "Save User Settings".
To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
|
|
|
const float margin = 1.5f * U.widget_unit;
|
2012-05-22 14:13:33 +00:00
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* init rect from current frame size */
|
2020-09-08 15:20:07 +02:00
|
|
|
rctf rect;
|
Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
This allows keeping UI and data without actual saves, until you actually save.
When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v).
Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards.
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
Old option is called "Save Startup File" the new one "Save User Settings".
To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
|
|
|
node_to_view(node, node->offsetx, node->offsety, &rect.xmin, &rect.ymax);
|
|
|
|
node_to_view(
|
|
|
|
node, node->offsetx + node->width, node->offsety - node->height, &rect.xmax, &rect.ymin);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* frame can be resized manually only if shrinking is disabled or no children are attached */
|
|
|
|
data->flag |= NODE_FRAME_RESIZEABLE;
|
|
|
|
/* for shrinking bbox, initialize the rect from first child node */
|
2020-09-08 15:20:07 +02:00
|
|
|
bool bbinit = (data->flag & NODE_FRAME_SHRINK);
|
2012-05-22 14:13:33 +00:00
|
|
|
/* fit bounding box to all children */
|
2020-09-08 15:20:07 +02:00
|
|
|
LISTBASE_FOREACH (bNode *, tnode, &ntree->nodes) {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (tnode->parent != node) {
|
2012-05-22 14:13:33 +00:00
|
|
|
continue;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* add margin to node rect */
|
2020-09-08 15:20:07 +02:00
|
|
|
rctf noderect = tnode->totr;
|
2012-05-22 14:13:33 +00:00
|
|
|
noderect.xmin -= margin;
|
|
|
|
noderect.xmax += margin;
|
|
|
|
noderect.ymin -= margin;
|
|
|
|
noderect.ymax += margin;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* first child initializes frame */
|
|
|
|
if (bbinit) {
|
|
|
|
bbinit = 0;
|
|
|
|
rect = noderect;
|
|
|
|
data->flag &= ~NODE_FRAME_RESIZEABLE;
|
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
else {
|
2012-07-15 00:29:56 +00:00
|
|
|
BLI_rctf_union(&rect, &noderect);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* now adjust the frame size from view-space bounding box */
|
Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
This allows keeping UI and data without actual saves, until you actually save.
When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v).
Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards.
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
Old option is called "Save Startup File" the new one "Save User Settings".
To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
|
|
|
node_from_view(node, rect.xmin, rect.ymax, &node->offsetx, &node->offsety);
|
2020-09-08 15:20:07 +02:00
|
|
|
float xmax, ymax;
|
Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
This allows keeping UI and data without actual saves, until you actually save.
When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v).
Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards.
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
Old option is called "Save Startup File" the new one "Save User Settings".
To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
|
|
|
node_from_view(node, rect.xmax, rect.ymin, &xmax, &ymax);
|
2012-05-22 14:13:33 +00:00
|
|
|
node->width = xmax - node->offsetx;
|
|
|
|
node->height = -ymax + node->offsety;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
node->totr = rect;
|
|
|
|
}
|
|
|
|
|
2013-11-12 18:18:04 +00:00
|
|
|
static void node_draw_frame_label(bNodeTree *ntree, bNode *node, const float aspect)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-22 14:13:33 +00:00
|
|
|
/* XXX font id is crap design */
|
2014-11-09 21:20:40 +01:00
|
|
|
const int fontid = UI_style_get()->widgetlabel.uifont_id;
|
2012-05-22 14:13:33 +00:00
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
2012-07-09 16:26:01 +00:00
|
|
|
const int font_size = data->label_size / aspect;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
char label[MAX_NAME];
|
2013-11-12 18:18:04 +00:00
|
|
|
nodeLabel(ntree, node, label, sizeof(label));
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-07-09 16:06:44 +00:00
|
|
|
BLF_enable(fontid, BLF_ASPECT);
|
2012-07-09 16:26:01 +00:00
|
|
|
BLF_aspect(fontid, aspect, aspect, 1.0f);
|
2019-01-15 23:24:20 +11:00
|
|
|
/* clamp otherwise it can suck up a LOT of memory */
|
|
|
|
BLF_size(fontid, MIN2(24, font_size), U.dpi);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* title color */
|
2020-09-08 15:20:07 +02:00
|
|
|
int color_id = node_get_colorid(node);
|
|
|
|
uchar color[3];
|
2017-02-21 22:17:47 -03:00
|
|
|
UI_GetThemeColorBlendShade3ubv(TH_TEXT, color_id, 0.4f, 10, color);
|
|
|
|
BLF_color3ubv(fontid, color);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const float margin = (float)(NODE_DY / 4);
|
|
|
|
const float width = BLF_width(fontid, label, sizeof(label));
|
|
|
|
const float ascender = BLF_ascender(fontid);
|
|
|
|
const int label_height = ((margin / aspect) + (ascender * aspect));
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-07-09 16:26:01 +00:00
|
|
|
/* 'x' doesn't need aspect correction */
|
2020-09-08 15:20:07 +02:00
|
|
|
rctf *rct = &node->totr;
|
|
|
|
/* XXX a bit hacky, should use separate align values for x and y */
|
|
|
|
float x = BLI_rctf_cent_x(rct) - (0.5f * width);
|
|
|
|
float y = rct->ymax - label_height;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
BLF_position(fontid, x, y, 0);
|
|
|
|
BLF_draw(fontid, label, BLF_DRAW_STR_DUMMY_MAX);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-01-29 21:56:32 +11:00
|
|
|
/* draw text body */
|
|
|
|
if (node->id) {
|
|
|
|
Text *text = (Text *)node->id;
|
2015-09-20 17:48:39 +10:00
|
|
|
const int line_height_max = BLF_height_max(fontid);
|
|
|
|
const float line_spacing = (line_height_max * aspect);
|
|
|
|
const float line_width = (BLI_rctf_size_x(rct) - margin) / aspect;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-01-29 21:56:32 +11:00
|
|
|
/* 'x' doesn't need aspect correction */
|
|
|
|
x = rct->xmin + margin;
|
2015-09-20 17:48:39 +10:00
|
|
|
y = rct->ymax - (label_height + line_spacing);
|
|
|
|
/* early exit */
|
2020-09-08 15:20:07 +02:00
|
|
|
int y_min = y + ((margin * 2) - (y - rct->ymin));
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-09-20 17:48:39 +10:00
|
|
|
BLF_enable(fontid, BLF_CLIPPING | BLF_WORD_WRAP);
|
2015-01-29 21:56:32 +11:00
|
|
|
BLF_clipping(fontid,
|
|
|
|
rct->xmin,
|
2015-09-20 17:48:39 +10:00
|
|
|
/* round to avoid clipping half-way through a line */
|
|
|
|
y - (floorf(((y - rct->ymin) - (margin * 2)) / line_spacing) * line_spacing),
|
|
|
|
rct->xmin + line_width,
|
2015-01-29 21:56:32 +11:00
|
|
|
rct->ymax);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-09-20 17:48:39 +10:00
|
|
|
BLF_wordwrap(fontid, line_width);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
LISTBASE_FOREACH (TextLine *, line, &text->lines) {
|
2015-09-20 17:48:39 +10:00
|
|
|
struct ResultBLF info;
|
2016-02-19 09:22:26 +11:00
|
|
|
if (line->line[0]) {
|
|
|
|
BLF_position(fontid, x, y, 0);
|
|
|
|
BLF_draw_ex(fontid, line->line, line->len, &info);
|
|
|
|
y -= line_spacing * info.lines;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
y -= line_spacing;
|
|
|
|
}
|
2015-09-20 17:48:39 +10:00
|
|
|
if (y < y_min) {
|
2015-01-29 21:56:32 +11:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2015-01-29 21:56:32 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-09-20 17:48:39 +10:00
|
|
|
BLF_disable(fontid, BLF_CLIPPING | BLF_WORD_WRAP);
|
2015-01-29 21:56:32 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-07-09 16:06:44 +00:00
|
|
|
BLF_disable(fontid, BLF_ASPECT);
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
static void node_draw_frame(const bContext *C,
|
2020-03-06 16:56:42 +01:00
|
|
|
ARegion *region,
|
2013-03-18 16:34:57 +00:00
|
|
|
SpaceNode *snode,
|
2013-11-12 18:18:04 +00:00
|
|
|
bNodeTree *ntree,
|
|
|
|
bNode *node,
|
|
|
|
bNodeInstanceKey UNUSED(key))
|
2012-05-22 14:13:33 +00:00
|
|
|
{
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* skip if out of view */
|
2020-03-06 16:56:42 +01:00
|
|
|
if (BLI_rctf_isect(&node->totr, ®ion->v2d.cur, NULL) == false) {
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_end(C, node->block);
|
2012-05-27 19:38:10 +00:00
|
|
|
node->block = NULL;
|
2012-05-22 14:13:33 +00:00
|
|
|
return;
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
float color[4];
|
2016-10-07 14:56:08 -04:00
|
|
|
UI_GetThemeColor4fv(TH_NODE_FRAME, color);
|
2020-09-08 15:20:07 +02:00
|
|
|
const float alpha = color[3];
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* shadow */
|
2012-06-01 14:42:21 +00:00
|
|
|
node_draw_shadow(snode, node, BASIS_RAD, alpha);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* body */
|
2016-11-14 20:04:59 -05:00
|
|
|
if (node->flag & NODE_CUSTOM_COLOR) {
|
|
|
|
rgba_float_args_set(color, node->color[0], node->color[1], node->color[2], alpha);
|
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
else {
|
2016-11-14 20:04:59 -05:00
|
|
|
UI_GetThemeColor4fv(TH_NODE_FRAME, color);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const rctf *rct = &node->totr;
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_draw_roundbox_corner_set(UI_CNR_ALL);
|
2021-01-25 18:31:11 +11:00
|
|
|
UI_draw_roundbox_aa(rct, true, BASIS_RAD, color);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* outline active and selected emphasis */
|
2012-08-01 09:44:25 +00:00
|
|
|
if (node->flag & SELECT) {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (node->flag & NODE_ACTIVE) {
|
2016-10-07 14:56:08 -04:00
|
|
|
UI_GetThemeColorShadeAlpha4fv(TH_ACTIVE, 0, -40, color);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
else {
|
2016-10-07 14:56:08 -04:00
|
|
|
UI_GetThemeColorShadeAlpha4fv(TH_SELECT, 0, -40, color);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-01-25 18:31:11 +11:00
|
|
|
UI_draw_roundbox_aa(rct, false, BASIS_RAD, color);
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* label */
|
2021-05-07 17:12:30 +02:00
|
|
|
if (node->label[0] != '\0') {
|
|
|
|
node_draw_frame_label(ntree, node, snode->runtime->aspect);
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_end(C, node->block);
|
|
|
|
UI_block_draw(C, node->block);
|
2012-05-27 19:38:10 +00:00
|
|
|
node->block = NULL;
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
static int node_resize_area_frame(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
const float size = 10.0f;
|
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf totr = node->totr;
|
2012-05-22 14:13:33 +00:00
|
|
|
int dir = 0;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* shrinking frame size is determined by child nodes */
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!(data->flag & NODE_FRAME_RESIZEABLE)) {
|
2012-05-22 14:13:33 +00:00
|
|
|
return 0;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (x >= totr.xmax - size && x < totr.xmax && y >= totr.ymin && y < totr.ymax) {
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_RIGHT;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
if (x >= totr.xmin && x < totr.xmin + size && y >= totr.ymin && y < totr.ymax) {
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_LEFT;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
if (x >= totr.xmin && x < totr.xmax && y >= totr.ymax - size && y < totr.ymax) {
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_TOP;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
if (x >= totr.xmin && x < totr.xmax && y >= totr.ymin && y < totr.ymin + size) {
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_BOTTOM;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
return dir;
|
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_buts_frame_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2012-05-22 14:13:33 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "label_size", DEFAULT_FLAGS, IFACE_("Label Size"), ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "shrink", DEFAULT_FLAGS, IFACE_("Shrink"), ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "text", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
#define NODE_REROUTE_SIZE 8.0f
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_draw_reroute_prepare(const bContext *UNUSED(C),
|
|
|
|
bNodeTree *UNUSED(ntree),
|
|
|
|
bNode *node)
|
2012-06-01 12:38:03 +00:00
|
|
|
{
|
|
|
|
/* get "global" coords */
|
2020-09-08 15:20:07 +02:00
|
|
|
float locx, locy;
|
Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
This allows keeping UI and data without actual saves, until you actually save.
When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v).
Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards.
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
Old option is called "Save Startup File" the new one "Save User Settings".
To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
|
|
|
node_to_view(node, 0.0f, 0.0f, &locx, &locy);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
/* reroute node has exactly one input and one output, both in the same place */
|
2020-09-08 15:20:07 +02:00
|
|
|
bNodeSocket *nsock = node->outputs.first;
|
2012-07-09 23:07:15 +00:00
|
|
|
nsock->locx = locx;
|
|
|
|
nsock->locy = locy;
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
nsock = node->inputs.first;
|
|
|
|
nsock->locx = locx;
|
|
|
|
nsock->locy = locy;
|
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const float size = NODE_REROUTE_SIZE;
|
2012-07-09 23:07:15 +00:00
|
|
|
node->width = size * 2;
|
|
|
|
node->totr.xmin = locx - size;
|
|
|
|
node->totr.xmax = locx + size;
|
|
|
|
node->totr.ymax = locy + size;
|
|
|
|
node->totr.ymin = locy - size;
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
static void node_draw_reroute(const bContext *C,
|
2020-03-06 16:56:42 +01:00
|
|
|
ARegion *region,
|
2013-03-18 16:34:57 +00:00
|
|
|
SpaceNode *UNUSED(snode),
|
|
|
|
bNodeTree *ntree,
|
|
|
|
bNode *node,
|
|
|
|
bNodeInstanceKey UNUSED(key))
|
2012-06-01 12:38:03 +00:00
|
|
|
{
|
2013-01-22 21:35:33 +00:00
|
|
|
char showname[128]; /* 128 used below */
|
2012-07-09 23:07:15 +00:00
|
|
|
rctf *rct = &node->totr;
|
2013-01-22 21:35:33 +00:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
/* skip if out of view */
|
2020-03-06 16:56:42 +01:00
|
|
|
if (node->totr.xmax < region->v2d.cur.xmin || node->totr.xmin > region->v2d.cur.xmax ||
|
|
|
|
node->totr.ymax < region->v2d.cur.ymin || node->totr.ymin > region->v2d.cur.ymax) {
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_end(C, node->block);
|
2012-07-09 23:07:15 +00:00
|
|
|
node->block = NULL;
|
2012-06-01 12:38:03 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* XXX only kept for debugging
|
|
|
|
* selection state is indicated by socket outline below!
|
|
|
|
*/
|
2012-06-17 09:58:26 +00:00
|
|
|
#if 0
|
2017-03-15 11:51:06 +01:00
|
|
|
float size = NODE_REROUTE_SIZE;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
/* body */
|
2017-03-15 11:51:06 +01:00
|
|
|
float debug_color[4];
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_draw_roundbox_corner_set(UI_CNR_ALL);
|
2017-03-15 11:51:06 +01:00
|
|
|
UI_GetThemeColor4fv(TH_NODE, debug_color);
|
2017-04-06 19:15:26 -04:00
|
|
|
UI_draw_roundbox_aa(true, rct->xmin, rct->ymin, rct->xmax, rct->ymax, size, debug_color);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
/* outline active and selected emphasis */
|
2012-08-03 11:39:34 +00:00
|
|
|
if (node->flag & SELECT) {
|
2020-08-16 15:38:34 +02:00
|
|
|
GPU_blend(GPU_BLEND_ALPHA);
|
2018-06-27 19:07:23 -06:00
|
|
|
GPU_line_smooth(true);
|
2021-02-05 16:23:34 +11:00
|
|
|
/* Using different shades of #TH_TEXT_HI for the emphasis, like triangle. */
|
2017-03-15 11:51:06 +01:00
|
|
|
if (node->flag & NODE_ACTIVE) {
|
|
|
|
UI_GetThemeColorShadeAlpha4fv(TH_TEXT_HI, 0, -40, debug_color);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
UI_GetThemeColorShadeAlpha4fv(TH_TEXT_HI, -20, -120, debug_color);
|
|
|
|
}
|
2017-04-06 19:15:26 -04:00
|
|
|
UI_draw_roundbox_4fv(false, rct->xmin, rct->ymin, rct->xmax, rct->ymax, size, debug_color);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-06-27 19:07:23 -06:00
|
|
|
GPU_line_smooth(false);
|
2020-08-16 15:38:34 +02:00
|
|
|
GPU_blend(GPU_BLEND_NONE);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
2012-06-17 09:58:26 +00:00
|
|
|
#endif
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2013-01-22 21:35:33 +00:00
|
|
|
if (node->label[0] != '\0') {
|
|
|
|
/* draw title (node label) */
|
|
|
|
BLI_strncpy(showname, node->label, sizeof(showname));
|
2014-11-09 21:20:40 +01:00
|
|
|
uiDefBut(node->block,
|
|
|
|
UI_BTYPE_LABEL,
|
|
|
|
0,
|
|
|
|
showname,
|
2013-01-23 23:42:18 +00:00
|
|
|
(int)(rct->xmin - NODE_DYS),
|
|
|
|
(int)(rct->ymax),
|
|
|
|
(short)512,
|
|
|
|
(short)NODE_DY,
|
|
|
|
NULL,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
NULL);
|
2013-01-22 21:35:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
/* only draw input socket. as they all are placed on the same position.
|
|
|
|
* highlight also if node itself is selected, since we don't display the node body separately!
|
|
|
|
*/
|
2020-03-06 16:56:42 +01:00
|
|
|
node_draw_sockets(®ion->v2d, C, ntree, node, false, node->flag & SELECT);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_end(C, node->block);
|
|
|
|
UI_block_draw(C, node->block);
|
2012-07-09 23:07:15 +00:00
|
|
|
node->block = NULL;
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Special tweak area for reroute node.
|
|
|
|
* Since this node is quite small, we use a larger tweak area for grabbing than for selection.
|
|
|
|
*/
|
|
|
|
static int node_tweak_area_reroute(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
/* square of tweak radius */
|
2020-03-06 17:18:10 +01:00
|
|
|
const float tweak_radius_sq = square_f(24.0f);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
bNodeSocket *sock = node->inputs.first;
|
|
|
|
float dx = sock->locx - x;
|
|
|
|
float dy = sock->locy - y;
|
2012-07-09 23:07:15 +00:00
|
|
|
return (dx * dx + dy * dy <= tweak_radius_sq);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
static void node_common_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2011-09-05 21:01:50 +00:00
|
|
|
case NODE_GROUP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_draw_buttons_group;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
|
|
|
case NODE_FRAME:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_nodetype = node_draw_frame;
|
|
|
|
ntype->draw_nodetype_prepare = node_draw_frame_prepare;
|
|
|
|
ntype->draw_buttons_ex = node_buts_frame_ex;
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->resize_area_func = node_resize_area_frame;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
2012-06-01 12:38:03 +00:00
|
|
|
case NODE_REROUTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_nodetype = node_draw_reroute;
|
|
|
|
ntype->draw_nodetype_prepare = node_draw_reroute_prepare;
|
2012-07-09 23:07:15 +00:00
|
|
|
ntype->tweak_area_func = node_tweak_area_reroute;
|
2012-06-01 12:38:03 +00:00
|
|
|
break;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ****************** BUTTON CALLBACKS FOR SHADER NODES ***************** */
|
2012-06-04 19:38:33 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
static void node_buts_image_user(uiLayout *layout,
|
|
|
|
bContext *C,
|
|
|
|
PointerRNA *ptr,
|
2018-01-26 08:39:38 +01:00
|
|
|
PointerRNA *imaptr,
|
|
|
|
PointerRNA *iuserptr,
|
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
|
|
|
const bool show_layer_selection,
|
|
|
|
const bool show_color_management)
|
2012-06-04 19:38:33 +00:00
|
|
|
{
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!imaptr->data) {
|
2012-06-04 19:38:33 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-06-04 19:38:33 +00:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
uiLayout *col = uiLayoutColumn(layout, false);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, imaptr, "source", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const int source = RNA_enum_get(imaptr, "source");
|
2012-06-04 19:38:33 +00:00
|
|
|
|
|
|
|
if (source == IMA_SRC_SEQUENCE) {
|
2019-01-15 23:24:20 +11:00
|
|
|
/* don't use iuser->framenr directly
|
|
|
|
* because it may not be updated if auto-refresh is off */
|
2012-06-04 19:38:33 +00:00
|
|
|
Scene *scene = CTX_data_scene(C);
|
|
|
|
ImageUser *iuser = iuserptr->data;
|
2014-01-21 12:27:38 +11:00
|
|
|
/* Image *ima = imaptr->data; */ /* UNUSED */
|
2014-01-20 18:54:03 +01:00
|
|
|
|
2012-06-04 19:38:33 +00:00
|
|
|
char numstr[32];
|
2018-09-10 14:05:33 +10:00
|
|
|
const int framenr = BKE_image_user_frame_get(iuser, CFRA, NULL);
|
2012-06-04 19:38:33 +00:00
|
|
|
BLI_snprintf(numstr, sizeof(numstr), IFACE_("Frame: %d"), framenr);
|
|
|
|
uiItemL(layout, numstr, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ELEM(source, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE)) {
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "frame_duration", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "frame_start", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "frame_offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_cyclic", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_auto_refresh", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
|
|
|
|
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
|
|
|
if (show_layer_selection && RNA_enum_get(imaptr, "type") == IMA_TYPE_MULTILAYER &&
|
2015-04-06 10:40:12 -03:00
|
|
|
RNA_boolean_get(ptr, "has_layers")) {
|
2015-02-09 23:11:30 +01:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "layer", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2015-02-09 23:11:30 +01:00
|
|
|
}
|
2019-04-23 13:56:30 +02:00
|
|
|
|
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
|
|
|
if (show_color_management) {
|
|
|
|
uiLayout *split = uiLayoutSplit(layout, 0.5f, true);
|
|
|
|
PointerRNA colorspace_settings_ptr = RNA_pointer_get(imaptr, "colorspace_settings");
|
|
|
|
uiItemL(split, IFACE_("Color Space"), ICON_NONE);
|
|
|
|
uiItemR(split, &colorspace_settings_ptr, "name", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-05-22 10:06:31 +02:00
|
|
|
|
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
|
|
|
/* Avoid losing changes image is painted. */
|
|
|
|
if (BKE_image_is_dirty(imaptr->data)) {
|
|
|
|
uiLayoutSetEnabled(split, false);
|
|
|
|
}
|
2019-05-22 10:06:31 +02:00
|
|
|
}
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "vector_type", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2020-02-17 15:15:46 +00:00
|
|
|
static void node_shader_buts_vector_rotate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "rotation_type", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "invert", DEFAULT_FLAGS, NULL, 0);
|
2020-02-17 15:15:46 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_shader_buts_vect_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "operation", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2013-07-31 21:18:23 +00:00
|
|
|
static void node_shader_buts_vect_transform(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "vector_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "convert_from", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "convert_to", DEFAULT_FLAGS, "", ICON_NONE);
|
2013-07-31 21:18:23 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
Materials: add custom object properties as uniform attributes.
This patch allows the user to type a property name into the
Attribute node, which will then output the value of the property
for each individual object, allowing to e.g. customize shaders
by object without duplicating the shader.
In order to make supporting this easier for Eevee, it is necessary
to explicitly choose whether the attribute is varying or uniform
via a dropdown option of the Attribute node. The dropdown also
allows choosing whether instancing should be taken into account.
The Cycles design treats all attributes as one common namespace,
so the Blender interface converts the enum to a name prefix that
can't be entered using keyboard.
In Eevee, the attributes are provided to the shader via a UBO indexed
with resource_id, similar to the existing Object Info data. Unlike it,
however, it is necessary to maintain a separate buffer for every
requested combination of attributes.
This is done using a hash table with the attribute set as the key,
as it is expected that technically different but similar materials
may use the same set of attributes. In addition, in order to minimize
wasted memory, a sparse UBO pool is implemented, so that chunks that
don't contain any data don't have to be allocated.
The back-end Cycles code is already refactored and committed by Brecht.
Differential Revision: https://developer.blender.org/D2057
2020-08-05 19:14:40 +03:00
|
|
|
uiItemR(layout, ptr, "attribute_type", DEFAULT_FLAGS, IFACE_("Type"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "attribute_name", DEFAULT_FLAGS, IFACE_("Name"), ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
2013-05-20 15:58:37 +00:00
|
|
|
static void node_shader_buts_wireframe(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_pixel_size", DEFAULT_FLAGS, NULL, 0);
|
2013-05-20 15:58:37 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_tex_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-06-04 19:38:33 +00:00
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
|
|
|
|
2014-01-20 18:54:03 +01:00
|
|
|
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
2018-07-31 10:22:19 +02:00
|
|
|
uiTemplateID(layout,
|
|
|
|
C,
|
|
|
|
ptr,
|
|
|
|
"image",
|
|
|
|
"IMAGE_OT_new",
|
|
|
|
"IMAGE_OT_open",
|
|
|
|
NULL,
|
|
|
|
UI_TEMPLATE_ID_FILTER_ALL,
|
2019-11-25 19:41:30 +01:00
|
|
|
false,
|
|
|
|
NULL);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "interpolation", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "projection", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-09-04 13:29:07 +00:00
|
|
|
|
2012-09-08 06:40:03 +00:00
|
|
|
if (RNA_enum_get(ptr, "projection") == SHD_PROJ_BOX) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "projection_blend", DEFAULT_FLAGS, "Blend", ICON_NONE);
|
2012-09-08 06:40:03 +00:00
|
|
|
}
|
2011-11-08 11:38:16 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "extension", DEFAULT_FLAGS, "", ICON_NONE);
|
2015-07-21 22:09:52 +02:00
|
|
|
|
2012-07-02 16:27:09 +00:00
|
|
|
/* note: image user properties used directly here, unlike compositor image node,
|
|
|
|
* which redefines them in the node struct RNA to get proper updates.
|
|
|
|
*/
|
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
|
|
|
node_buts_image_user(layout, C, &iuserptr, &imaptr, &iuserptr, false, true);
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
2012-03-08 19:52:58 +00:00
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_shader_buts_tex_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2013-07-22 08:56:51 +00:00
|
|
|
{
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
2015-06-13 14:04:39 -03:00
|
|
|
uiTemplateImage(layout, C, ptr, "image", &iuserptr, 0, 0);
|
2013-07-22 08:56:51 +00:00
|
|
|
}
|
|
|
|
|
2012-03-08 19:52:58 +00:00
|
|
|
static void node_shader_buts_tex_environment(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-06-04 19:38:33 +00:00
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
|
|
|
|
2014-01-20 18:54:03 +01:00
|
|
|
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
2018-01-03 21:54:02 +11:00
|
|
|
uiTemplateID(layout,
|
|
|
|
C,
|
|
|
|
ptr,
|
|
|
|
"image",
|
2018-07-31 10:22:19 +02:00
|
|
|
"IMAGE_OT_new",
|
|
|
|
"IMAGE_OT_open",
|
|
|
|
NULL,
|
|
|
|
UI_TEMPLATE_ID_FILTER_ALL,
|
2019-11-25 19:41:30 +01:00
|
|
|
false,
|
|
|
|
NULL);
|
2012-06-04 19:38:33 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "interpolation", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "projection", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-04-23 13:56:30 +02:00
|
|
|
|
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
|
|
|
node_buts_image_user(layout, C, &iuserptr, &imaptr, &iuserptr, false, true);
|
2012-03-08 19:52:58 +00:00
|
|
|
}
|
|
|
|
|
2015-02-09 22:25:12 +01:00
|
|
|
static void node_shader_buts_tex_environment_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
2019-10-04 14:58:40 +02:00
|
|
|
uiTemplateImage(layout, C, ptr, "image", &iuserptr, 0, 0);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "interpolation", DEFAULT_FLAGS, IFACE_("Interpolation"), ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "projection", DEFAULT_FLAGS, IFACE_("Projection"), ICON_NONE);
|
2015-02-09 22:25:12 +01:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_tex_sky(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "sky_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2016-04-05 12:25:54 +02:00
|
|
|
|
Cycles: Add new Sky Texture method including direct sunlight
This commit adds a new model to the Sky Texture node, which is based on a
method by Nishita et al. and works by basically simulating volumetric
scattering in the atmosphere.
By making some approximations (such as only considering single scattering),
we get a fairly simple and fast simulation code that takes into account
Rayleigh and Mie scattering as well as Ozone absorption.
This code is used to precompute a 512x128 texture which is then looked up
during render time, and is fast enough to allow real-time tweaking in the
viewport.
Due to the nature of the simulation, it exposes several parameters that
allow for lots of flexibility in choosing the look and matching real-world
conditions (such as Air/Dust/Ozone density and altitude).
Additionally, the same volumetric approach can be used to compute absorption
of the direct sunlight, so the model also supports adding direct sunlight.
This makes it significantly easier to set up Sun+Sky illumination where
the direction, intensity and color of the sun actually matches the sky.
In order to support properly sampling the direct sun component, the commit
also adds logic for sampling a specific area to the kernel light sampling
code. This is combined with portal and background map sampling using MIS.
This sampling logic works for the common case of having one Sky texture
going into the Background shader, but if a custom input to the Vector
node is used or if there are multiple Sky textures, it falls back to using
only background map sampling (while automatically setting the resolution to
4096x2048 if auto resolution is used).
More infos and preview can be found here:
https://docs.google.com/document/d/1gQta0ygFWXTrl5Pmvl_nZRgUw0mWg0FJeRuNKS36m08/view
Underlying model, implementation and documentation by Marco (@nacioss).
Improvements, cleanup and sun sampling by @lukasstockner.
Differential Revision: https://developer.blender.org/D7896
2020-06-17 20:27:10 +02:00
|
|
|
if (RNA_enum_get(ptr, "sky_type") == SHD_SKY_PREETHAM) {
|
|
|
|
uiItemR(layout, ptr, "sun_direction", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "turbidity", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
if (RNA_enum_get(ptr, "sky_type") == SHD_SKY_HOSEK) {
|
|
|
|
uiItemR(layout, ptr, "sun_direction", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "turbidity", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "ground_albedo", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
Cycles: Add new Sky Texture method including direct sunlight
This commit adds a new model to the Sky Texture node, which is based on a
method by Nishita et al. and works by basically simulating volumetric
scattering in the atmosphere.
By making some approximations (such as only considering single scattering),
we get a fairly simple and fast simulation code that takes into account
Rayleigh and Mie scattering as well as Ozone absorption.
This code is used to precompute a 512x128 texture which is then looked up
during render time, and is fast enough to allow real-time tweaking in the
viewport.
Due to the nature of the simulation, it exposes several parameters that
allow for lots of flexibility in choosing the look and matching real-world
conditions (such as Air/Dust/Ozone density and altitude).
Additionally, the same volumetric approach can be used to compute absorption
of the direct sunlight, so the model also supports adding direct sunlight.
This makes it significantly easier to set up Sun+Sky illumination where
the direction, intensity and color of the sun actually matches the sky.
In order to support properly sampling the direct sun component, the commit
also adds logic for sampling a specific area to the kernel light sampling
code. This is combined with portal and background map sampling using MIS.
This sampling logic works for the common case of having one Sky texture
going into the Background shader, but if a custom input to the Vector
node is used or if there are multiple Sky textures, it falls back to using
only background map sampling (while automatically setting the resolution to
4096x2048 if auto resolution is used).
More infos and preview can be found here:
https://docs.google.com/document/d/1gQta0ygFWXTrl5Pmvl_nZRgUw0mWg0FJeRuNKS36m08/view
Underlying model, implementation and documentation by Marco (@nacioss).
Improvements, cleanup and sun sampling by @lukasstockner.
Differential Revision: https://developer.blender.org/D7896
2020-06-17 20:27:10 +02:00
|
|
|
if (RNA_enum_get(ptr, "sky_type") == SHD_SKY_NISHITA) {
|
|
|
|
uiItemR(layout, ptr, "sun_disc", DEFAULT_FLAGS, NULL, 0);
|
|
|
|
|
2020-07-13 01:49:25 +02:00
|
|
|
uiLayout *col;
|
Cycles: Add new Sky Texture method including direct sunlight
This commit adds a new model to the Sky Texture node, which is based on a
method by Nishita et al. and works by basically simulating volumetric
scattering in the atmosphere.
By making some approximations (such as only considering single scattering),
we get a fairly simple and fast simulation code that takes into account
Rayleigh and Mie scattering as well as Ozone absorption.
This code is used to precompute a 512x128 texture which is then looked up
during render time, and is fast enough to allow real-time tweaking in the
viewport.
Due to the nature of the simulation, it exposes several parameters that
allow for lots of flexibility in choosing the look and matching real-world
conditions (such as Air/Dust/Ozone density and altitude).
Additionally, the same volumetric approach can be used to compute absorption
of the direct sunlight, so the model also supports adding direct sunlight.
This makes it significantly easier to set up Sun+Sky illumination where
the direction, intensity and color of the sun actually matches the sky.
In order to support properly sampling the direct sun component, the commit
also adds logic for sampling a specific area to the kernel light sampling
code. This is combined with portal and background map sampling using MIS.
This sampling logic works for the common case of having one Sky texture
going into the Background shader, but if a custom input to the Vector
node is used or if there are multiple Sky textures, it falls back to using
only background map sampling (while automatically setting the resolution to
4096x2048 if auto resolution is used).
More infos and preview can be found here:
https://docs.google.com/document/d/1gQta0ygFWXTrl5Pmvl_nZRgUw0mWg0FJeRuNKS36m08/view
Underlying model, implementation and documentation by Marco (@nacioss).
Improvements, cleanup and sun sampling by @lukasstockner.
Differential Revision: https://developer.blender.org/D7896
2020-06-17 20:27:10 +02:00
|
|
|
if (RNA_boolean_get(ptr, "sun_disc")) {
|
2020-07-13 01:49:25 +02:00
|
|
|
col = uiLayoutColumn(layout, true);
|
|
|
|
uiItemR(col, ptr, "sun_size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sun_intensity", DEFAULT_FLAGS, NULL, ICON_NONE);
|
Cycles: Add new Sky Texture method including direct sunlight
This commit adds a new model to the Sky Texture node, which is based on a
method by Nishita et al. and works by basically simulating volumetric
scattering in the atmosphere.
By making some approximations (such as only considering single scattering),
we get a fairly simple and fast simulation code that takes into account
Rayleigh and Mie scattering as well as Ozone absorption.
This code is used to precompute a 512x128 texture which is then looked up
during render time, and is fast enough to allow real-time tweaking in the
viewport.
Due to the nature of the simulation, it exposes several parameters that
allow for lots of flexibility in choosing the look and matching real-world
conditions (such as Air/Dust/Ozone density and altitude).
Additionally, the same volumetric approach can be used to compute absorption
of the direct sunlight, so the model also supports adding direct sunlight.
This makes it significantly easier to set up Sun+Sky illumination where
the direction, intensity and color of the sun actually matches the sky.
In order to support properly sampling the direct sun component, the commit
also adds logic for sampling a specific area to the kernel light sampling
code. This is combined with portal and background map sampling using MIS.
This sampling logic works for the common case of having one Sky texture
going into the Background shader, but if a custom input to the Vector
node is used or if there are multiple Sky textures, it falls back to using
only background map sampling (while automatically setting the resolution to
4096x2048 if auto resolution is used).
More infos and preview can be found here:
https://docs.google.com/document/d/1gQta0ygFWXTrl5Pmvl_nZRgUw0mWg0FJeRuNKS36m08/view
Underlying model, implementation and documentation by Marco (@nacioss).
Improvements, cleanup and sun sampling by @lukasstockner.
Differential Revision: https://developer.blender.org/D7896
2020-06-17 20:27:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, true);
|
|
|
|
uiItemR(col, ptr, "sun_elevation", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sun_rotation", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
uiItemR(layout, ptr, "altitude", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, true);
|
|
|
|
uiItemR(col, ptr, "air_density", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "dust_density", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "ozone_density", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
}
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_gradient(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "gradient_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_magic(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "turbulence_depth", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
2012-09-04 13:29:07 +00:00
|
|
|
static void node_shader_buts_tex_brick(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "offset", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, IFACE_("Offset"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset_frequency", DEFAULT_FLAGS, IFACE_("Frequency"), ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "squash", DEFAULT_FLAGS, IFACE_("Squash"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "squash_frequency", DEFAULT_FLAGS, IFACE_("Frequency"), ICON_NONE);
|
2012-09-04 13:29:07 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_tex_wave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "wave_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2020-02-17 12:31:38 +01:00
|
|
|
int type = RNA_enum_get(ptr, "wave_type");
|
|
|
|
if (type == SHD_WAVE_BANDS) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "bands_direction", DEFAULT_FLAGS, "", ICON_NONE);
|
2020-02-17 12:31:38 +01:00
|
|
|
}
|
|
|
|
else { /* SHD_WAVE_RINGS */
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "rings_direction", DEFAULT_FLAGS, "", ICON_NONE);
|
2020-02-17 12:31:38 +01:00
|
|
|
}
|
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "wave_profile", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_musgrave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "musgrave_dimensions", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "musgrave_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_voronoi(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "voronoi_dimensions", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "feature", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-09-12 13:09:31 +02:00
|
|
|
int feature = RNA_enum_get(ptr, "feature");
|
|
|
|
if (!ELEM(feature, SHD_VORONOI_DISTANCE_TO_EDGE, SHD_VORONOI_N_SPHERE_RADIUS) &&
|
|
|
|
RNA_enum_get(ptr, "voronoi_dimensions") != 1) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distance", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-09-12 13:09:31 +02:00
|
|
|
}
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-09-04 17:54:32 +02:00
|
|
|
static void node_shader_buts_tex_noise(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "noise_dimensions", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-09-04 17:54:32 +02:00
|
|
|
}
|
|
|
|
|
2015-07-18 22:36:09 +02:00
|
|
|
static void node_shader_buts_tex_pointdensity(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
NodeShaderTexPointDensity *shader_point_density = node->storage;
|
2016-03-24 11:41:44 +01:00
|
|
|
Object *ob = (Object *)node->id;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA ob_ptr, obdata_ptr;
|
2016-03-24 11:41:44 +01:00
|
|
|
RNA_id_pointer_create((ID *)ob, &ob_ptr);
|
|
|
|
RNA_id_pointer_create(ob ? (ID *)ob->data : NULL, &obdata_ptr);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-07-18 22:36:09 +02:00
|
|
|
uiItemR(layout, ptr, "point_source", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "object", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-07-18 22:36:09 +02:00
|
|
|
if (node->id && shader_point_density->point_source == SHD_POINTDENSITY_SOURCE_PSYS) {
|
|
|
|
PointerRNA dataptr;
|
|
|
|
RNA_id_pointer_create((ID *)node->id, &dataptr);
|
|
|
|
uiItemPointerR(layout, ptr, "particle_system", &dataptr, "particle_systems", NULL, ICON_NONE);
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "space", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "radius", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "interpolation", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "resolution", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2015-07-18 22:36:09 +02:00
|
|
|
if (shader_point_density->point_source == SHD_POINTDENSITY_SOURCE_PSYS) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "particle_color_source", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2016-03-24 11:41:44 +01:00
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "vertex_color_source", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2016-03-24 11:41:44 +01:00
|
|
|
if (shader_point_density->ob_color_source == SHD_POINTDENSITY_COLOR_VERTWEIGHT) {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (ob_ptr.data) {
|
2016-03-24 11:41:44 +01:00
|
|
|
uiItemPointerR(
|
|
|
|
layout, ptr, "vertex_attribute_name", &ob_ptr, "vertex_groups", "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2016-03-24 11:41:44 +01:00
|
|
|
}
|
|
|
|
if (shader_point_density->ob_color_source == SHD_POINTDENSITY_COLOR_VERTCOL) {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (obdata_ptr.data) {
|
2016-03-24 11:41:44 +01:00
|
|
|
uiItemPointerR(
|
|
|
|
layout, ptr, "vertex_attribute_name", &obdata_ptr, "vertex_colors", "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2016-03-24 11:41:44 +01:00
|
|
|
}
|
2015-07-18 22:36:09 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-10-04 21:40:39 +00:00
|
|
|
static void node_shader_buts_tex_coord(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "object", DEFAULT_FLAGS, NULL, 0);
|
|
|
|
uiItemR(layout, ptr, "from_instancer", DEFAULT_FLAGS, NULL, 0);
|
2012-10-04 21:40:39 +00:00
|
|
|
}
|
|
|
|
|
2013-05-10 16:57:17 +00:00
|
|
|
static void node_shader_buts_bump(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "invert", DEFAULT_FLAGS, NULL, 0);
|
2013-05-10 16:57:17 +00:00
|
|
|
}
|
|
|
|
|
2014-04-02 11:40:29 +02:00
|
|
|
static void node_shader_buts_uvmap(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "from_instancer", DEFAULT_FLAGS, NULL, 0);
|
2014-04-02 11:40:29 +02:00
|
|
|
|
2018-11-28 17:49:52 +01:00
|
|
|
if (!RNA_boolean_get(ptr, "from_instancer")) {
|
2014-04-02 11:40:29 +02:00
|
|
|
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
|
|
|
|
|
|
|
|
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
|
|
|
|
PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
|
2017-05-25 15:11:00 +10:00
|
|
|
uiItemPointerR(layout, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
|
2014-04-02 11:40:29 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-12 17:42:13 +02:00
|
|
|
static void node_shader_buts_vertex_color(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
|
|
|
|
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
|
|
|
|
PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
|
2020-06-25 13:48:44 +02:00
|
|
|
|
2020-07-15 18:52:01 +02:00
|
|
|
if (U.experimental.use_sculpt_vertex_colors &&
|
|
|
|
RNA_collection_length(&dataptr, "sculpt_vertex_colors")) {
|
2020-06-25 13:48:44 +02:00
|
|
|
uiItemPointerR(
|
|
|
|
layout, ptr, "layer_name", &dataptr, "sculpt_vertex_colors", "", ICON_GROUP_VCOL);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiItemPointerR(layout, ptr, "layer_name", &dataptr, "vertex_colors", "", ICON_GROUP_VCOL);
|
|
|
|
}
|
2019-09-12 17:42:13 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiItemL(layout, "No mesh in active object.", ICON_ERROR);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-08-11 17:13:38 +09:00
|
|
|
static void node_shader_buts_uvalongstroke(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2014-07-20 12:14:31 +09:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_tips", DEFAULT_FLAGS, NULL, 0);
|
2014-07-20 12:14:31 +09:00
|
|
|
}
|
|
|
|
|
2012-11-06 20:48:26 +00:00
|
|
|
static void node_shader_buts_normal_map(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2012-11-06 19:59:02 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "space", DEFAULT_FLAGS, "", 0);
|
2012-11-06 19:59:02 +00:00
|
|
|
|
2018-01-21 00:40:42 +01:00
|
|
|
if (RNA_enum_get(ptr, "space") == SHD_SPACE_TANGENT) {
|
2012-11-06 20:48:26 +00:00
|
|
|
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
|
|
|
|
|
2012-11-07 01:02:28 +00:00
|
|
|
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
|
2012-11-06 20:48:26 +00:00
|
|
|
PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
|
2017-05-25 15:11:00 +10:00
|
|
|
uiItemPointerR(layout, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
|
2012-11-06 20:48:26 +00:00
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "uv_map", DEFAULT_FLAGS, "", 0);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-11-06 20:48:26 +00:00
|
|
|
}
|
2012-11-06 19:59:02 +00:00
|
|
|
}
|
|
|
|
|
2018-01-21 00:40:42 +01:00
|
|
|
static void node_shader_buts_displacement(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "space", DEFAULT_FLAGS, "", 0);
|
2018-01-21 00:40:42 +01:00
|
|
|
}
|
|
|
|
|
2012-11-06 20:48:26 +00:00
|
|
|
static void node_shader_buts_tangent(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2012-11-06 19:59:02 +00:00
|
|
|
{
|
|
|
|
uiLayout *split, *row;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
split = uiLayoutSplit(layout, 0.0f, false);
|
2012-11-06 19:59:02 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(split, ptr, "direction_type", DEFAULT_FLAGS, "", 0);
|
2012-11-06 19:59:02 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(split, false);
|
2012-11-06 19:59:02 +00:00
|
|
|
|
2012-11-07 01:02:28 +00:00
|
|
|
if (RNA_enum_get(ptr, "direction_type") == SHD_TANGENT_UVMAP) {
|
2012-11-06 20:48:26 +00:00
|
|
|
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
|
|
|
|
|
2012-11-07 01:02:28 +00:00
|
|
|
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
|
2012-11-06 20:48:26 +00:00
|
|
|
PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
|
2017-05-25 15:11:00 +10:00
|
|
|
uiItemPointerR(row, ptr, "uv_map", &dataptr, "uv_layers", "", ICON_NONE);
|
2012-11-06 20:48:26 +00:00
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "uv_map", DEFAULT_FLAGS, "", 0);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-11-06 20:48:26 +00:00
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "axis", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, 0);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-11-06 19:59:02 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_glossy(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distribution", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
2018-02-08 16:19:04 +01:00
|
|
|
static void node_shader_buts_principled(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distribution", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "subsurface_method", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-02-08 16:19:04 +01:00
|
|
|
}
|
|
|
|
|
2014-06-08 12:16:28 +02:00
|
|
|
static void node_shader_buts_anisotropic(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distribution", DEFAULT_FLAGS, "", ICON_NONE);
|
2014-06-08 12:16:28 +02:00
|
|
|
}
|
|
|
|
|
2016-01-15 05:24:15 +11:00
|
|
|
static void node_shader_buts_subsurface(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2013-09-27 10:53:55 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "falloff", DEFAULT_FLAGS, "", ICON_NONE);
|
2013-08-18 14:15:57 +00:00
|
|
|
}
|
|
|
|
|
2013-05-23 17:45:20 +00:00
|
|
|
static void node_shader_buts_toon(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "component", DEFAULT_FLAGS, "", ICON_NONE);
|
2013-05-23 17:45:20 +00:00
|
|
|
}
|
|
|
|
|
2013-09-15 23:58:00 +00:00
|
|
|
static void node_shader_buts_hair(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "component", DEFAULT_FLAGS, "", ICON_NONE);
|
2013-09-15 23:58:00 +00:00
|
|
|
}
|
|
|
|
|
2018-07-18 11:14:43 +02:00
|
|
|
static void node_shader_buts_principled_hair(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "parametrization", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-07-18 11:14:43 +02:00
|
|
|
}
|
|
|
|
|
Cycles: Add Support for IES files as textures for light strength
This patch adds support for IES files, a file format that is commonly used to store the directional intensity distribution of light sources.
The new IES node is supposed to be plugged into the Strength input of the Emission node of the lamp.
Since people generating IES files do not really seem to care about the standard, the parser is flexible enough to accept all test files I have tried.
Some common weirdnesses are distributing values over multiple lines that should go into one line, using commas instead of spaces as delimiters and adding various useless stuff at the end of the file.
The user interface of the node is similar to the script node, the user can either select an internal Text or load a file.
Internally, IES files are handled similar to Image textures: They are stored in slots by the LightManager and each unique IES is assigned to one slot.
The local coordinate system of the lamp is used, so that the direction of the light can be changed. For UI reasons, it's usually best to add an area light,
rotate it and then change its type, since especially the point light does not immediately show its local coordinate system in the viewport.
Reviewers: #cycles, dingto, sergey, brecht
Reviewed By: #cycles, dingto, brecht
Subscribers: OgDEV, crazyrobinhood, secundar, cardboard, pisuke, intrah, swerner, micah_denn, harvester, gottfried, disnel, campbellbarton, duarteframos, Lapineige, brecht, juicyfruit, dingto, marek, rickyblender, bliblubli, lockal, sergey
Differential Revision: https://developer.blender.org/D1543
2018-05-27 00:46:37 +02:00
|
|
|
static void node_shader_buts_ies(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
|
|
|
|
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "mode", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
Cycles: Add Support for IES files as textures for light strength
This patch adds support for IES files, a file format that is commonly used to store the directional intensity distribution of light sources.
The new IES node is supposed to be plugged into the Strength input of the Emission node of the lamp.
Since people generating IES files do not really seem to care about the standard, the parser is flexible enough to accept all test files I have tried.
Some common weirdnesses are distributing values over multiple lines that should go into one line, using commas instead of spaces as delimiters and adding various useless stuff at the end of the file.
The user interface of the node is similar to the script node, the user can either select an internal Text or load a file.
Internally, IES files are handled similar to Image textures: They are stored in slots by the LightManager and each unique IES is assigned to one slot.
The local coordinate system of the lamp is used, so that the direction of the light can be changed. For UI reasons, it's usually best to add an area light,
rotate it and then change its type, since especially the point light does not immediately show its local coordinate system in the viewport.
Reviewers: #cycles, dingto, sergey, brecht
Reviewed By: #cycles, dingto, brecht
Subscribers: OgDEV, crazyrobinhood, secundar, cardboard, pisuke, intrah, swerner, micah_denn, harvester, gottfried, disnel, campbellbarton, duarteframos, Lapineige, brecht, juicyfruit, dingto, marek, rickyblender, bliblubli, lockal, sergey
Differential Revision: https://developer.blender.org/D1543
2018-05-27 00:46:37 +02:00
|
|
|
|
|
|
|
row = uiLayoutRow(layout, true);
|
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (RNA_enum_get(ptr, "mode") == NODE_IES_INTERNAL) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "ies", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "filepath", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
Cycles: Add Support for IES files as textures for light strength
This patch adds support for IES files, a file format that is commonly used to store the directional intensity distribution of light sources.
The new IES node is supposed to be plugged into the Strength input of the Emission node of the lamp.
Since people generating IES files do not really seem to care about the standard, the parser is flexible enough to accept all test files I have tried.
Some common weirdnesses are distributing values over multiple lines that should go into one line, using commas instead of spaces as delimiters and adding various useless stuff at the end of the file.
The user interface of the node is similar to the script node, the user can either select an internal Text or load a file.
Internally, IES files are handled similar to Image textures: They are stored in slots by the LightManager and each unique IES is assigned to one slot.
The local coordinate system of the lamp is used, so that the direction of the light can be changed. For UI reasons, it's usually best to add an area light,
rotate it and then change its type, since especially the point light does not immediately show its local coordinate system in the viewport.
Reviewers: #cycles, dingto, sergey, brecht
Reviewed By: #cycles, dingto, brecht
Subscribers: OgDEV, crazyrobinhood, secundar, cardboard, pisuke, intrah, swerner, micah_denn, harvester, gottfried, disnel, campbellbarton, duarteframos, Lapineige, brecht, juicyfruit, dingto, marek, rickyblender, bliblubli, lockal, sergey
Differential Revision: https://developer.blender.org/D1543
2018-05-27 00:46:37 +02:00
|
|
|
}
|
|
|
|
|
2012-11-03 14:32:26 +00:00
|
|
|
static void node_shader_buts_script(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "mode", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-11-03 14:32:26 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2012-11-03 14:32:26 +00:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (RNA_enum_get(ptr, "mode") == NODE_SCRIPT_INTERNAL) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "script", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "filepath", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-11-03 14:32:26 +00:00
|
|
|
|
|
|
|
uiItemO(row, "", ICON_FILE_REFRESH, "node.shader_script_update");
|
|
|
|
}
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_shader_buts_script_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2012-11-03 14:32:26 +00:00
|
|
|
{
|
|
|
|
uiItemS(layout);
|
|
|
|
|
|
|
|
node_shader_buts_script(layout, C, ptr);
|
|
|
|
|
2012-11-18 01:22:31 +00:00
|
|
|
#if 0 /* not implemented yet */
|
2019-05-31 23:21:16 +10:00
|
|
|
if (RNA_enum_get(ptr, "mode") == NODE_SCRIPT_EXTERNAL) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_auto_update", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-05-31 23:21:16 +10:00
|
|
|
}
|
2012-11-18 01:22:31 +00:00
|
|
|
#endif
|
2012-11-03 14:32:26 +00:00
|
|
|
}
|
|
|
|
|
2018-07-05 12:44:15 +02:00
|
|
|
static void node_buts_output_shader(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "target", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-07-05 12:44:15 +02:00
|
|
|
}
|
|
|
|
|
2014-07-16 22:25:37 +09:00
|
|
|
static void node_buts_output_linestyle(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row, *col;
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
row = uiLayoutRow(col, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "blend_type", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_clamp", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-07-16 22:25:37 +09:00
|
|
|
}
|
|
|
|
|
2017-08-18 18:37:05 +02:00
|
|
|
static void node_shader_buts_bevel(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "samples", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2017-08-18 18:37:05 +02:00
|
|
|
}
|
|
|
|
|
2018-06-15 11:03:29 +02:00
|
|
|
static void node_shader_buts_ambient_occlusion(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "samples", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "inside", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "only_local", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-15 11:03:29 +02:00
|
|
|
}
|
|
|
|
|
2019-08-21 20:04:09 +02:00
|
|
|
static void node_shader_buts_white_noise(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "noise_dimensions", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-08-21 20:04:09 +02:00
|
|
|
}
|
|
|
|
|
2019-12-04 19:57:28 +01:00
|
|
|
static void node_shader_buts_output_aov(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "name", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-12-04 19:57:28 +01:00
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* only once called */
|
|
|
|
static void node_shader_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
case SH_NODE_NORMAL:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_normal;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_CURVE_VEC:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_curvevec;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_CURVE_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_curvecol;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_MAPPING:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_mapping;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_VALUE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_MIX_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_mix_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_VALTORGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_colorramp;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2019-12-07 12:35:07 +00:00
|
|
|
case SH_NODE_CLAMP:
|
|
|
|
ntype->draw_buttons = node_shader_buts_clamp;
|
|
|
|
break;
|
2019-08-14 10:53:19 +02:00
|
|
|
case SH_NODE_MAP_RANGE:
|
2019-12-07 12:35:07 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_map_range;
|
2019-08-14 10:53:19 +02:00
|
|
|
break;
|
2018-06-04 09:31:30 +02:00
|
|
|
case SH_NODE_MATH:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_math;
|
2018-06-04 09:31:30 +02:00
|
|
|
break;
|
Shading: Add more operators to Vector Math node.
Add Multiply, Divide, Project, Reflect, Distance, Length, Scale, Snap,
Floor, Ceil, Modulo, Fraction, Absolute, Minimum, and Maximum operators
to the Vector Math node. The Value output has been removed from operators
whose output is a vector, and the other way around. All of those removals
has been handled properly in versioning code.
The patch doesn't include tests for the new operators. Tests will be added
in a later patch.
Reviewers: brecht, JacquesLucke
Differential Revision: https://developer.blender.org/D5523
2019-08-21 19:36:33 +02:00
|
|
|
case SH_NODE_VECTOR_MATH:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_vect_math;
|
2018-06-04 09:31:30 +02:00
|
|
|
break;
|
2020-02-17 15:15:46 +00:00
|
|
|
case SH_NODE_VECTOR_ROTATE:
|
|
|
|
ntype->draw_buttons = node_shader_buts_vector_rotate;
|
|
|
|
break;
|
2018-06-04 09:31:30 +02:00
|
|
|
case SH_NODE_VECT_TRANSFORM:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_vect_transform;
|
2018-06-04 09:31:30 +02:00
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_ATTRIBUTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_attribute;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2013-05-20 15:58:37 +00:00
|
|
|
case SH_NODE_WIREFRAME:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_wireframe;
|
2013-05-20 15:58:37 +00:00
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_TEX_SKY:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_sky;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_IMAGE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_image;
|
|
|
|
ntype->draw_buttons_ex = node_shader_buts_tex_image_ex;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_ENVIRONMENT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_environment;
|
2015-02-09 22:25:12 +01:00
|
|
|
ntype->draw_buttons_ex = node_shader_buts_tex_environment_ex;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_GRADIENT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_gradient;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_MAGIC:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_magic;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2012-09-04 13:29:07 +00:00
|
|
|
case SH_NODE_TEX_BRICK:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_brick;
|
2012-09-04 13:29:07 +00:00
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_TEX_WAVE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_wave;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_MUSGRAVE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_musgrave;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_VORONOI:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_voronoi;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2019-09-04 17:54:32 +02:00
|
|
|
case SH_NODE_TEX_NOISE:
|
|
|
|
ntype->draw_buttons = node_shader_buts_tex_noise;
|
|
|
|
break;
|
2015-07-18 22:36:09 +02:00
|
|
|
case SH_NODE_TEX_POINTDENSITY:
|
|
|
|
ntype->draw_buttons = node_shader_buts_tex_pointdensity;
|
|
|
|
break;
|
2012-10-04 21:40:39 +00:00
|
|
|
case SH_NODE_TEX_COORD:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tex_coord;
|
2012-10-04 21:40:39 +00:00
|
|
|
break;
|
2013-05-10 16:57:17 +00:00
|
|
|
case SH_NODE_BUMP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_bump;
|
2013-05-10 16:57:17 +00:00
|
|
|
break;
|
2012-11-06 19:59:02 +00:00
|
|
|
case SH_NODE_NORMAL_MAP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_normal_map;
|
2012-11-06 19:59:02 +00:00
|
|
|
break;
|
2018-01-21 00:40:42 +01:00
|
|
|
case SH_NODE_DISPLACEMENT:
|
|
|
|
case SH_NODE_VECTOR_DISPLACEMENT:
|
|
|
|
ntype->draw_buttons = node_shader_buts_displacement;
|
|
|
|
break;
|
2012-11-06 19:59:02 +00:00
|
|
|
case SH_NODE_TANGENT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_tangent;
|
2012-11-06 19:59:02 +00:00
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_BSDF_GLOSSY:
|
|
|
|
case SH_NODE_BSDF_GLASS:
|
2012-11-06 19:59:02 +00:00
|
|
|
case SH_NODE_BSDF_REFRACTION:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_glossy;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2018-02-08 16:19:04 +01:00
|
|
|
case SH_NODE_BSDF_PRINCIPLED:
|
|
|
|
ntype->draw_buttons = node_shader_buts_principled;
|
|
|
|
break;
|
2014-06-08 12:16:28 +02:00
|
|
|
case SH_NODE_BSDF_ANISOTROPIC:
|
|
|
|
ntype->draw_buttons = node_shader_buts_anisotropic;
|
|
|
|
break;
|
2013-08-18 14:15:57 +00:00
|
|
|
case SH_NODE_SUBSURFACE_SCATTERING:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_subsurface;
|
2013-08-18 14:15:57 +00:00
|
|
|
break;
|
2013-05-23 17:45:20 +00:00
|
|
|
case SH_NODE_BSDF_TOON:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_toon;
|
2013-05-23 17:45:20 +00:00
|
|
|
break;
|
2013-09-15 23:58:00 +00:00
|
|
|
case SH_NODE_BSDF_HAIR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_hair;
|
2013-09-15 23:58:00 +00:00
|
|
|
break;
|
2018-07-18 11:14:43 +02:00
|
|
|
case SH_NODE_BSDF_HAIR_PRINCIPLED:
|
|
|
|
ntype->draw_buttons = node_shader_buts_principled_hair;
|
|
|
|
break;
|
2012-11-03 14:32:26 +00:00
|
|
|
case SH_NODE_SCRIPT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_shader_buts_script;
|
|
|
|
ntype->draw_buttons_ex = node_shader_buts_script_ex;
|
2012-11-03 14:32:26 +00:00
|
|
|
break;
|
2014-04-02 11:40:29 +02:00
|
|
|
case SH_NODE_UVMAP:
|
|
|
|
ntype->draw_buttons = node_shader_buts_uvmap;
|
|
|
|
break;
|
2019-09-12 17:42:13 +02:00
|
|
|
case SH_NODE_VERTEX_COLOR:
|
|
|
|
ntype->draw_buttons = node_shader_buts_vertex_color;
|
|
|
|
break;
|
2014-07-20 12:14:31 +09:00
|
|
|
case SH_NODE_UVALONGSTROKE:
|
|
|
|
ntype->draw_buttons = node_shader_buts_uvalongstroke;
|
|
|
|
break;
|
2018-07-05 12:44:15 +02:00
|
|
|
case SH_NODE_OUTPUT_MATERIAL:
|
2018-06-27 14:41:53 +02:00
|
|
|
case SH_NODE_OUTPUT_LIGHT:
|
2018-07-05 12:44:15 +02:00
|
|
|
case SH_NODE_OUTPUT_WORLD:
|
|
|
|
ntype->draw_buttons = node_buts_output_shader;
|
|
|
|
break;
|
2014-07-16 22:25:37 +09:00
|
|
|
case SH_NODE_OUTPUT_LINESTYLE:
|
|
|
|
ntype->draw_buttons = node_buts_output_linestyle;
|
|
|
|
break;
|
Cycles: Add Support for IES files as textures for light strength
This patch adds support for IES files, a file format that is commonly used to store the directional intensity distribution of light sources.
The new IES node is supposed to be plugged into the Strength input of the Emission node of the lamp.
Since people generating IES files do not really seem to care about the standard, the parser is flexible enough to accept all test files I have tried.
Some common weirdnesses are distributing values over multiple lines that should go into one line, using commas instead of spaces as delimiters and adding various useless stuff at the end of the file.
The user interface of the node is similar to the script node, the user can either select an internal Text or load a file.
Internally, IES files are handled similar to Image textures: They are stored in slots by the LightManager and each unique IES is assigned to one slot.
The local coordinate system of the lamp is used, so that the direction of the light can be changed. For UI reasons, it's usually best to add an area light,
rotate it and then change its type, since especially the point light does not immediately show its local coordinate system in the viewport.
Reviewers: #cycles, dingto, sergey, brecht
Reviewed By: #cycles, dingto, brecht
Subscribers: OgDEV, crazyrobinhood, secundar, cardboard, pisuke, intrah, swerner, micah_denn, harvester, gottfried, disnel, campbellbarton, duarteframos, Lapineige, brecht, juicyfruit, dingto, marek, rickyblender, bliblubli, lockal, sergey
Differential Revision: https://developer.blender.org/D1543
2018-05-27 00:46:37 +02:00
|
|
|
case SH_NODE_TEX_IES:
|
|
|
|
ntype->draw_buttons = node_shader_buts_ies;
|
|
|
|
break;
|
2017-08-18 18:37:05 +02:00
|
|
|
case SH_NODE_BEVEL:
|
|
|
|
ntype->draw_buttons = node_shader_buts_bevel;
|
|
|
|
break;
|
2018-06-15 11:03:29 +02:00
|
|
|
case SH_NODE_AMBIENT_OCCLUSION:
|
|
|
|
ntype->draw_buttons = node_shader_buts_ambient_occlusion;
|
|
|
|
break;
|
2019-08-21 20:04:09 +02:00
|
|
|
case SH_NODE_TEX_WHITE_NOISE:
|
|
|
|
ntype->draw_buttons = node_shader_buts_white_noise;
|
|
|
|
break;
|
2019-12-04 19:57:28 +01:00
|
|
|
case SH_NODE_OUTPUT_AOV:
|
|
|
|
ntype->draw_buttons = node_shader_buts_output_aov;
|
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR COMPOSITE NODES ***************** */
|
|
|
|
|
2015-04-06 10:40:12 -03:00
|
|
|
static void node_buts_image_views(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr,
|
|
|
|
PointerRNA *imaptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!imaptr->data) {
|
2015-04-06 10:40:12 -03:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2015-04-06 10:40:12 -03:00
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
|
|
|
|
if (RNA_boolean_get(ptr, "has_views")) {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (RNA_enum_get(ptr, "view") == 0) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "view", DEFAULT_FLAGS, NULL, ICON_CAMERA_STEREO);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "view", DEFAULT_FLAGS, NULL, ICON_SCENE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2015-04-06 10:40:12 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA iuserptr;
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_ImageUser, node->storage, &iuserptr);
|
2014-01-20 18:54:03 +01:00
|
|
|
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
2018-01-03 21:54:02 +11:00
|
|
|
uiTemplateID(layout,
|
|
|
|
C,
|
|
|
|
ptr,
|
|
|
|
"image",
|
2018-07-31 10:22:19 +02:00
|
|
|
"IMAGE_OT_new",
|
|
|
|
"IMAGE_OT_open",
|
|
|
|
NULL,
|
|
|
|
UI_TEMPLATE_ID_FILTER_ALL,
|
2019-11-25 19:41:30 +01:00
|
|
|
false,
|
|
|
|
NULL);
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!node->id) {
|
|
|
|
return;
|
|
|
|
}
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
2014-01-20 18:54:03 +01:00
|
|
|
|
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
|
|
|
node_buts_image_user(layout, C, ptr, &imaptr, &iuserptr, true, true);
|
2015-04-06 10:40:12 -03:00
|
|
|
|
|
|
|
node_buts_image_views(layout, C, ptr, &imaptr);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2012-09-25 10:14:07 +00:00
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA iuserptr;
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_ImageUser, node->storage, &iuserptr);
|
2014-01-20 18:54:03 +01:00
|
|
|
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
2015-06-13 14:04:39 -03:00
|
|
|
uiTemplateImage(layout, C, ptr, "image", &iuserptr, 0, 1);
|
2012-09-25 10:14:07 +00:00
|
|
|
}
|
|
|
|
|
2017-11-22 10:52:39 -02:00
|
|
|
static void node_composit_buts_viewlayers(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2010-01-06 00:09:07 +00:00
|
|
|
uiLayout *col, *row;
|
2012-01-22 03:30:07 +00:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!node->id) {
|
|
|
|
return;
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
row = uiLayoutRow(col, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "layer", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PropertyRNA *prop = RNA_struct_find_property(ptr, "layer");
|
|
|
|
const char *layer_name;
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!(RNA_property_enum_identifier(
|
|
|
|
C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name))) {
|
2010-01-06 00:09:07 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA scn_ptr;
|
|
|
|
char scene_name[MAX_ID_NAME - 2];
|
2010-01-06 00:09:07 +00:00
|
|
|
scn_ptr = RNA_pointer_get(ptr, "scene");
|
|
|
|
RNA_string_get(&scn_ptr, "name", scene_name);
|
2016-08-03 23:31:48 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA op_ptr;
|
2017-10-31 16:58:26 +11:00
|
|
|
uiItemFullO(
|
|
|
|
row, "RENDER_OT_render", "", ICON_RENDER_STILL, NULL, WM_OP_INVOKE_DEFAULT, 0, &op_ptr);
|
2010-01-06 00:09:07 +00:00
|
|
|
RNA_string_set(&op_ptr, "layer", layer_name);
|
|
|
|
RNA_string_set(&op_ptr, "scene", scene_name);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_blur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-10 20:54:02 +00:00
|
|
|
uiLayout *col, *row;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-09-08 15:20:07 +02:00
|
|
|
const int filter = RNA_enum_get(ptr, "filter_type");
|
|
|
|
const int reference = RNA_boolean_get(ptr, "use_variable_size");
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-07-19 11:05:18 +00:00
|
|
|
if (filter != R_FILTER_FAST_GAUSS) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_variable_size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-19 11:05:18 +00:00
|
|
|
if (!reference) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_bokeh", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-19 11:05:18 +00:00
|
|
|
}
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_gamma_correction", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_relative", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2011-02-10 20:54:02 +00:00
|
|
|
if (RNA_boolean_get(ptr, "use_relative")) {
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Aspect Correction"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "aspect_correction", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "factor_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "factor_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE);
|
2011-02-10 20:54:02 +00:00
|
|
|
}
|
|
|
|
else {
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "size_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "size_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_extended_bounds", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_dblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-27 11:00:35 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "iterations", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_wrap", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Center:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "center_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "center_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2009-09-18 21:04:54 +00:00
|
|
|
uiItemS(layout);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "distance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "angle", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2009-09-18 21:04:54 +00:00
|
|
|
uiItemS(layout);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "spin", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "zoom", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_bilateralblur(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "iterations", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sigma_color", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sigma_space", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2014-02-05 13:51:51 +01:00
|
|
|
static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *sub, *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Bokeh Type:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "bokeh", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "angle", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_gamma_correction", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer") == true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "f_stop", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "blur_max", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "threshold", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_preview", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-02-05 13:51:51 +01:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2014-02-05 13:51:51 +01:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_zbuffer", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
sub = uiLayoutColumn(col, false);
|
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer") == false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(sub, ptr, "z_scale", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2021-03-29 07:44:27 +02:00
|
|
|
static void node_composit_buts_antialiasing(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
|
|
|
|
uiItemR(col, ptr, "threshold", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "contrast_limit", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "corner_rounding", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* qdn: glare node */
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_glare(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "glare_type", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "quality", DEFAULT_FLAGS, "", ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") != 1) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "iterations", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") != 0) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "color_modulation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "mix", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "threshold", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 2) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "streaks", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "angle_offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 0 || RNA_enum_get(ptr, "glare_type") == 2) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "fade", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 0) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_rotate_45", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 1) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_tonemap(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *col;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "tonemap_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "tonemap_type") == 0) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "key", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "gamma", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "intensity", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "adaptation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "correction", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_lensdist(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-17 17:31:50 +00:00
|
|
|
uiLayout *col;
|
2009-09-17 15:06:03 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_projector", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(col, false);
|
|
|
|
uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_projector") == false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_jitter", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_fit", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_vecblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "samples", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "factor", DEFAULT_FLAGS, IFACE_("Blur"), ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Speed:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "speed_min", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "speed_max", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_curved", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_filter(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_flip(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "axis", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_crop(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-17 17:31:50 +00:00
|
|
|
uiLayout *col;
|
2011-04-21 13:11:51 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_crop_size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "relative", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2010-08-25 02:18:37 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (RNA_boolean_get(ptr, "relative")) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "rel_min_x", DEFAULT_FLAGS, IFACE_("Left"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_max_x", DEFAULT_FLAGS, IFACE_("Right"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_min_y", DEFAULT_FLAGS, IFACE_("Up"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_max_y", DEFAULT_FLAGS, IFACE_("Down"), ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "min_x", DEFAULT_FLAGS, IFACE_("Left"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "max_x", DEFAULT_FLAGS, IFACE_("Right"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "min_y", DEFAULT_FLAGS, IFACE_("Up"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "max_y", DEFAULT_FLAGS, IFACE_("Down"), ICON_NONE);
|
2011-04-21 13:11:51 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_splitviewer(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *row, *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "axis", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "factor", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2012-01-10 19:08:08 +00:00
|
|
|
static void node_composit_buts_double_edge_mask(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2012-01-10 19:08:08 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Inner Edge:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "inner_mode", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Buffer Edge:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "edge_mode", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-01-10 19:08:08 +00:00
|
|
|
}
|
|
|
|
|
2012-11-14 19:53:46 +00:00
|
|
|
static void node_composit_buts_map_range(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_clamp", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-11-14 19:53:46 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_map_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayout *sub, *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_min", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
sub = uiLayoutColumn(col, false);
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_min"));
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(sub, ptr, "min", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_max", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
sub = uiLayoutColumn(col, false);
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_max"));
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(sub, ptr, "max", DEFAULT_FLAGS, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_alphaover(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_premultiply", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "premul", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-11-12 14:59:01 +00:00
|
|
|
static void node_composit_buts_zcombine(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2010-11-12 14:59:01 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "use_alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_antialias_z", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2010-11-12 14:59:01 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_dilateerode(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "distance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2013-01-06 10:30:05 +00:00
|
|
|
switch (RNA_enum_get(ptr, "mode")) {
|
2012-06-21 07:45:41 +00:00
|
|
|
case CMP_NODE_DILATEERODE_DISTANCE_THRESH:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "edge", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-06-21 07:45:41 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DILATEERODE_DISTANCE_FEATHER:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "falloff", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-06-21 07:45:41 +00:00
|
|
|
break;
|
2012-05-21 10:20:30 +00:00
|
|
|
}
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2012-08-06 13:45:11 +00:00
|
|
|
static void node_composit_buts_inpaint(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-08-06 13:45:11 +00:00
|
|
|
}
|
|
|
|
|
2012-08-23 06:48:01 +00:00
|
|
|
static void node_composit_buts_despeckle(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "threshold", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "threshold_neighbor", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-08-23 06:48:01 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_diff_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "falloff", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_distance_matte(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2012-04-29 20:07:29 +00:00
|
|
|
uiLayout *col, *row;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2013-02-04 00:18:09 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Color Space:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-04-29 20:07:29 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "falloff", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_color_spill(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *row, *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Despill Channel:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "limit_method", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "limit_method") == 0) {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "limit_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2011-04-21 15:53:30 +00:00
|
|
|
}
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "ratio", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_unspill", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
if (RNA_boolean_get(ptr, "use_unspill") == true) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "unspill_red", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "unspill_green", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "unspill_blue", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2011-04-21 15:53:30 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-26 16:43:20 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "threshold", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2011-04-21 15:53:30 +00:00
|
|
|
/*uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE); Removed for now */
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2011-04-21 15:53:30 +00:00
|
|
|
/*uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, NULL, ICON_NONE); Removed for now*/
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_color_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-21 16:21:54 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "color_hue", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_value", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_channel_matte(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2009-10-27 13:46:02 +00:00
|
|
|
uiLayout *col, *row;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Color Space:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "color_space", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Key Channel:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "matte_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2010-03-13 14:47:26 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "limit_method", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "limit_method") == 0) {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "limit_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2011-04-21 15:53:30 +00:00
|
|
|
}
|
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "limit_max", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "limit_min", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_luma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2009-10-27 13:46:02 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "limit_max", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "limit_min", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_map_uv(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_id_mask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "index", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_antialiasing", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_file_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-03-01 07:56:15 +00:00
|
|
|
PointerRNA imfptr = RNA_pointer_get(ptr, "format");
|
2015-04-06 10:40:12 -03:00
|
|
|
const bool multilayer = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER;
|
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (multilayer) {
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(layout, IFACE_("Path:"), ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
else {
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(layout, IFACE_("Base Path:"), ICON_NONE);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "base_path", DEFAULT_FLAGS, "", ICON_NONE);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
{
|
2015-04-06 10:40:12 -03:00
|
|
|
Scene *scene = CTX_data_scene(C);
|
2012-03-01 07:56:15 +00:00
|
|
|
PointerRNA imfptr = RNA_pointer_get(ptr, "format");
|
2012-05-02 07:18:51 +00:00
|
|
|
PointerRNA active_input_ptr, op_ptr;
|
2012-10-01 14:02:47 +00:00
|
|
|
uiLayout *row, *col;
|
2015-04-06 10:40:12 -03:00
|
|
|
const bool multilayer = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER;
|
2021-01-13 11:01:44 +01:00
|
|
|
const bool is_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR;
|
2015-04-06 10:40:12 -03:00
|
|
|
const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-03-01 07:56:15 +00:00
|
|
|
node_composit_buts_file_output(layout, C, ptr);
|
2014-04-01 11:34:00 +11:00
|
|
|
uiTemplateImageSettings(layout, &imfptr, false);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-04-06 10:40:12 -03:00
|
|
|
/* disable stereo output for multilayer, too much work for something that no one will use */
|
|
|
|
/* if someone asks for that we can implement it */
|
2019-03-26 21:16:47 +11:00
|
|
|
if (is_multiview) {
|
2015-04-06 10:40:12 -03:00
|
|
|
uiTemplateImageFormatViews(layout, &imfptr, NULL);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-03-01 07:56:15 +00:00
|
|
|
uiItemS(layout);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-10-01 10:45:50 +02:00
|
|
|
uiItemO(layout, IFACE_("Add Input"), ICON_ADD, "NODE_OT_output_file_add_socket");
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
|
|
|
col = uiLayoutColumn(row, true);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const int active_index = RNA_int_get(ptr, "active_input_index");
|
2012-05-11 08:06:01 +00:00
|
|
|
/* using different collection properties if multilayer format is enabled */
|
|
|
|
if (multilayer) {
|
2013-08-27 15:27:41 +00:00
|
|
|
uiTemplateList(col,
|
|
|
|
C,
|
|
|
|
"UI_UL_list",
|
|
|
|
"file_output_node",
|
|
|
|
ptr,
|
|
|
|
"layer_slots",
|
|
|
|
ptr,
|
|
|
|
"active_input_index",
|
2019-01-09 15:48:09 +01:00
|
|
|
NULL,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
false,
|
|
|
|
false);
|
2012-07-09 23:07:15 +00:00
|
|
|
RNA_property_collection_lookup_int(
|
|
|
|
ptr, RNA_struct_find_property(ptr, "layer_slots"), active_index, &active_input_ptr);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
else {
|
2013-08-27 15:27:41 +00:00
|
|
|
uiTemplateList(col,
|
|
|
|
C,
|
|
|
|
"UI_UL_list",
|
|
|
|
"file_output_node",
|
|
|
|
ptr,
|
|
|
|
"file_slots",
|
|
|
|
ptr,
|
|
|
|
"active_input_index",
|
2019-01-09 15:48:09 +01:00
|
|
|
NULL,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
false,
|
|
|
|
false);
|
2012-07-09 23:07:15 +00:00
|
|
|
RNA_property_collection_lookup_int(
|
|
|
|
ptr, RNA_struct_find_property(ptr, "file_slots"), active_index, &active_input_ptr);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
2019-01-15 23:24:20 +11:00
|
|
|
/* XXX collection lookup does not return the ID part of the pointer,
|
|
|
|
* setting this manually here */
|
2019-08-23 09:52:12 +02:00
|
|
|
active_input_ptr.owner_id = ptr->owner_id;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(row, true);
|
2020-09-08 15:20:07 +02:00
|
|
|
wmOperatorType *ot = WM_operatortype_find("NODE_OT_output_file_move_active_socket", false);
|
2017-10-31 16:58:26 +11:00
|
|
|
uiItemFullO_ptr(col, ot, "", ICON_TRIA_UP, NULL, WM_OP_INVOKE_DEFAULT, 0, &op_ptr);
|
2012-05-02 07:18:51 +00:00
|
|
|
RNA_enum_set(&op_ptr, "direction", 1);
|
2017-10-31 16:58:26 +11:00
|
|
|
uiItemFullO_ptr(col, ot, "", ICON_TRIA_DOWN, NULL, WM_OP_INVOKE_DEFAULT, 0, &op_ptr);
|
2012-05-02 07:18:51 +00:00
|
|
|
RNA_enum_set(&op_ptr, "direction", 2);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
if (active_input_ptr.data) {
|
2012-05-11 08:06:01 +00:00
|
|
|
if (multilayer) {
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Layer:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &active_input_ptr, "name", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiItemFullO(row,
|
|
|
|
"NODE_OT_output_file_remove_active_socket",
|
|
|
|
"",
|
2017-10-31 16:58:26 +11:00
|
|
|
ICON_X,
|
|
|
|
NULL,
|
|
|
|
WM_OP_EXEC_DEFAULT,
|
|
|
|
UI_ITEM_R_ICON_ONLY,
|
|
|
|
NULL);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
else {
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-11-21 10:45:52 +01:00
|
|
|
uiItemL(col, IFACE_("File Subpath:"), ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &active_input_ptr, "path", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiItemFullO(row,
|
|
|
|
"NODE_OT_output_file_remove_active_socket",
|
|
|
|
"",
|
2017-10-31 16:58:26 +11:00
|
|
|
ICON_X,
|
|
|
|
NULL,
|
|
|
|
WM_OP_EXEC_DEFAULT,
|
|
|
|
UI_ITEM_R_ICON_ONLY,
|
|
|
|
NULL);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-11 08:06:01 +00:00
|
|
|
/* format details for individual files */
|
2012-03-01 07:56:15 +00:00
|
|
|
imfptr = RNA_pointer_get(&active_input_ptr, "format");
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Format:"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &active_input_ptr, "use_node_format", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-01-13 11:01:44 +01:00
|
|
|
const bool is_socket_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR;
|
|
|
|
const bool use_node_format = RNA_boolean_get(&active_input_ptr, "use_node_format");
|
|
|
|
|
|
|
|
if ((!is_exr && use_node_format) || (!is_socket_exr && !use_node_format)) {
|
|
|
|
uiItemR(col, &active_input_ptr, "save_as_render", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2021-01-13 11:01:44 +01:00
|
|
|
uiLayoutSetActive(col, use_node_format == false);
|
2014-04-01 11:34:00 +11:00
|
|
|
uiTemplateImageSettings(col, &imfptr, false);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (is_multiview) {
|
2015-04-06 10:40:12 -03:00
|
|
|
uiTemplateImageFormatViews(layout, &imfptr, NULL);
|
2012-03-01 07:56:15 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_scale(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "space", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-06-14 16:55:55 +00:00
|
|
|
|
|
|
|
if (RNA_enum_get(ptr, "space") == CMP_SCALE_RENDERPERCENT) {
|
2012-06-15 07:50:27 +00:00
|
|
|
uiLayout *row;
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "frame_method", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "offset_x", DEFAULT_FLAGS, "X", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "offset_y", DEFAULT_FLAGS, "Y", ICON_NONE);
|
2012-06-14 16:55:55 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_rotate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-03-15 22:36:39 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2010-03-15 22:36:39 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_invert(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "invert_rgb", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "invert_alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_premulkey(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "mapping", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_view_levels(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_colorbalance(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-01-20 04:19:55 +00:00
|
|
|
{
|
|
|
|
uiLayout *split, *col, *row;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "correction_method", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "correction_method") == 0) {
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
split = uiLayoutSplit(layout, 0.0f, false);
|
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "lift", 1, 1, 0, 1);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "lift", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "gamma", 1, 1, 1, 1);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "gamma", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "gain", 1, 1, 1, 1);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "gain", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
|
|
|
else {
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
split = uiLayoutSplit(layout, 0.0f, false);
|
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "offset", 1, 1, 0, 1);
|
2012-03-24 06:38:07 +00:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset_basis", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "power", 1, 1, 0, 1);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "power", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2010-01-20 04:19:55 +00:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(split, false);
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(col, ptr, "slope", 1, 1, 0, 1);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "slope", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2010-01-20 04:19:55 +00:00
|
|
|
}
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_colorbalance_ex(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2011-07-04 18:48:36 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "correction_method", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "correction_method") == 0) {
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "lift", 1, 1, 0, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "lift", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "gamma", 1, 1, 1, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "gamma", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "gain", 1, 1, 1, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "gain", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "offset", 1, 1, 0, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "offset", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "power", 1, 1, 0, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "power", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-11-09 11:03:53 +00:00
|
|
|
uiTemplateColorPicker(layout, ptr, "slope", 1, 1, 0, 1);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "slope", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-07-04 19:22:37 +00:00
|
|
|
}
|
2011-07-04 18:48:36 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_huecorrect(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-01-21 00:00:45 +00:00
|
|
|
{
|
2012-06-21 14:37:56 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
|
|
|
|
|
|
|
if (_sample_col[0] != SAMPLE_FLT_ISNONE) {
|
|
|
|
cumap->flag |= CUMA_DRAW_SAMPLE;
|
|
|
|
copy_v3_v3(cumap->sample, _sample_col);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cumap->flag &= ~CUMA_DRAW_SAMPLE;
|
|
|
|
}
|
|
|
|
|
2018-08-23 10:25:54 +02:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "mapping", 'h', false, false, false, false);
|
2010-01-21 00:00:45 +00:00
|
|
|
}
|
|
|
|
|
2010-12-13 21:17:00 +00:00
|
|
|
static void node_composit_buts_ycc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2018-06-04 09:31:30 +02:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, "", ICON_NONE);
|
2010-12-13 21:17:00 +00:00
|
|
|
}
|
|
|
|
|
2011-11-07 12:56:05 +00:00
|
|
|
static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_movieclip_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2012-09-25 10:14:07 +00:00
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
PointerRNA clipptr;
|
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2012-09-25 10:14:07 +00:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!node->id) {
|
2012-09-25 10:14:07 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2012-09-25 10:14:07 +00:00
|
|
|
|
|
|
|
clipptr = RNA_pointer_get(ptr, "clip");
|
|
|
|
|
|
|
|
uiTemplateColorspaceSettings(layout, &clipptr, "colorspace_settings");
|
|
|
|
}
|
|
|
|
|
2011-11-07 12:56:05 +00:00
|
|
|
static void node_composit_buts_stabilize2d(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2011-11-07 12:56:05 +00:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2011-11-07 12:56:05 +00:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!node->id) {
|
2011-11-07 12:56:05 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2011-11-07 12:56:05 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "invert", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
2013-01-31 15:08:37 +00:00
|
|
|
static void node_composit_buts_translate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_relative", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "wrap_axis", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2013-01-31 15:08:37 +00:00
|
|
|
}
|
|
|
|
|
2011-11-07 12:56:05 +00:00
|
|
|
static void node_composit_buts_transform(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_moviedistortion(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!node->id) {
|
2011-11-07 12:56:05 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "distortion_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
static void node_composit_buts_colorcorrection(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "red", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "green", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "blue", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, "", ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Saturation"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Contrast"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Gamma"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Gain"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Lift"), ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Master"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Highlights"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "highlights_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Midtones"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "midtones_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Shadows"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "shadows_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "midtones_start", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_end", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_colorcorrection_ex(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2012-05-27 00:36:50 +00:00
|
|
|
{
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiLayout *row;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "red", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "green", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "blue", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
row = layout;
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Saturation"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Contrast"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Gamma"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Gain"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Lift"), ICON_NONE);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "master_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "midtones_start", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_end", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
2021-01-05 16:16:18 +01:00
|
|
|
static void node_composit_buts_set_alpha(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
static void node_composit_buts_switch(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "check", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
2015-04-06 10:40:12 -03:00
|
|
|
static void node_composit_buts_switch_view_ex(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr))
|
|
|
|
{
|
2017-10-31 16:58:26 +11:00
|
|
|
uiItemFullO(layout,
|
|
|
|
"NODE_OT_switch_view_update",
|
|
|
|
"Update Views",
|
|
|
|
ICON_FILE_REFRESH,
|
|
|
|
NULL,
|
|
|
|
WM_OP_INVOKE_DEFAULT,
|
|
|
|
0,
|
|
|
|
NULL);
|
2015-04-06 10:40:12 -03:00
|
|
|
}
|
|
|
|
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
static void node_composit_buts_boxmask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "x", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "y", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "width", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "height", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "rotation", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "mask_type", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_bokehimage(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "flaps", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "angle", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "rounding", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "catadioptric", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "shift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
2012-08-14 14:31:39 +00:00
|
|
|
static void node_composit_buts_bokehblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_variable_size", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
// uiItemR(layout, ptr, "f_stop", DEFAULT_FLAGS, NULL, ICON_NONE); /* UNUSED */
|
|
|
|
uiItemR(layout, ptr, "blur_max", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_extended_bounds", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-08-14 14:31:39 +00:00
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_viewer(
|
|
|
|
SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
|
|
|
// node_composit_backdrop_canvas(snode, backdrop, node, x, y);
|
2012-06-08 09:17:07 +00:00
|
|
|
if (node->custom1 == 0) {
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2017-09-13 21:46:43 +10:00
|
|
|
const float cx = x + snode->zoom * backdropWidth * node->custom3;
|
2012-05-27 19:38:10 +00:00
|
|
|
const float cy = y + snode->zoom * backdropHeight * node->custom4;
|
2017-09-13 21:46:43 +10:00
|
|
|
const float cross_size = 12 * U.pixelsize;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertFormat *format = immVertexFormat();
|
|
|
|
uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
2016-12-01 17:07:39 +01:00
|
|
|
|
|
|
|
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
|
|
|
|
|
|
|
|
immUniformColor3f(1.0f, 1.0f, 1.0f);
|
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
immBegin(GPU_PRIM_LINES, 4);
|
2017-09-13 23:44:13 +10:00
|
|
|
immVertex2f(pos, cx - cross_size, cy - cross_size);
|
|
|
|
immVertex2f(pos, cx + cross_size, cy + cross_size);
|
|
|
|
immVertex2f(pos, cx + cross_size, cy - cross_size);
|
|
|
|
immVertex2f(pos, cx - cross_size, cy + cross_size);
|
2016-12-01 17:07:39 +01:00
|
|
|
immEnd();
|
|
|
|
|
|
|
|
immUnbindProgram();
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_boxmask(
|
|
|
|
SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
2012-05-22 21:16:59 +00:00
|
|
|
NodeBoxMask *boxmask = node->storage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2012-05-27 19:38:10 +00:00
|
|
|
const float aspect = backdropWidth / backdropHeight;
|
Cleanup: Internal degrees removal.
This patch changes most of the reamining degrees usage in internal code into radians.
I let a few which I know off asside, for reasons explained below - and I'm not sure to have found out all of them.
WARNING: this introduces forward incompatibility, which means files saved from this version won't open 100% correctly
in previous versions (a few angle properties would use radians values as degrees...).
Details:
- Data:
-- Lamp.spotsize: Game engine exposed this setting in degrees, to not break the API here I kept it as such
(using getter/setter functions), still using radians internally.
-- Mesh.smoothresh: Didn't touch to this one, as we will hopefully replace it completely by loop normals currently in dev.
- Modifiers:
-- EdgeSplitModifierData.split_angle, BevelModifierData.bevel_angle: Done.
- Postprocessing:
-- WipeVars.angle (sequencer's effect), NodeBokehImage.angle, NodeBoxMask.rotation, NodeEllipseMask.rotation: Done.
- BGE:
-- bConstraintActuator: Orientation type done (the minloc[0] & maxloc[0] cases). Did not touch to 'limit location' type,
it can also limit rotation, but it exposes through RNA the same limit_min/limit_max, which hence
can be either distance or angle values, depending on the mode. Will leave this to BGE team.
-- bSoundActuator.cone_outer_angle_3d, bSoundActuator.cone_inner_angle_3d: Done (note I kept degrees in BGE itself,
as it seems this is the expected value here...).
-- bRadarSensor.angle: Done.
Reviewers: brecht, campbellbarton, sergey, gaiaclary, dfelinto, moguri, jbakker, lukastoenne, howardt
Reviewed By: brecht, campbellbarton, sergey, gaiaclary, moguri, jbakker, lukastoenne, howardt
Thanks to all!
Differential Revision: http://developer.blender.org/D59
2013-12-03 20:09:25 +01:00
|
|
|
const float rad = -boxmask->rotation;
|
2012-05-22 21:16:59 +00:00
|
|
|
const float cosine = cosf(rad);
|
|
|
|
const float sine = sinf(rad);
|
|
|
|
const float halveBoxWidth = backdropWidth * (boxmask->width / 2.0f);
|
|
|
|
const float halveBoxHeight = backdropHeight * (boxmask->height / 2.0f) * aspect;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
float cx, cy, x1, x2, x3, x4;
|
|
|
|
float y1, y2, y3, y4;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
cx = x + snode->zoom * backdropWidth * boxmask->x;
|
|
|
|
cy = y + snode->zoom * backdropHeight * boxmask->y;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertFormat *format = immVertexFormat();
|
|
|
|
uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
2016-12-01 17:07:39 +01:00
|
|
|
|
|
|
|
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
|
|
|
|
|
|
|
|
immUniformColor3f(1.0f, 1.0f, 1.0f);
|
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
immBegin(GPU_PRIM_LINE_LOOP, 4);
|
2016-12-01 17:07:39 +01:00
|
|
|
immVertex2f(pos, x1, y1);
|
|
|
|
immVertex2f(pos, x2, y2);
|
|
|
|
immVertex2f(pos, x3, y3);
|
|
|
|
immVertex2f(pos, x4, y4);
|
|
|
|
immEnd();
|
|
|
|
|
|
|
|
immUnbindProgram();
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_ellipsemask(
|
|
|
|
SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
NodeEllipseMask *ellipsemask = node->storage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2012-05-22 21:16:59 +00:00
|
|
|
const float aspect = backdropWidth / backdropHeight;
|
Cleanup: Internal degrees removal.
This patch changes most of the reamining degrees usage in internal code into radians.
I let a few which I know off asside, for reasons explained below - and I'm not sure to have found out all of them.
WARNING: this introduces forward incompatibility, which means files saved from this version won't open 100% correctly
in previous versions (a few angle properties would use radians values as degrees...).
Details:
- Data:
-- Lamp.spotsize: Game engine exposed this setting in degrees, to not break the API here I kept it as such
(using getter/setter functions), still using radians internally.
-- Mesh.smoothresh: Didn't touch to this one, as we will hopefully replace it completely by loop normals currently in dev.
- Modifiers:
-- EdgeSplitModifierData.split_angle, BevelModifierData.bevel_angle: Done.
- Postprocessing:
-- WipeVars.angle (sequencer's effect), NodeBokehImage.angle, NodeBoxMask.rotation, NodeEllipseMask.rotation: Done.
- BGE:
-- bConstraintActuator: Orientation type done (the minloc[0] & maxloc[0] cases). Did not touch to 'limit location' type,
it can also limit rotation, but it exposes through RNA the same limit_min/limit_max, which hence
can be either distance or angle values, depending on the mode. Will leave this to BGE team.
-- bSoundActuator.cone_outer_angle_3d, bSoundActuator.cone_inner_angle_3d: Done (note I kept degrees in BGE itself,
as it seems this is the expected value here...).
-- bRadarSensor.angle: Done.
Reviewers: brecht, campbellbarton, sergey, gaiaclary, dfelinto, moguri, jbakker, lukastoenne, howardt
Reviewed By: brecht, campbellbarton, sergey, gaiaclary, moguri, jbakker, lukastoenne, howardt
Thanks to all!
Differential Revision: http://developer.blender.org/D59
2013-12-03 20:09:25 +01:00
|
|
|
const float rad = -ellipsemask->rotation;
|
2012-05-22 21:16:59 +00:00
|
|
|
const float cosine = cosf(rad);
|
|
|
|
const float sine = sinf(rad);
|
|
|
|
const float halveBoxWidth = backdropWidth * (ellipsemask->width / 2.0f);
|
|
|
|
const float halveBoxHeight = backdropHeight * (ellipsemask->height / 2.0f) * aspect;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
float cx, cy, x1, x2, x3, x4;
|
|
|
|
float y1, y2, y3, y4;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
cx = x + snode->zoom * backdropWidth * ellipsemask->x;
|
|
|
|
cy = y + snode->zoom * backdropHeight * ellipsemask->y;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertFormat *format = immVertexFormat();
|
|
|
|
uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
2016-12-01 17:07:39 +01:00
|
|
|
|
|
|
|
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
|
|
|
|
|
|
|
|
immUniformColor3f(1.0f, 1.0f, 1.0f);
|
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
immBegin(GPU_PRIM_LINE_LOOP, 4);
|
2016-12-01 17:07:39 +01:00
|
|
|
immVertex2f(pos, x1, y1);
|
|
|
|
immVertex2f(pos, x2, y2);
|
|
|
|
immVertex2f(pos, x3, y3);
|
|
|
|
immVertex2f(pos, x4, y4);
|
|
|
|
immEnd();
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2016-12-01 17:07:39 +01:00
|
|
|
immUnbindProgram();
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_ellipsemask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "x", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "y", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, ptr, "width", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "height", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "rotation", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "mask_type", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
|
2013-02-10 12:20:10 +00:00
|
|
|
static void node_composit_buts_composite(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2013-02-10 12:20:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_viewer(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2013-02-10 12:20:10 +00:00
|
|
|
}
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_composit_buts_viewer_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "tile_order", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "tile_order") == 0) {
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "center_x", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "center_y", DEFAULT_FLAGS, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-04 16:42:58 +00:00
|
|
|
static void node_composit_buts_mask(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-07-27 09:32:47 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(layout, C, ptr, "mask", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_feather", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-06-13 19:57:23 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "size_source", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-07-26 13:29:38 +00:00
|
|
|
|
2012-07-27 09:32:47 +00:00
|
|
|
if (node->custom1 & (CMP_NODEFLAG_MASK_FIXED | CMP_NODEFLAG_MASK_FIXED_SCENE)) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "size_x", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "size_y", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-27 09:32:47 +00:00
|
|
|
}
|
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_motion_blur", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-27 09:32:47 +00:00
|
|
|
if (node->custom1 & CMP_NODEFLAG_MASK_MOTION_BLUR) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "motion_blur_samples", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "motion_blur_shutter", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-26 13:29:38 +00:00
|
|
|
}
|
2012-06-04 16:42:58 +00:00
|
|
|
}
|
|
|
|
|
2012-06-14 12:18:42 +00:00
|
|
|
static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-07-09 23:07:15 +00:00
|
|
|
bNode *node = ptr->data;
|
2012-06-14 12:18:42 +00:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2012-06-14 12:18:42 +00:00
|
|
|
|
|
|
|
if (node->id) {
|
|
|
|
MovieClip *clip = (MovieClip *)node->id;
|
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA tracking_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTracking, &clip->tracking, &tracking_ptr);
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2012-06-14 12:18:42 +00:00
|
|
|
uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-05-29 14:00:47 +00:00
|
|
|
static void node_composit_buts_keying(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-10-26 04:14:10 +00:00
|
|
|
/* bNode *node = ptr->data; */ /* UNUSED */
|
2012-05-29 14:00:47 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "blur_pre", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "screen_balance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "despill_factor", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "despill_balance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "edge_kernel_radius", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "edge_kernel_tolerance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "clip_black", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "clip_white", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "dilate_distance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "feather_falloff", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "feather_distance", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "blur_post", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-05-29 14:00:47 +00:00
|
|
|
}
|
|
|
|
|
2012-06-19 17:29:58 +00:00
|
|
|
static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-08-04 12:54:27 +00:00
|
|
|
bNode *node = ptr->data;
|
2012-06-19 17:29:58 +00:00
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
2012-06-19 17:29:58 +00:00
|
|
|
|
|
|
|
if (node->id) {
|
|
|
|
MovieClip *clip = (MovieClip *)node->id;
|
|
|
|
MovieTracking *tracking = &clip->tracking;
|
|
|
|
MovieTrackingObject *object;
|
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA tracking_ptr;
|
|
|
|
NodeTrackPosData *data = node->storage;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr);
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2012-06-19 17:29:58 +00:00
|
|
|
uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
|
|
|
|
|
|
|
|
object = BKE_tracking_object_get_named(tracking, data->tracking_object);
|
|
|
|
if (object) {
|
|
|
|
PointerRNA object_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr);
|
|
|
|
|
|
|
|
uiItemPointerR(col, ptr, "track_name", &object_ptr, "tracks", "", ICON_ANIM_DATA);
|
|
|
|
}
|
|
|
|
else {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "track_name", DEFAULT_FLAGS, "", ICON_ANIM_DATA);
|
2012-06-19 17:29:58 +00:00
|
|
|
}
|
2012-07-10 11:01:25 +00:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "position", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-27 11:07:12 +00:00
|
|
|
|
2013-06-12 14:28:36 +00:00
|
|
|
if (ELEM(node->custom1, CMP_TRACKPOS_RELATIVE_FRAME, CMP_TRACKPOS_ABSOLUTE_FRAME)) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "frame_relative", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2012-07-27 11:07:12 +00:00
|
|
|
}
|
2012-06-19 17:29:58 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
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
|
|
|
static void node_composit_buts_planetrackdeform(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
2015-02-04 01:16:28 +05:00
|
|
|
NodePlaneTrackDeformData *data = node->storage;
|
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
|
|
|
|
2021-01-13 15:08:09 +01:00
|
|
|
uiTemplateID(
|
|
|
|
layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
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
|
|
|
|
|
|
|
if (node->id) {
|
|
|
|
MovieClip *clip = (MovieClip *)node->id;
|
|
|
|
MovieTracking *tracking = &clip->tracking;
|
|
|
|
MovieTrackingObject *object;
|
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA tracking_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr);
|
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
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
|
|
|
uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
|
|
|
|
|
|
|
|
object = BKE_tracking_object_get_named(tracking, data->tracking_object);
|
|
|
|
if (object) {
|
|
|
|
PointerRNA object_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr);
|
|
|
|
|
|
|
|
uiItemPointerR(
|
|
|
|
col, ptr, "plane_track_name", &object_ptr, "plane_tracks", "", ICON_ANIM_DATA);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiItemR(layout, ptr, "plane_track_name", 0, "", ICON_ANIM_DATA);
|
|
|
|
}
|
|
|
|
}
|
2015-02-04 01:16:28 +05:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_motion_blur", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2015-02-04 01:16:28 +05:00
|
|
|
if (data->flag & CMP_NODEFLAG_PLANETRACKDEFORM_MOTION_BLUR) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "motion_blur_samples", DEFAULT_FLAGS, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "motion_blur_shutter", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2015-02-04 01:16:28 +05:00
|
|
|
}
|
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
|
|
|
}
|
|
|
|
|
2014-03-11 14:07:49 +01:00
|
|
|
static void node_composit_buts_cornerpin(uiLayout *UNUSED(layout),
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr))
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2014-07-26 12:59:29 +02:00
|
|
|
static void node_composit_buts_sunbeams(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "source", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "ray_length", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2014-07-26 12:59:29 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
static void node_composit_buts_cryptomatte_legacy(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
2018-07-18 13:03:09 +02:00
|
|
|
{
|
|
|
|
uiLayout *col = uiLayoutColumn(layout, true);
|
|
|
|
|
|
|
|
uiItemL(col, IFACE_("Matte Objects:"), ICON_NONE);
|
|
|
|
|
|
|
|
uiLayout *row = uiLayoutRow(col, true);
|
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
|
|
|
uiTemplateCryptoPicker(row, ptr, "add", ICON_ADD);
|
|
|
|
uiTemplateCryptoPicker(row, ptr, "remove", ICON_REMOVE);
|
2018-07-18 13:03:09 +02:00
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "matte_id", DEFAULT_FLAGS, "", ICON_NONE);
|
2018-07-18 13:03:09 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
static void node_composit_buts_cryptomatte_legacy_ex(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr))
|
2018-07-18 13:03:09 +02:00
|
|
|
{
|
2018-10-01 10:45:50 +02:00
|
|
|
uiItemO(layout, IFACE_("Add Crypto Layer"), ICON_ADD, "NODE_OT_cryptomatte_layer_add");
|
|
|
|
uiItemO(layout, IFACE_("Remove Crypto Layer"), ICON_REMOVE, "NODE_OT_cryptomatte_layer_remove");
|
2018-07-18 13:03:09 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
static void node_composit_buts_cryptomatte(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
|
|
|
|
uiLayout *row = uiLayoutRow(layout, true);
|
|
|
|
uiItemR(row, ptr, "source", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
uiLayout *col = uiLayoutColumn(layout, false);
|
|
|
|
if (node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER) {
|
|
|
|
uiTemplateID(col, C, ptr, "scene", NULL, NULL, NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiTemplateID(
|
|
|
|
col, C, ptr, "image", NULL, "IMAGE_OT_open", NULL, UI_TEMPLATE_ID_FILTER_ALL, false, NULL);
|
|
|
|
|
|
|
|
NodeCryptomatte *crypto = (NodeCryptomatte *)node->storage;
|
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
PointerRNA iuserptr;
|
|
|
|
RNA_pointer_create((ID *)ptr->owner_id, &RNA_ImageUser, &crypto->iuser, &iuserptr);
|
|
|
|
uiLayoutSetContextPointer(layout, "image_user", &iuserptr);
|
|
|
|
|
|
|
|
node_buts_image_user(col, C, ptr, &imaptr, &iuserptr, false, false);
|
|
|
|
node_buts_image_views(col, C, ptr, &imaptr);
|
|
|
|
}
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, true);
|
|
|
|
uiItemR(col, ptr, "layer_name", 0, "", ICON_NONE);
|
|
|
|
uiItemL(col, IFACE_("Matte ID:"), ICON_NONE);
|
|
|
|
|
|
|
|
row = uiLayoutRow(col, true);
|
|
|
|
uiItemR(row, ptr, "matte_id", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiTemplateCryptoPicker(row, ptr, "add", ICON_ADD);
|
|
|
|
uiTemplateCryptoPicker(row, ptr, "remove", ICON_REMOVE);
|
|
|
|
}
|
|
|
|
|
2017-05-22 17:12:13 +02:00
|
|
|
static void node_composit_buts_brightcontrast(uiLayout *layout,
|
|
|
|
bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr)
|
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_premultiply", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2017-05-22 17:12:13 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
static void node_composit_buts_denoise(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
#ifndef WITH_OPENIMAGEDENOISE
|
|
|
|
uiItemL(layout, IFACE_("Disabled, built without OpenImageDenoise"), ICON_ERROR);
|
2019-08-27 14:03:49 +02:00
|
|
|
#else
|
2021-04-19 11:15:40 +02:00
|
|
|
/* Always supported through Accelerate framework BNNS on macOS. */
|
|
|
|
# ifndef __APPLE__
|
|
|
|
if (!BLI_cpu_support_sse41())
|
|
|
|
# endif
|
|
|
|
{
|
2019-08-27 14:03:49 +02:00
|
|
|
uiItemL(layout, IFACE_("Disabled, CPU with SSE4.1 is required"), ICON_ERROR);
|
|
|
|
}
|
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
|
|
|
#endif
|
|
|
|
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "use_hdr", DEFAULT_FLAGS, NULL, ICON_NONE);
|
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
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* only once called */
|
|
|
|
static void node_composit_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_IMAGE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_image;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_image_ex;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_R_LAYERS:
|
2017-11-22 10:52:39 -02:00
|
|
|
ntype->draw_buttons = node_composit_buts_viewlayers;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_NORMAL:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_normal;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CURVE_VEC:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_curvevec;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CURVE_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_curvecol;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VALUE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_FLIP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_flip;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_SPLITVIEWER:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_splitviewer;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MIX_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_mix_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VALTORGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_colorramp;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CROP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_crop;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_BLUR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_blur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DBLUR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_dblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_BILATERALBLUR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_bilateralblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DEFOCUS:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_defocus;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2021-03-29 07:44:27 +02:00
|
|
|
case CMP_NODE_ANTIALIASING:
|
|
|
|
ntype->draw_buttons = node_composit_buts_antialiasing;
|
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_GLARE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_glare;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TONEMAP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_tonemap;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_LENSDIST:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_lensdist;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VECBLUR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_vecblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_FILTER:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_filter;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MAP_VALUE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_map_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2012-11-14 19:53:46 +00:00
|
|
|
case CMP_NODE_MAP_RANGE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_map_range;
|
2012-11-14 19:53:46 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_TIME:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_time;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_ALPHAOVER:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_alphaover;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TEXTURE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_texture;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DILATEERODE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_dilateerode;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2012-08-06 13:45:11 +00:00
|
|
|
case CMP_NODE_INPAINT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_inpaint;
|
2012-08-06 13:45:11 +00:00
|
|
|
break;
|
2012-08-23 06:48:01 +00:00
|
|
|
case CMP_NODE_DESPECKLE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_despeckle;
|
2012-08-23 06:48:01 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_OUTPUT_FILE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_file_output;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_file_output_ex;
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_DIFF_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_diff_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_DIST_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_distance_matte;
|
2009-09-10 04:12:22 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_COLOR_SPILL:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_color_spill;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_CHROMA_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_chroma_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_COLOR_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_color_matte;
|
2009-09-10 04:12:22 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_SCALE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_scale;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2011-04-21 15:53:30 +00:00
|
|
|
case CMP_NODE_ROTATE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_rotate;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_CHANNEL_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_channel_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_LUMA_MATTE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_luma_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MAP_UV:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_map_uv;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_ID_MASK:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_id_mask;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2012-01-10 19:08:08 +00:00
|
|
|
case CMP_NODE_DOUBLEEDGEMASK:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_double_edge_mask;
|
2012-01-10 19:08:08 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_MATH:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_math;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_INVERT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_invert;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_PREMULKEY:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_premulkey;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2010-01-20 04:19:55 +00:00
|
|
|
case CMP_NODE_VIEW_LEVELS:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_view_levels;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-01-20 04:19:55 +00:00
|
|
|
case CMP_NODE_COLORBALANCE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_colorbalance;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_colorbalance_ex;
|
2011-07-04 19:22:37 +00:00
|
|
|
break;
|
2010-01-21 00:00:45 +00:00
|
|
|
case CMP_NODE_HUECORRECT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_huecorrect;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-11-12 14:59:01 +00:00
|
|
|
case CMP_NODE_ZCOMBINE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_zcombine;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-12-13 21:17:00 +00:00
|
|
|
case CMP_NODE_COMBYCCA:
|
|
|
|
case CMP_NODE_SEPYCCA:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_ycc;
|
2010-12-13 21:17:00 +00:00
|
|
|
break;
|
2011-11-07 12:56:05 +00:00
|
|
|
case CMP_NODE_MOVIECLIP:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_movieclip;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_movieclip_ex;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_STABILIZE2D:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_stabilize2d;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TRANSFORM:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_transform;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
2013-01-31 15:08:37 +00:00
|
|
|
case CMP_NODE_TRANSLATE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_translate;
|
2013-01-31 15:08:37 +00:00
|
|
|
break;
|
2011-11-07 12:56:05 +00:00
|
|
|
case CMP_NODE_MOVIEDISTORTION:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_moviedistortion;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_COLORCORRECTION:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_colorcorrection;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_colorcorrection_ex;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
2021-01-05 16:16:18 +01:00
|
|
|
case CMP_NODE_SETALPHA:
|
|
|
|
ntype->draw_buttons = node_composit_buts_set_alpha;
|
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_SWITCH:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_switch;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
2015-04-06 10:40:12 -03:00
|
|
|
case CMP_NODE_SWITCH_VIEW:
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_switch_view_ex;
|
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_MASK_BOX:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_boxmask;
|
|
|
|
ntype->draw_backdrop = node_composit_backdrop_boxmask;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MASK_ELLIPSE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_ellipsemask;
|
|
|
|
ntype->draw_backdrop = node_composit_backdrop_ellipsemask;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_BOKEHIMAGE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_bokehimage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
2012-08-14 14:31:39 +00:00
|
|
|
case CMP_NODE_BOKEHBLUR:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_bokehblur;
|
2012-08-14 14:31:39 +00:00
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_VIEWER:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_viewer;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_viewer_ex;
|
|
|
|
ntype->draw_backdrop = node_composit_backdrop_viewer;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
2013-02-10 12:20:10 +00:00
|
|
|
case CMP_NODE_COMPOSITE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_composite;
|
2013-02-10 12:20:10 +00:00
|
|
|
break;
|
2012-06-04 16:42:58 +00:00
|
|
|
case CMP_NODE_MASK:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_mask;
|
2012-06-04 16:42:58 +00:00
|
|
|
break;
|
2012-06-14 12:18:42 +00:00
|
|
|
case CMP_NODE_KEYINGSCREEN:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_keyingscreen;
|
2012-06-14 12:18:42 +00:00
|
|
|
break;
|
2012-05-29 14:00:47 +00:00
|
|
|
case CMP_NODE_KEYING:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_keying;
|
2012-05-29 14:00:47 +00:00
|
|
|
break;
|
2012-06-19 17:29:58 +00:00
|
|
|
case CMP_NODE_TRACKPOS:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_trackpos;
|
2012-06-19 17:29:58 +00:00
|
|
|
break;
|
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
|
|
|
case CMP_NODE_PLANETRACKDEFORM:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_composit_buts_planetrackdeform;
|
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
|
|
|
break;
|
2014-03-11 14:07:49 +01:00
|
|
|
case CMP_NODE_CORNERPIN:
|
|
|
|
ntype->draw_buttons = node_composit_buts_cornerpin;
|
|
|
|
break;
|
2014-07-26 12:59:29 +02:00
|
|
|
case CMP_NODE_SUNBEAMS:
|
|
|
|
ntype->draw_buttons = node_composit_buts_sunbeams;
|
|
|
|
break;
|
2018-07-18 13:03:09 +02:00
|
|
|
case CMP_NODE_CRYPTOMATTE:
|
|
|
|
ntype->draw_buttons = node_composit_buts_cryptomatte;
|
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
|
|
|
break;
|
|
|
|
case CMP_NODE_CRYPTOMATTE_LEGACY:
|
|
|
|
ntype->draw_buttons = node_composit_buts_cryptomatte_legacy;
|
|
|
|
ntype->draw_buttons_ex = node_composit_buts_cryptomatte_legacy_ex;
|
2018-07-18 13:03:09 +02:00
|
|
|
break;
|
2017-05-22 17:12:13 +02:00
|
|
|
case CMP_NODE_BRIGHTCONTRAST:
|
|
|
|
ntype->draw_buttons = node_composit_buts_brightcontrast;
|
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
|
|
|
break;
|
|
|
|
case CMP_NODE_DENOISE:
|
|
|
|
ntype->draw_buttons = node_composit_buts_denoise;
|
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR TEXTURE NODES ***************** */
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_bricks(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-10-28 22:14:31 +00:00
|
|
|
uiLayout *col;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "offset", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, IFACE_("Offset"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset_frequency", DEFAULT_FLAGS, IFACE_("Frequency"), ICON_NONE);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, ptr, "squash", DEFAULT_FLAGS, IFACE_("Squash"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "squash_frequency", DEFAULT_FLAGS, IFACE_("Frequency"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_proc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-12-05 21:14:31 +00:00
|
|
|
PointerRNA tex_ptr;
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2019-08-23 09:52:12 +02:00
|
|
|
ID *id = ptr->owner_id;
|
2008-12-24 10:33:10 +00:00
|
|
|
Tex *tex = (Tex *)node->storage;
|
2009-12-05 21:14:31 +00:00
|
|
|
uiLayout *col, *row;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2009-12-05 21:14:31 +00:00
|
|
|
RNA_pointer_create(id, &RNA_Texture, tex, &tex_ptr);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
col = uiLayoutColumn(layout, false);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
switch (tex->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_BLEND:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "progression", DEFAULT_FLAGS, "", ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "use_flip_axis", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_MARBLE:
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "marble_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis_2", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2011-04-05 06:05:55 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2011-04-05 06:05:55 +00:00
|
|
|
case TEX_MAGIC:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "noise_depth", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-04-05 06:05:55 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2011-04-05 06:05:55 +00:00
|
|
|
case TEX_STUCCI:
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "stucci_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_WOOD:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "wood_type", DEFAULT_FLAGS, "", ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis_2", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiLayoutSetActive(row, !(ELEM(tex->stype, TEX_BAND, TEX_RING)));
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_CLOUDS:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "cloud_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(col, false);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(col,
|
|
|
|
&tex_ptr,
|
|
|
|
"noise_depth",
|
|
|
|
DEFAULT_FLAGS | UI_ITEM_R_EXPAND,
|
|
|
|
IFACE_("Depth"),
|
|
|
|
ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_DISTNOISE:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_distortion", DEFAULT_FLAGS, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2011-04-05 06:05:55 +00:00
|
|
|
case TEX_MUSGRAVE:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "musgrave_type", DEFAULT_FLAGS, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-04-05 06:05:55 +00:00
|
|
|
break;
|
|
|
|
case TEX_VORONOI:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "distance_metric", DEFAULT_FLAGS, "", ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (tex->vn_distm == TEX_MINKOVSKY) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "minkovsky_exponent", DEFAULT_FLAGS, NULL, ICON_NONE);
|
2011-04-05 06:05:55 +00:00
|
|
|
}
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(col, &tex_ptr, "color_mode", DEFAULT_FLAGS, "", ICON_NONE);
|
2011-04-05 06:05:55 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2018-07-31 10:22:19 +02:00
|
|
|
uiTemplateID(layout,
|
|
|
|
C,
|
|
|
|
ptr,
|
|
|
|
"image",
|
|
|
|
"IMAGE_OT_new",
|
|
|
|
"IMAGE_OT_open",
|
|
|
|
NULL,
|
|
|
|
UI_TEMPLATE_ID_FILTER_ALL,
|
2019-11-25 19:41:30 +01:00
|
|
|
false,
|
|
|
|
NULL);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2013-10-10 11:33:20 +00:00
|
|
|
static void node_texture_buts_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2013-07-22 08:56:51 +00:00
|
|
|
{
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
PointerRNA iuserptr;
|
|
|
|
|
2019-08-23 09:52:12 +02:00
|
|
|
RNA_pointer_create(ptr->owner_id, &RNA_ImageUser, node->storage, &iuserptr);
|
2015-06-13 14:04:39 -03:00
|
|
|
uiTemplateImage(layout, C, ptr, "image", &iuserptr, 0, 0);
|
2013-07-22 08:56:51 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "filepath", DEFAULT_FLAGS, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* only once called */
|
|
|
|
static void node_texture_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
if (ntype->type >= TEX_NODE_PROC && ntype->type < TEX_NODE_PROC_MAX) {
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_texture_buts_proc;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-04-28 06:31:57 +00:00
|
|
|
else {
|
|
|
|
switch (ntype->type) {
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_MATH:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_math;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_MIX_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_mix_rgb;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_VALTORGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_colorramp;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_CURVE_RGB:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_curvecol;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_CURVE_TIME:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_time;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_TEXTURE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_buts_texture;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_BRICKS:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_texture_buts_bricks;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_IMAGE:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_texture_buts_image;
|
|
|
|
ntype->draw_buttons_ex = node_texture_buts_image_ex;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_OUTPUT:
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_buttons = node_texture_buts_output;
|
2012-05-27 19:38:10 +00:00
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
}
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2019-01-15 23:24:20 +11:00
|
|
|
/* ****** init draw callbacks for all tree types, only called in usiblender.c, once ************ */
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
static void node_property_update_default(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2019-08-23 09:52:12 +02:00
|
|
|
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
|
2016-02-05 01:39:42 +05:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
ED_node_tag_update_nodetree(bmain, ntree, node);
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_socket_template_properties_update(bNodeType *ntype, bNodeSocketTemplate *stemp)
|
|
|
|
{
|
2020-04-03 18:24:08 +02:00
|
|
|
StructRNA *srna = ntype->rna_ext.srna;
|
2013-03-18 16:34:57 +00:00
|
|
|
PropertyRNA *prop = RNA_struct_type_find_property(srna, stemp->identifier);
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (prop) {
|
2013-03-18 16:34:57 +00:00
|
|
|
RNA_def_property_update_runtime(prop, node_property_update_default);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_template_properties_update(bNodeType *ntype)
|
|
|
|
{
|
|
|
|
bNodeSocketTemplate *stemp;
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
if (ntype->inputs) {
|
2019-09-08 00:12:26 +10:00
|
|
|
for (stemp = ntype->inputs; stemp->type >= 0; stemp++) {
|
2013-03-18 16:34:57 +00:00
|
|
|
node_socket_template_properties_update(ntype, stemp);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2013-03-18 16:34:57 +00:00
|
|
|
if (ntype->outputs) {
|
2019-09-08 00:12:26 +10:00
|
|
|
for (stemp = ntype->outputs; stemp->type >= 0; stemp++) {
|
2013-03-18 16:34:57 +00:00
|
|
|
node_socket_template_properties_update(ntype, stemp);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-05-08 14:58:41 +00:00
|
|
|
static void node_socket_undefined_draw(bContext *UNUSED(C),
|
|
|
|
uiLayout *layout,
|
|
|
|
PointerRNA *UNUSED(ptr),
|
|
|
|
PointerRNA *UNUSED(node_ptr),
|
|
|
|
const char *UNUSED(text))
|
2013-03-19 13:40:16 +00:00
|
|
|
{
|
2014-04-03 22:49:27 +04:00
|
|
|
uiItemL(layout, IFACE_("Undefined Socket Type"), ICON_ERROR);
|
2013-03-19 13:40:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_socket_undefined_draw_color(bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr),
|
|
|
|
PointerRNA *UNUSED(node_ptr),
|
|
|
|
float *r_color)
|
|
|
|
{
|
|
|
|
r_color[0] = 1.0f;
|
|
|
|
r_color[1] = 0.0f;
|
|
|
|
r_color[2] = 0.0f;
|
|
|
|
r_color[3] = 1.0f;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_socket_undefined_interface_draw(bContext *UNUSED(C),
|
|
|
|
uiLayout *layout,
|
|
|
|
PointerRNA *UNUSED(ptr))
|
|
|
|
{
|
2014-04-03 22:49:27 +04:00
|
|
|
uiItemL(layout, IFACE_("Undefined Socket Type"), ICON_ERROR);
|
2013-03-19 13:40:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_socket_undefined_interface_draw_color(bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr),
|
|
|
|
float *r_color)
|
|
|
|
{
|
|
|
|
r_color[0] = 1.0f;
|
|
|
|
r_color[1] = 0.0f;
|
|
|
|
r_color[2] = 0.0f;
|
|
|
|
r_color[3] = 1.0f;
|
|
|
|
}
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
void ED_node_init_butfuncs(void)
|
|
|
|
{
|
2013-03-19 13:40:16 +00:00
|
|
|
/* Fallback types for undefined tree, nodes, sockets
|
|
|
|
* Defined in blenkernel, but not registered in type hashes.
|
|
|
|
*/
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-19 13:40:16 +00:00
|
|
|
/* default ui functions */
|
2013-10-10 11:33:20 +00:00
|
|
|
NodeTypeUndefined.draw_nodetype = node_draw_default;
|
|
|
|
NodeTypeUndefined.draw_nodetype_prepare = node_update_default;
|
2013-03-19 13:40:16 +00:00
|
|
|
NodeTypeUndefined.select_area_func = node_select_area_default;
|
|
|
|
NodeTypeUndefined.tweak_area_func = node_tweak_area_default;
|
2013-10-10 11:33:20 +00:00
|
|
|
NodeTypeUndefined.draw_buttons = NULL;
|
|
|
|
NodeTypeUndefined.draw_buttons_ex = NULL;
|
2013-03-19 13:40:16 +00:00
|
|
|
NodeTypeUndefined.resize_area_func = node_resize_area_default;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-19 13:40:16 +00:00
|
|
|
NodeSocketTypeUndefined.draw = node_socket_undefined_draw;
|
|
|
|
NodeSocketTypeUndefined.draw_color = node_socket_undefined_draw_color;
|
|
|
|
NodeSocketTypeUndefined.interface_draw = node_socket_undefined_interface_draw;
|
|
|
|
NodeSocketTypeUndefined.interface_draw_color = node_socket_undefined_interface_draw_color;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
/* node type ui functions */
|
2018-11-30 15:35:15 +11:00
|
|
|
NODE_TYPES_BEGIN (ntype) {
|
2013-03-18 16:34:57 +00:00
|
|
|
/* default ui functions */
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_nodetype = node_draw_default;
|
|
|
|
ntype->draw_nodetype_prepare = node_update_default;
|
2013-03-18 16:34:57 +00:00
|
|
|
ntype->select_area_func = node_select_area_default;
|
|
|
|
ntype->tweak_area_func = node_tweak_area_default;
|
|
|
|
ntype->resize_area_func = node_resize_area_default;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
node_common_set_butfunc(ntype);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
node_composit_set_butfunc(ntype);
|
|
|
|
node_shader_set_butfunc(ntype);
|
|
|
|
node_texture_set_butfunc(ntype);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
/* define update callbacks for socket properties */
|
|
|
|
node_template_properties_update(ntype);
|
2018-11-30 15:35:15 +11:00
|
|
|
}
|
|
|
|
NODE_TYPES_END;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
/* tree type icons */
|
2018-10-01 10:45:50 +02:00
|
|
|
ntreeType_Composite->ui_icon = ICON_NODE_COMPOSITING;
|
|
|
|
ntreeType_Shader->ui_icon = ICON_NODE_MATERIAL;
|
|
|
|
ntreeType_Texture->ui_icon = ICON_NODE_TEXTURE;
|
2020-11-18 01:44:46 +01:00
|
|
|
ntreeType_Geometry->ui_icon = ICON_NODETREE;
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void ED_init_custom_node_type(bNodeType *ntype)
|
|
|
|
{
|
|
|
|
/* default ui functions */
|
2013-10-10 11:33:20 +00:00
|
|
|
ntype->draw_nodetype = node_draw_default;
|
|
|
|
ntype->draw_nodetype_prepare = node_update_default;
|
2013-03-18 16:34:57 +00:00
|
|
|
ntype->resize_area_func = node_resize_area_default;
|
|
|
|
ntype->select_area_func = node_select_area_default;
|
|
|
|
ntype->tweak_area_func = node_tweak_area_default;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ED_init_custom_node_socket_type(bNodeSocketType *stype)
|
|
|
|
{
|
|
|
|
/* default ui functions */
|
|
|
|
stype->draw = node_socket_button_label;
|
|
|
|
}
|
|
|
|
|
2021-02-24 13:01:24 -06:00
|
|
|
static const float virtual_node_socket_color[4] = {0.2, 0.2, 0.2, 1.0};
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
/* maps standard socket integer type to a color */
|
|
|
|
static const float std_node_socket_colors[][4] = {
|
2021-01-13 17:17:39 +01:00
|
|
|
{0.63, 0.63, 0.63, 1.0}, /* SOCK_FLOAT */
|
2013-03-24 01:19:55 +00:00
|
|
|
{0.39, 0.39, 0.78, 1.0}, /* SOCK_VECTOR */
|
|
|
|
{0.78, 0.78, 0.16, 1.0}, /* SOCK_RGBA */
|
2021-01-13 12:25:31 +01:00
|
|
|
{0.39, 0.78, 0.39, 1.0}, /* SOCK_SHADER */
|
2020-12-02 13:06:11 +01:00
|
|
|
{0.80, 0.65, 0.84, 1.0}, /* SOCK_BOOLEAN */
|
2013-03-24 01:19:55 +00:00
|
|
|
{0.0, 0.0, 0.0, 1.0}, /*__SOCK_MESH (deprecated) */
|
2020-12-02 13:06:11 +01:00
|
|
|
{0.25, 0.75, 0.26, 1.0}, /* SOCK_INT */
|
|
|
|
{0.44, 0.70, 1.00, 1.0}, /* SOCK_STRING */
|
|
|
|
{0.93, 0.62, 0.36, 1.0}, /* SOCK_OBJECT */
|
|
|
|
{0.89, 0.76, 0.43, 1.0}, /* SOCK_IMAGE */
|
|
|
|
{0.00, 0.84, 0.64, 1.0}, /* SOCK_GEOMETRY */
|
2020-12-11 17:32:08 +01:00
|
|
|
{0.96, 0.96, 0.96, 1.0}, /* SOCK_COLLECTION */
|
2021-05-12 12:41:21 +02:00
|
|
|
{0.50, 0.00, 0.00, 1.0}, /* SOCK_TEXTURE, TODO: Choose color. */
|
|
|
|
{0.00, 0.50, 0.00, 1.0}, /* SOCK_MATERIAL, TODO: Choose color. */
|
2013-03-18 16:34:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* common color callbacks for standard types */
|
|
|
|
static void std_node_socket_draw_color(bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr,
|
|
|
|
PointerRNA *UNUSED(node_ptr),
|
|
|
|
float *r_color)
|
|
|
|
{
|
|
|
|
bNodeSocket *sock = ptr->data;
|
|
|
|
int type = sock->typeinfo->type;
|
|
|
|
copy_v4_v4(r_color, std_node_socket_colors[type]);
|
|
|
|
}
|
|
|
|
static void std_node_socket_interface_draw_color(bContext *UNUSED(C),
|
|
|
|
PointerRNA *ptr,
|
|
|
|
float *r_color)
|
|
|
|
{
|
|
|
|
bNodeSocket *sock = ptr->data;
|
|
|
|
int type = sock->typeinfo->type;
|
|
|
|
copy_v4_v4(r_color, std_node_socket_colors[type]);
|
|
|
|
}
|
|
|
|
|
2019-01-15 23:24:20 +11:00
|
|
|
/* draw function for file output node sockets,
|
|
|
|
* displays only sub-path and format, no value button */
|
2013-10-10 13:07:09 +00:00
|
|
|
static void node_file_output_socket_draw(bContext *C,
|
|
|
|
uiLayout *layout,
|
|
|
|
PointerRNA *ptr,
|
|
|
|
PointerRNA *node_ptr)
|
|
|
|
{
|
2019-08-23 09:52:12 +02:00
|
|
|
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
|
2013-10-10 13:07:09 +00:00
|
|
|
bNodeSocket *sock = ptr->data;
|
|
|
|
uiLayout *row;
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA inputptr;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-04-01 11:34:00 +11:00
|
|
|
row = uiLayoutRow(layout, false);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
PointerRNA imfptr = RNA_pointer_get(node_ptr, "format");
|
|
|
|
int imtype = RNA_enum_get(&imfptr, "file_format");
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-10-10 13:07:09 +00:00
|
|
|
if (imtype == R_IMF_IMTYPE_MULTILAYER) {
|
|
|
|
NodeImageMultiFileSocket *input = sock->storage;
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeOutputFileSlotLayer, input, &inputptr);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-10-10 13:07:09 +00:00
|
|
|
uiItemL(row, input->layer, ICON_NONE);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
NodeImageMultiFileSocket *input = sock->storage;
|
|
|
|
uiBlock *block;
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeOutputFileSlotFile, input, &inputptr);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-10-10 13:07:09 +00:00
|
|
|
uiItemL(row, input->path, ICON_NONE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!RNA_boolean_get(&inputptr, "use_node_format")) {
|
2013-10-10 13:07:09 +00:00
|
|
|
imfptr = RNA_pointer_get(&inputptr, "format");
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const char *imtype_name;
|
|
|
|
PropertyRNA *imtype_prop = RNA_struct_find_property(&imfptr, "file_format");
|
2013-10-10 13:07:09 +00:00
|
|
|
RNA_property_enum_name((bContext *)C,
|
|
|
|
&imfptr,
|
|
|
|
imtype_prop,
|
|
|
|
RNA_property_enum_get(&imfptr, imtype_prop),
|
|
|
|
&imtype_name);
|
|
|
|
block = uiLayoutGetBlock(row);
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_emboss_set(block, UI_EMBOSS_PULLDOWN);
|
2013-10-10 13:07:09 +00:00
|
|
|
uiItemL(row, imtype_name, ICON_NONE);
|
2014-11-09 21:20:40 +01:00
|
|
|
UI_block_emboss_set(block, UI_EMBOSS_NONE);
|
2013-10-10 13:07:09 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
|
|
|
|
2013-05-08 14:58:41 +00:00
|
|
|
static void std_node_socket_draw(
|
|
|
|
bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, const char *text)
|
2013-03-18 16:34:57 +00:00
|
|
|
{
|
2013-10-10 13:07:09 +00:00
|
|
|
bNode *node = node_ptr->data;
|
2013-03-18 16:34:57 +00:00
|
|
|
bNodeSocket *sock = ptr->data;
|
|
|
|
int type = sock->typeinfo->type;
|
|
|
|
/*int subtype = sock->typeinfo->subtype;*/
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-10-10 13:07:09 +00:00
|
|
|
/* XXX not nice, eventually give this node its own socket type ... */
|
|
|
|
if (node->type == CMP_NODE_OUTPUT_FILE) {
|
|
|
|
node_file_output_socket_draw(C, layout, ptr, node_ptr);
|
2014-02-19 11:54:28 +01:00
|
|
|
return;
|
2013-10-10 13:07:09 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2017-05-07 20:32:51 +02:00
|
|
|
if ((sock->in_out == SOCK_OUT) || (sock->flag & SOCK_IN_USE) || (sock->flag & SOCK_HIDE_VALUE)) {
|
2013-05-08 14:58:41 +00:00
|
|
|
node_socket_button_label(C, layout, ptr, node_ptr, text);
|
2013-05-08 14:58:37 +00:00
|
|
|
return;
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
switch (type) {
|
|
|
|
case SOCK_FLOAT:
|
|
|
|
case SOCK_INT:
|
|
|
|
case SOCK_BOOLEAN:
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, text, 0);
|
2013-03-18 16:34:57 +00:00
|
|
|
break;
|
|
|
|
case SOCK_VECTOR:
|
2019-08-10 17:37:39 +02:00
|
|
|
if (sock->flag & SOCK_COMPACT) {
|
|
|
|
uiTemplateComponentMenu(layout, ptr, "default_value", text);
|
|
|
|
}
|
|
|
|
else {
|
2019-08-16 17:59:12 +02:00
|
|
|
if (sock->typeinfo->subtype == PROP_DIRECTION) {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, "", ICON_NONE);
|
2019-08-16 17:59:12 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiLayout *column = uiLayoutColumn(layout, true);
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(column, ptr, "default_value", DEFAULT_FLAGS, text, ICON_NONE);
|
2019-08-16 17:59:12 +02:00
|
|
|
}
|
2019-08-10 17:37:39 +02:00
|
|
|
}
|
2013-03-18 16:34:57 +00:00
|
|
|
break;
|
2021-03-08 13:38:42 +01:00
|
|
|
case SOCK_RGBA: {
|
2021-03-24 12:36:19 -04:00
|
|
|
uiLayout *row = uiLayoutSplit(layout, 0.4f, false);
|
2021-03-08 13:38:42 +01:00
|
|
|
uiItemL(row, text, 0);
|
|
|
|
uiItemR(row, ptr, "default_value", DEFAULT_FLAGS, "", 0);
|
|
|
|
break;
|
|
|
|
}
|
2013-07-19 10:40:43 +00:00
|
|
|
case SOCK_STRING: {
|
2021-03-24 12:36:19 -04:00
|
|
|
uiLayout *row = uiLayoutSplit(layout, 0.4f, false);
|
2013-05-08 14:58:41 +00:00
|
|
|
uiItemL(row, text, 0);
|
2021-03-02 13:01:33 -06:00
|
|
|
|
|
|
|
const bNodeTree *node_tree = (const bNodeTree *)node_ptr->owner_id;
|
|
|
|
if (node_tree->type == NTREE_GEOMETRY) {
|
2021-04-19 12:31:18 -05:00
|
|
|
node_geometry_add_attribute_search_button(C, node_tree, node, ptr, row);
|
2021-03-02 13:01:33 -06:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiItemR(row, ptr, "default_value", DEFAULT_FLAGS, "", 0);
|
|
|
|
}
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
break;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2020-04-20 13:22:20 +02:00
|
|
|
case SOCK_OBJECT: {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, text, 0);
|
2020-04-20 13:22:20 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case SOCK_IMAGE: {
|
2020-05-01 15:21:41 +02:00
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, text, 0);
|
2020-04-20 13:22:20 +02:00
|
|
|
break;
|
|
|
|
}
|
2020-12-11 17:32:08 +01:00
|
|
|
case SOCK_COLLECTION: {
|
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, text, 0);
|
|
|
|
break;
|
|
|
|
}
|
2021-05-12 12:41:21 +02:00
|
|
|
case SOCK_TEXTURE: {
|
|
|
|
uiTemplateID(layout, C, ptr, "default_value", "texture.new", NULL, NULL, 0, ICON_NONE, NULL);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case SOCK_MATERIAL: {
|
|
|
|
uiItemR(layout, ptr, "default_value", DEFAULT_FLAGS, text, 0);
|
|
|
|
break;
|
|
|
|
}
|
2013-03-19 10:03:52 +00:00
|
|
|
default:
|
2013-05-08 14:58:41 +00:00
|
|
|
node_socket_button_label(C, layout, ptr, node_ptr, text);
|
2013-03-19 10:03:52 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-03-28 10:32:04 +00:00
|
|
|
static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
bNodeSocket *sock = ptr->data;
|
|
|
|
int type = sock->typeinfo->type;
|
2021-01-10 13:24:37 -06:00
|
|
|
|
|
|
|
uiLayout *col = uiLayoutColumn(layout, false);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-28 10:32:04 +00:00
|
|
|
switch (type) {
|
2013-07-19 10:40:43 +00:00
|
|
|
case SOCK_FLOAT: {
|
2021-01-10 13:24:37 -06:00
|
|
|
uiItemR(col, ptr, "default_value", DEFAULT_FLAGS, IFACE_("Default"), ICON_NONE);
|
|
|
|
uiLayout *sub = uiLayoutColumn(col, true);
|
|
|
|
uiItemR(sub, ptr, "min_value", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE);
|
|
|
|
uiItemR(sub, ptr, "max_value", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
|
2013-03-28 10:32:04 +00:00
|
|
|
break;
|
|
|
|
}
|
2013-07-19 10:40:43 +00:00
|
|
|
case SOCK_INT: {
|
2021-01-10 13:24:37 -06:00
|
|
|
uiItemR(col, ptr, "default_value", DEFAULT_FLAGS, IFACE_("Default"), ICON_NONE);
|
|
|
|
uiLayout *sub = uiLayoutColumn(col, true);
|
|
|
|
uiItemR(sub, ptr, "min_value", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE);
|
|
|
|
uiItemR(sub, ptr, "max_value", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
|
2013-03-28 10:32:04 +00:00
|
|
|
break;
|
|
|
|
}
|
2013-07-19 10:40:43 +00:00
|
|
|
case SOCK_VECTOR: {
|
2021-01-10 13:24:37 -06:00
|
|
|
uiItemR(col, ptr, "default_value", UI_ITEM_R_EXPAND, IFACE_("Default"), ICON_NONE);
|
|
|
|
uiLayout *sub = uiLayoutColumn(col, true);
|
|
|
|
uiItemR(sub, ptr, "min_value", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE);
|
|
|
|
uiItemR(sub, ptr, "max_value", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE);
|
2013-03-28 10:32:04 +00:00
|
|
|
break;
|
|
|
|
}
|
2018-02-18 03:15:13 +01:00
|
|
|
case SOCK_BOOLEAN:
|
2013-07-19 10:40:43 +00:00
|
|
|
case SOCK_RGBA:
|
|
|
|
case SOCK_STRING: {
|
2021-01-10 13:24:37 -06:00
|
|
|
uiItemR(col, ptr, "default_value", DEFAULT_FLAGS, IFACE_("Default"), 0);
|
2013-03-28 10:32:04 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2020-07-27 15:03:23 +03:00
|
|
|
|
|
|
|
uiItemR(layout, ptr, "hide_value", DEFAULT_FLAGS, NULL, 0);
|
2013-03-28 10:32:04 +00:00
|
|
|
}
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
void ED_init_standard_node_socket_type(bNodeSocketType *stype)
|
|
|
|
{
|
|
|
|
stype->draw = std_node_socket_draw;
|
|
|
|
stype->draw_color = std_node_socket_draw_color;
|
2013-03-28 10:32:04 +00:00
|
|
|
stype->interface_draw = std_node_socket_interface_draw;
|
2013-03-18 16:34:57 +00:00
|
|
|
stype->interface_draw_color = std_node_socket_interface_draw_color;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_socket_virtual_draw_color(bContext *UNUSED(C),
|
|
|
|
PointerRNA *UNUSED(ptr),
|
|
|
|
PointerRNA *UNUSED(node_ptr),
|
|
|
|
float *r_color)
|
|
|
|
{
|
2021-02-24 13:01:24 -06:00
|
|
|
copy_v4_v4(r_color, virtual_node_socket_color);
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void ED_init_node_socket_type_virtual(bNodeSocketType *stype)
|
|
|
|
{
|
|
|
|
stype->draw = node_socket_button_label;
|
|
|
|
stype->draw_color = node_socket_virtual_draw_color;
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ************** Generic drawing ************** */
|
|
|
|
|
2013-04-24 16:36:50 +00:00
|
|
|
void draw_nodespace_back_pix(const bContext *C,
|
2020-03-06 16:56:42 +01:00
|
|
|
ARegion *region,
|
2013-04-24 16:36:50 +00:00
|
|
|
SpaceNode *snode,
|
|
|
|
bNodeInstanceKey parent_key)
|
|
|
|
{
|
2018-06-11 15:40:37 +02:00
|
|
|
Main *bmain = CTX_data_main(C);
|
2013-04-24 16:36:50 +00:00
|
|
|
bNodeInstanceKey active_viewer_key = (snode->nodetree ? snode->nodetree->active_viewer_key :
|
|
|
|
NODE_INSTANCE_KEY_NONE);
|
2019-04-23 09:15:45 -06:00
|
|
|
GPU_matrix_push_projection();
|
|
|
|
GPU_matrix_push();
|
2020-03-06 16:56:42 +01:00
|
|
|
wmOrtho2_region_pixelspace(region);
|
2019-04-23 09:15:45 -06:00
|
|
|
GPU_matrix_identity_set();
|
2020-03-06 16:56:42 +01:00
|
|
|
ED_region_draw_cb_draw(C, region, REGION_DRAW_BACKDROP);
|
2019-04-23 09:15:45 -06:00
|
|
|
GPU_matrix_pop_projection();
|
|
|
|
GPU_matrix_pop();
|
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (!(snode->flag & SNODE_BACKDRAW) || !ED_node_is_compositor(snode)) {
|
2013-04-24 16:36:50 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (parent_key.value != active_viewer_key.value) {
|
2013-04-24 16:36:50 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-11-24 13:18:57 +01:00
|
|
|
GPU_matrix_push_projection();
|
|
|
|
GPU_matrix_push();
|
|
|
|
|
|
|
|
/* The draw manager is used to draw the backdrop image. */
|
|
|
|
GPUFrameBuffer *old_fb = GPU_framebuffer_active_get();
|
|
|
|
GPU_framebuffer_restore();
|
2021-01-25 12:44:18 +01:00
|
|
|
BLI_thread_lock(LOCK_DRAW_IMAGE);
|
2020-11-24 13:18:57 +01:00
|
|
|
DRW_draw_view(C);
|
2021-01-25 12:44:18 +01:00
|
|
|
BLI_thread_unlock(LOCK_DRAW_IMAGE);
|
2020-11-24 13:18:57 +01:00
|
|
|
GPU_framebuffer_bind_no_srgb(old_fb);
|
|
|
|
/* Draw manager changes the depth state. Set it back to NONE. Without this the node preview
|
|
|
|
* images aren't drawn correctly. */
|
|
|
|
GPU_depth_test(GPU_DEPTH_NONE);
|
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
void *lock;
|
|
|
|
Image *ima = BKE_image_ensure_viewer(bmain, IMA_TYPE_COMPOSITE, "Viewer Node");
|
|
|
|
ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, &lock);
|
2013-04-24 16:36:50 +00:00
|
|
|
if (ibuf) {
|
|
|
|
/* somehow the offset has to be calculated inverse */
|
2020-03-06 16:56:42 +01:00
|
|
|
wmOrtho2_region_pixelspace(region);
|
2020-09-08 15:20:07 +02:00
|
|
|
const float x = (region->winx - snode->zoom * ibuf->x) / 2 + snode->xof;
|
|
|
|
const float y = (region->winy - snode->zoom * ibuf->y) / 2 + snode->yof;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2014-05-19 18:00:20 +10:00
|
|
|
/** \note draw selected info on backdrop */
|
2013-04-24 16:36:50 +00:00
|
|
|
if (snode->edittree) {
|
|
|
|
bNode *node = snode->edittree->nodes.first;
|
|
|
|
rctf *viewer_border = &snode->nodetree->viewer_border;
|
|
|
|
while (node) {
|
|
|
|
if (node->flag & NODE_SELECT) {
|
2013-10-10 11:33:20 +00:00
|
|
|
if (node->typeinfo->draw_backdrop) {
|
|
|
|
node->typeinfo->draw_backdrop(snode, ibuf, node, x, y);
|
2013-03-07 17:47:30 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2013-04-24 16:36:50 +00:00
|
|
|
node = node->next;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-04-24 16:36:50 +00:00
|
|
|
if ((snode->nodetree->flag & NTREE_VIEWER_BORDER) &&
|
2014-06-05 20:05:41 +06:00
|
|
|
viewer_border->xmin < viewer_border->xmax && viewer_border->ymin < viewer_border->ymax) {
|
|
|
|
rcti pixel_border;
|
|
|
|
BLI_rcti_init(&pixel_border,
|
|
|
|
x + snode->zoom * viewer_border->xmin * ibuf->x,
|
|
|
|
x + snode->zoom * viewer_border->xmax * ibuf->x,
|
|
|
|
y + snode->zoom * viewer_border->ymin * ibuf->y,
|
|
|
|
y + snode->zoom * viewer_border->ymax * ibuf->y);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
uint pos = GPU_vertformat_attr_add(
|
|
|
|
immVertexFormat(), "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
2017-02-21 22:17:47 -03:00
|
|
|
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
|
|
|
|
immUniformThemeColor(TH_ACTIVE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2017-02-21 22:17:47 -03:00
|
|
|
immDrawBorderCorners(pos, &pixel_border, 1.0f, 1.0f);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2017-02-21 22:17:47 -03:00
|
|
|
immUnbindProgram();
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-04-24 16:36:50 +00:00
|
|
|
BKE_image_release_ibuf(ima, ibuf, lock);
|
2020-11-24 13:18:57 +01:00
|
|
|
GPU_matrix_pop_projection();
|
|
|
|
GPU_matrix_pop();
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* return quadratic beziers points for a given nodelink and clip if v2d is not NULL. */
|
2021-02-11 01:16:17 -06:00
|
|
|
bool node_link_bezier_handles(const View2D *v2d,
|
|
|
|
const SpaceNode *snode,
|
|
|
|
const bNodeLink *link,
|
|
|
|
float vec[4][2])
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2013-09-05 13:03:03 +00:00
|
|
|
float cursor[2] = {0.0f, 0.0f};
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-09-05 13:03:03 +00:00
|
|
|
/* this function can be called with snode null (via cut_links_intersect) */
|
2021-01-19 16:43:08 -06:00
|
|
|
/* XXX map snode->runtime->cursor back to view space */
|
2013-09-05 13:03:03 +00:00
|
|
|
if (snode) {
|
2021-01-19 16:43:08 -06:00
|
|
|
cursor[0] = snode->runtime->cursor[0] * UI_DPI_FAC;
|
|
|
|
cursor[1] = snode->runtime->cursor[1] * UI_DPI_FAC;
|
2013-09-05 13:03:03 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2009-02-07 14:03:34 +00:00
|
|
|
/* in v0 and v3 we put begin/end points */
|
2020-09-08 15:20:07 +02:00
|
|
|
int toreroute, fromreroute;
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->fromsock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
vec[0][0] = link->fromsock->locx;
|
|
|
|
vec[0][1] = link->fromsock->locy;
|
2021-03-10 14:57:57 +01:00
|
|
|
if (link->fromsock->flag & SOCK_MULTI_INPUT) {
|
|
|
|
node_link_calculate_multi_input_position(link->fromsock->locx,
|
|
|
|
link->fromsock->locy,
|
|
|
|
link->fromsock->total_inputs - 1,
|
|
|
|
link->fromsock->total_inputs,
|
|
|
|
vec[0]);
|
|
|
|
}
|
2012-06-01 12:38:03 +00:00
|
|
|
fromreroute = (link->fromnode && link->fromnode->type == NODE_REROUTE);
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
|
|
|
else {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (snode == NULL) {
|
2020-09-02 19:10:18 +02:00
|
|
|
return false;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2013-09-05 13:03:03 +00:00
|
|
|
copy_v2_v2(vec[0], cursor);
|
2012-06-01 12:38:03 +00:00
|
|
|
fromreroute = 0;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->tosock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
vec[3][0] = link->tosock->locx;
|
|
|
|
vec[3][1] = link->tosock->locy;
|
2021-02-11 01:16:17 -06:00
|
|
|
if (!(link->tonode->flag & NODE_HIDDEN) && link->tosock->flag & SOCK_MULTI_INPUT) {
|
2021-03-10 14:57:57 +01:00
|
|
|
node_link_calculate_multi_input_position(link->tosock->locx,
|
|
|
|
link->tosock->locy,
|
|
|
|
link->multi_input_socket_index,
|
|
|
|
link->tosock->total_inputs,
|
|
|
|
vec[3]);
|
2021-02-11 01:16:17 -06:00
|
|
|
}
|
2012-06-01 12:38:03 +00:00
|
|
|
toreroute = (link->tonode && link->tonode->type == NODE_REROUTE);
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
|
|
|
else {
|
2019-03-26 21:16:47 +11:00
|
|
|
if (snode == NULL) {
|
2020-09-02 19:10:18 +02:00
|
|
|
return false;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2013-09-05 13:03:03 +00:00
|
|
|
copy_v2_v2(vec[3], cursor);
|
2012-06-01 12:38:03 +00:00
|
|
|
toreroute = 0;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2015-11-13 00:03:12 +11:00
|
|
|
/* may be called outside of drawing (so pass spacetype) */
|
2018-08-10 14:24:31 +02:00
|
|
|
int curving = UI_GetThemeValueType(TH_NODE_CURVING, SPACE_NODE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-08-10 14:24:31 +02:00
|
|
|
if (curving == 0) {
|
|
|
|
/* Straight line: align all points. */
|
|
|
|
mid_v2_v2v2(vec[1], vec[0], vec[3]);
|
|
|
|
mid_v2_v2v2(vec[2], vec[1], vec[3]);
|
2020-09-02 19:10:18 +02:00
|
|
|
return true;
|
2018-08-10 14:24:31 +02:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
const float dist = curving * 0.10f * fabsf(vec[0][0] - vec[3][0]);
|
|
|
|
const float deltax = vec[3][0] - vec[0][0];
|
|
|
|
const float deltay = vec[3][1] - vec[0][1];
|
2008-12-24 10:33:10 +00:00
|
|
|
/* check direction later, for top sockets */
|
2012-06-01 12:38:03 +00:00
|
|
|
if (fromreroute) {
|
2020-03-06 17:18:10 +01:00
|
|
|
if (fabsf(deltax) > fabsf(deltay)) {
|
2012-07-09 23:07:15 +00:00
|
|
|
vec[1][1] = vec[0][1];
|
|
|
|
vec[1][0] = vec[0][0] + (deltax > 0 ? dist : -dist);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
vec[1][0] = vec[0][0];
|
|
|
|
vec[1][1] = vec[0][1] + (deltay > 0 ? dist : -dist);
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
else {
|
2012-06-01 12:38:03 +00:00
|
|
|
vec[1][0] = vec[0][0] + dist;
|
|
|
|
vec[1][1] = vec[0][1];
|
|
|
|
}
|
|
|
|
if (toreroute) {
|
2020-03-06 17:18:10 +01:00
|
|
|
if (fabsf(deltax) > fabsf(deltay)) {
|
2012-07-09 23:07:15 +00:00
|
|
|
vec[2][1] = vec[3][1];
|
|
|
|
vec[2][0] = vec[3][0] + (deltax > 0 ? -dist : dist);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
vec[2][0] = vec[3][0];
|
|
|
|
vec[2][1] = vec[3][1] + (deltay > 0 ? -dist : dist);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-01 12:38:03 +00:00
|
|
|
vec[2][0] = vec[3][0] - dist;
|
|
|
|
vec[2][1] = vec[3][1];
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-12-21 05:07:26 +00:00
|
|
|
if (v2d && min_ffff(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) > v2d->cur.xmax) {
|
2020-09-02 19:10:18 +02:00
|
|
|
return false; /* clipped */
|
2012-07-09 23:07:15 +00:00
|
|
|
}
|
2020-07-03 17:20:08 +02:00
|
|
|
if (v2d && max_ffff(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) < v2d->cur.xmin) {
|
2020-09-02 19:10:18 +02:00
|
|
|
return false; /* clipped */
|
2012-07-09 23:07:15 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-09-02 19:10:18 +02:00
|
|
|
return true;
|
2018-04-05 15:41:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* if v2d not NULL, it clips and returns 0 if not visible */
|
2021-01-15 10:48:22 -06:00
|
|
|
bool node_link_bezier_points(const View2D *v2d,
|
|
|
|
const SpaceNode *snode,
|
|
|
|
const bNodeLink *link,
|
|
|
|
float coord_array[][2],
|
|
|
|
const int resol)
|
2018-04-05 15:41:17 +02:00
|
|
|
{
|
|
|
|
float vec[4][2];
|
|
|
|
|
|
|
|
if (node_link_bezier_handles(v2d, snode, link, vec)) {
|
2009-02-07 14:03:34 +00:00
|
|
|
/* always do all three, to prevent data hanging around */
|
2012-07-09 23:07:15 +00:00
|
|
|
BKE_curve_forward_diff_bezier(
|
2020-08-08 13:29:21 +10:00
|
|
|
vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0] + 0, resol, sizeof(float[2]));
|
2012-07-09 23:07:15 +00:00
|
|
|
BKE_curve_forward_diff_bezier(
|
2020-08-08 13:29:21 +10:00
|
|
|
vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0] + 1, resol, sizeof(float[2]));
|
2018-06-04 09:31:30 +02:00
|
|
|
|
2020-09-08 15:20:07 +02:00
|
|
|
return true;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
2020-09-08 15:20:07 +02:00
|
|
|
return false;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
#define NODELINK_GROUP_SIZE 256
|
2012-05-27 19:38:10 +00:00
|
|
|
#define LINK_RESOL 24
|
2018-04-05 16:07:28 +02:00
|
|
|
#define LINK_WIDTH (2.5f * UI_DPI_FAC)
|
|
|
|
#define ARROW_SIZE (7 * UI_DPI_FAC)
|
2018-04-05 15:41:17 +02:00
|
|
|
|
2021-03-16 19:11:54 +00:00
|
|
|
/* Reroute arrow shape and mute bar. These are expanded here and shrunk in the glsl code.
|
|
|
|
* See: gpu_shader_2D_nodelink_vert.glsl */
|
2018-04-05 16:07:28 +02:00
|
|
|
static float arrow_verts[3][2] = {{-1.0f, 1.0f}, {0.0f, 0.0f}, {-1.0f, -1.0f}};
|
2018-04-05 15:41:17 +02:00
|
|
|
static float arrow_expand_axis[3][2] = {{0.7071f, 0.7071f}, {M_SQRT2, 0.0f}, {0.7071f, -0.7071f}};
|
2021-03-16 19:11:54 +00:00
|
|
|
static float mute_verts[3][2] = {{0.7071f, 1.0f}, {0.7071f, 0.0f}, {0.7071f, -1.0f}};
|
|
|
|
static float mute_expand_axis[3][2] = {{1.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, -0.0f}};
|
2018-04-05 15:41:17 +02:00
|
|
|
|
2018-07-31 20:44:49 +10:00
|
|
|
static struct {
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUBatch *batch; /* for batching line together */
|
|
|
|
GPUBatch *batch_single; /* for single line */
|
|
|
|
GPUVertBuf *inst_vbo;
|
2020-02-08 01:02:18 +11:00
|
|
|
uint p0_id, p1_id, p2_id, p3_id;
|
2021-03-16 19:11:54 +00:00
|
|
|
uint colid_id, muted_id;
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertBufRaw p0_step, p1_step, p2_step, p3_step;
|
2021-03-16 19:11:54 +00:00
|
|
|
GPUVertBufRaw colid_step, muted_step;
|
2020-02-08 01:02:18 +11:00
|
|
|
uint count;
|
2018-04-05 15:41:17 +02:00
|
|
|
bool enabled;
|
|
|
|
} g_batch_link = {0};
|
|
|
|
|
|
|
|
static void nodelink_batch_reset(void)
|
|
|
|
{
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_vertbuf_attr_get_raw_data(g_batch_link.inst_vbo, g_batch_link.p0_id, &g_batch_link.p0_step);
|
|
|
|
GPU_vertbuf_attr_get_raw_data(g_batch_link.inst_vbo, g_batch_link.p1_id, &g_batch_link.p1_step);
|
|
|
|
GPU_vertbuf_attr_get_raw_data(g_batch_link.inst_vbo, g_batch_link.p2_id, &g_batch_link.p2_step);
|
|
|
|
GPU_vertbuf_attr_get_raw_data(g_batch_link.inst_vbo, g_batch_link.p3_id, &g_batch_link.p3_step);
|
|
|
|
GPU_vertbuf_attr_get_raw_data(
|
|
|
|
g_batch_link.inst_vbo, g_batch_link.colid_id, &g_batch_link.colid_step);
|
2021-03-16 19:11:54 +00:00
|
|
|
GPU_vertbuf_attr_get_raw_data(
|
|
|
|
g_batch_link.inst_vbo, g_batch_link.muted_id, &g_batch_link.muted_step);
|
2018-04-05 15:41:17 +02:00
|
|
|
g_batch_link.count = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void set_nodelink_vertex(GPUVertBuf *vbo,
|
2020-02-08 01:02:18 +11:00
|
|
|
uint uv_id,
|
|
|
|
uint pos_id,
|
|
|
|
uint exp_id,
|
|
|
|
uint v,
|
|
|
|
const uchar uv[2],
|
2018-04-05 15:41:17 +02:00
|
|
|
const float pos[2],
|
|
|
|
const float exp[2])
|
|
|
|
{
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_vertbuf_attr_set(vbo, uv_id, v, uv);
|
|
|
|
GPU_vertbuf_attr_set(vbo, pos_id, v, pos);
|
|
|
|
GPU_vertbuf_attr_set(vbo, exp_id, v, exp);
|
2018-04-05 15:41:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void nodelink_batch_init(void)
|
|
|
|
{
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertFormat format = {0};
|
|
|
|
uint uv_id = GPU_vertformat_attr_add(&format, "uv", GPU_COMP_U8, 2, GPU_FETCH_INT_TO_FLOAT_UNIT);
|
|
|
|
uint pos_id = GPU_vertformat_attr_add(&format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
uint expand_id = GPU_vertformat_attr_add(&format, "expand", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
GPUVertBuf *vbo = GPU_vertbuf_create_with_format_ex(&format, GPU_USAGE_STATIC);
|
2018-04-05 15:41:17 +02:00
|
|
|
int vcount = LINK_RESOL * 2; /* curve */
|
|
|
|
vcount += 2; /* restart strip */
|
2018-04-19 07:47:03 +02:00
|
|
|
vcount += 3 * 2; /* arrow */
|
2021-03-16 19:11:54 +00:00
|
|
|
vcount += 2; /* restart strip */
|
|
|
|
vcount += 3 * 2; /* mute */
|
2018-04-05 15:41:17 +02:00
|
|
|
vcount *= 2; /* shadow */
|
|
|
|
vcount += 2; /* restart strip */
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_vertbuf_data_alloc(vbo, vcount);
|
2018-04-05 15:41:17 +02:00
|
|
|
int v = 0;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-09-08 00:12:26 +10:00
|
|
|
for (int k = 0; k < 2; k++) {
|
2020-02-08 01:02:18 +11:00
|
|
|
uchar uv[2] = {0, 0};
|
2018-04-05 15:41:17 +02:00
|
|
|
float pos[2] = {0.0f, 0.0f};
|
|
|
|
float exp[2] = {0.0f, 1.0f};
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* restart */
|
2019-03-26 21:16:47 +11:00
|
|
|
if (k == 1) {
|
2018-04-05 15:41:17 +02:00
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* curve strip */
|
2019-09-08 00:12:26 +10:00
|
|
|
for (int i = 0; i < LINK_RESOL; i++) {
|
2018-04-19 07:47:03 +02:00
|
|
|
uv[0] = 255 * (i / (float)(LINK_RESOL - 1));
|
2018-04-05 15:41:17 +02:00
|
|
|
uv[1] = 0;
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
uv[1] = 255;
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2018-04-05 15:41:17 +02:00
|
|
|
/* restart */
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
uv[0] = 127;
|
2019-04-17 06:17:24 +02:00
|
|
|
uv[1] = 0;
|
2018-04-05 15:41:17 +02:00
|
|
|
copy_v2_v2(pos, arrow_verts[0]);
|
|
|
|
copy_v2_v2(exp, arrow_expand_axis[0]);
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
/* arrow */
|
2019-09-08 00:12:26 +10:00
|
|
|
for (int i = 0; i < 3; i++) {
|
2018-04-05 15:41:17 +02:00
|
|
|
uv[1] = 0;
|
|
|
|
copy_v2_v2(pos, arrow_verts[i]);
|
|
|
|
copy_v2_v2(exp, arrow_expand_axis[i]);
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
uv[1] = 255;
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
|
|
|
|
2021-03-16 19:11:54 +00:00
|
|
|
/* restart */
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
|
|
|
|
uv[0] = 127;
|
|
|
|
uv[1] = 0;
|
|
|
|
copy_v2_v2(pos, mute_verts[0]);
|
|
|
|
copy_v2_v2(exp, mute_expand_axis[0]);
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
/* bar */
|
|
|
|
for (int i = 0; i < 3; ++i) {
|
|
|
|
uv[1] = 0;
|
|
|
|
copy_v2_v2(pos, mute_verts[i]);
|
|
|
|
copy_v2_v2(exp, mute_expand_axis[i]);
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
|
|
|
|
uv[1] = 255;
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
|
|
|
}
|
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* restart */
|
|
|
|
if (k == 0) {
|
|
|
|
set_nodelink_vertex(vbo, uv_id, pos_id, expand_id, v++, uv, pos, exp);
|
2017-02-21 22:17:47 -03:00
|
|
|
}
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
g_batch_link.batch = GPU_batch_create_ex(GPU_PRIM_TRI_STRIP, vbo, NULL, GPU_BATCH_OWNS_VBO);
|
2018-04-05 15:41:17 +02:00
|
|
|
gpu_batch_presets_register(g_batch_link.batch);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
g_batch_link.batch_single = GPU_batch_create_ex(GPU_PRIM_TRI_STRIP, vbo, NULL, 0);
|
2018-04-05 15:41:17 +02:00
|
|
|
gpu_batch_presets_register(g_batch_link.batch_single);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* Instances data */
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUVertFormat format_inst = {0};
|
|
|
|
g_batch_link.p0_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "P0", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
g_batch_link.p1_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "P1", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
g_batch_link.p2_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "P2", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
g_batch_link.p3_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "P3", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
|
|
|
g_batch_link.colid_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "colid_doarrow", GPU_COMP_U8, 4, GPU_FETCH_INT);
|
2021-03-16 19:11:54 +00:00
|
|
|
g_batch_link.muted_id = GPU_vertformat_attr_add(
|
|
|
|
&format_inst, "domuted", GPU_COMP_U8, 2, GPU_FETCH_INT);
|
2018-07-18 00:12:21 +02:00
|
|
|
g_batch_link.inst_vbo = GPU_vertbuf_create_with_format_ex(&format_inst, GPU_USAGE_STREAM);
|
2019-01-15 23:24:20 +11:00
|
|
|
/* Alloc max count but only draw the range we need. */
|
|
|
|
GPU_vertbuf_data_alloc(g_batch_link.inst_vbo, NODELINK_GROUP_SIZE);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_batch_instbuf_set(g_batch_link.batch, g_batch_link.inst_vbo, true);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
nodelink_batch_reset();
|
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
static char nodelink_get_color_id(int th_col)
|
|
|
|
{
|
|
|
|
switch (th_col) {
|
|
|
|
case TH_WIRE:
|
|
|
|
return 1;
|
|
|
|
case TH_WIRE_INNER:
|
|
|
|
return 2;
|
|
|
|
case TH_ACTIVE:
|
|
|
|
return 3;
|
|
|
|
case TH_EDGE_SELECT:
|
|
|
|
return 4;
|
|
|
|
case TH_REDALERT:
|
|
|
|
return 5;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2021-01-15 10:48:22 -06:00
|
|
|
static void nodelink_batch_draw(const SpaceNode *snode)
|
2018-04-05 15:41:17 +02:00
|
|
|
{
|
2019-03-26 21:16:47 +11:00
|
|
|
if (g_batch_link.count == 0) {
|
2018-04-05 15:41:17 +02:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2020-08-16 15:38:34 +02:00
|
|
|
GPU_blend(GPU_BLEND_ALPHA);
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
float colors[6][4] = {{0.0f}};
|
|
|
|
UI_GetThemeColor4fv(TH_WIRE_INNER, colors[nodelink_get_color_id(TH_WIRE_INNER)]);
|
|
|
|
UI_GetThemeColor4fv(TH_WIRE, colors[nodelink_get_color_id(TH_WIRE)]);
|
|
|
|
UI_GetThemeColor4fv(TH_ACTIVE, colors[nodelink_get_color_id(TH_ACTIVE)]);
|
|
|
|
UI_GetThemeColor4fv(TH_EDGE_SELECT, colors[nodelink_get_color_id(TH_EDGE_SELECT)]);
|
|
|
|
UI_GetThemeColor4fv(TH_REDALERT, colors[nodelink_get_color_id(TH_REDALERT)]);
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2019-01-21 11:28:41 +11:00
|
|
|
GPU_vertbuf_data_len_set(g_batch_link.inst_vbo, g_batch_link.count);
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_vertbuf_use(g_batch_link.inst_vbo); /* force update. */
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_batch_program_set_builtin(g_batch_link.batch, GPU_SHADER_2D_NODELINK_INST);
|
2020-08-13 15:35:16 +02:00
|
|
|
GPU_batch_uniform_4fv_array(g_batch_link.batch, "colors", 6, colors);
|
2021-01-19 16:43:08 -06:00
|
|
|
GPU_batch_uniform_1f(g_batch_link.batch, "expandSize", snode->runtime->aspect * LINK_WIDTH);
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_batch_uniform_1f(g_batch_link.batch, "arrowSize", ARROW_SIZE);
|
|
|
|
GPU_batch_draw(g_batch_link.batch);
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
nodelink_batch_reset();
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2020-08-16 15:38:34 +02:00
|
|
|
GPU_blend(GPU_BLEND_NONE);
|
2018-04-05 15:41:17 +02:00
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
void nodelink_batch_start(SpaceNode *UNUSED(snode))
|
|
|
|
{
|
2019-10-02 14:13:41 +02:00
|
|
|
g_batch_link.enabled = true;
|
2018-04-05 15:41:17 +02:00
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
void nodelink_batch_end(SpaceNode *snode)
|
|
|
|
{
|
|
|
|
nodelink_batch_draw(snode);
|
|
|
|
g_batch_link.enabled = false;
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-01-15 10:48:22 -06:00
|
|
|
static void nodelink_batch_add_link(const SpaceNode *snode,
|
2018-04-05 15:41:17 +02:00
|
|
|
const float p0[2],
|
|
|
|
const float p1[2],
|
|
|
|
const float p2[2],
|
|
|
|
const float p3[2],
|
|
|
|
int th_col1,
|
|
|
|
int th_col2,
|
|
|
|
int th_col3,
|
2021-03-16 19:11:54 +00:00
|
|
|
bool drawarrow,
|
|
|
|
bool drawmuted)
|
2018-04-05 15:41:17 +02:00
|
|
|
{
|
|
|
|
/* Only allow these colors. If more is needed, you need to modify the shader accordingly. */
|
|
|
|
BLI_assert(ELEM(th_col1, TH_WIRE_INNER, TH_WIRE, TH_ACTIVE, TH_EDGE_SELECT, TH_REDALERT));
|
|
|
|
BLI_assert(ELEM(th_col2, TH_WIRE_INNER, TH_WIRE, TH_ACTIVE, TH_EDGE_SELECT, TH_REDALERT));
|
2021-03-16 19:11:54 +00:00
|
|
|
BLI_assert(ELEM(th_col3, TH_WIRE, TH_REDALERT, -1));
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
g_batch_link.count++;
|
2018-07-18 00:12:21 +02:00
|
|
|
copy_v2_v2(GPU_vertbuf_raw_step(&g_batch_link.p0_step), p0);
|
|
|
|
copy_v2_v2(GPU_vertbuf_raw_step(&g_batch_link.p1_step), p1);
|
|
|
|
copy_v2_v2(GPU_vertbuf_raw_step(&g_batch_link.p2_step), p2);
|
|
|
|
copy_v2_v2(GPU_vertbuf_raw_step(&g_batch_link.p3_step), p3);
|
|
|
|
char *colid = GPU_vertbuf_raw_step(&g_batch_link.colid_step);
|
2018-04-05 15:41:17 +02:00
|
|
|
colid[0] = nodelink_get_color_id(th_col1);
|
|
|
|
colid[1] = nodelink_get_color_id(th_col2);
|
|
|
|
colid[2] = nodelink_get_color_id(th_col3);
|
|
|
|
colid[3] = drawarrow;
|
2021-03-16 19:11:54 +00:00
|
|
|
char *muted = GPU_vertbuf_raw_step(&g_batch_link.muted_step);
|
|
|
|
muted[0] = drawmuted;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
if (g_batch_link.count == NODELINK_GROUP_SIZE) {
|
|
|
|
nodelink_batch_draw(snode);
|
|
|
|
}
|
|
|
|
}
|
2017-02-21 22:17:47 -03:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
/* don't do shadows if th_col3 is -1. */
|
2021-01-15 10:48:22 -06:00
|
|
|
void node_draw_link_bezier(const View2D *v2d,
|
|
|
|
const SpaceNode *snode,
|
|
|
|
const bNodeLink *link,
|
|
|
|
int th_col1,
|
|
|
|
int th_col2,
|
|
|
|
int th_col3)
|
2018-04-05 15:41:17 +02:00
|
|
|
{
|
|
|
|
float vec[4][2];
|
2021-02-11 01:16:17 -06:00
|
|
|
const bool highlighted = link->flag & NODE_LINK_TEMP_HIGHLIGHT;
|
2018-04-05 15:41:17 +02:00
|
|
|
if (node_link_bezier_handles(v2d, snode, link, vec)) {
|
|
|
|
int drawarrow = ((link->tonode && (link->tonode->type == NODE_REROUTE)) &&
|
|
|
|
(link->fromnode && (link->fromnode->type == NODE_REROUTE)));
|
2021-03-16 19:11:54 +00:00
|
|
|
int drawmuted = (link->flag & NODE_LINK_MUTED);
|
2018-04-05 15:41:17 +02:00
|
|
|
if (g_batch_link.batch == NULL) {
|
|
|
|
nodelink_batch_init();
|
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-02-11 01:16:17 -06:00
|
|
|
if (g_batch_link.enabled && !highlighted) {
|
2018-04-05 15:41:17 +02:00
|
|
|
/* Add link to batch. */
|
|
|
|
nodelink_batch_add_link(
|
2021-03-16 19:11:54 +00:00
|
|
|
snode, vec[0], vec[1], vec[2], vec[3], th_col1, th_col2, th_col3, drawarrow, drawmuted);
|
2018-04-05 15:41:17 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
/* Draw single link. */
|
|
|
|
float colors[3][4] = {{0.0f}};
|
|
|
|
if (th_col3 != -1) {
|
|
|
|
UI_GetThemeColor4fv(th_col3, colors[0]);
|
|
|
|
}
|
|
|
|
UI_GetThemeColor4fv(th_col1, colors[1]);
|
|
|
|
UI_GetThemeColor4fv(th_col2, colors[2]);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2021-02-11 01:16:17 -06:00
|
|
|
if (highlighted) {
|
|
|
|
float link_preselection_highlight_color[4];
|
|
|
|
UI_GetThemeColor4fv(TH_SELECT, link_preselection_highlight_color);
|
|
|
|
copy_v4_v4(colors[2], link_preselection_highlight_color);
|
|
|
|
}
|
|
|
|
|
2018-07-18 00:12:21 +02:00
|
|
|
GPUBatch *batch = g_batch_link.batch_single;
|
|
|
|
GPU_batch_program_set_builtin(batch, GPU_SHADER_2D_NODELINK);
|
2020-08-13 15:35:16 +02:00
|
|
|
GPU_batch_uniform_2fv_array(batch, "bezierPts", 4, vec);
|
|
|
|
GPU_batch_uniform_4fv_array(batch, "colors", 3, colors);
|
2021-01-19 16:43:08 -06:00
|
|
|
GPU_batch_uniform_1f(batch, "expandSize", snode->runtime->aspect * LINK_WIDTH);
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_batch_uniform_1f(batch, "arrowSize", ARROW_SIZE);
|
|
|
|
GPU_batch_uniform_1i(batch, "doArrow", drawarrow);
|
2021-03-16 19:11:54 +00:00
|
|
|
GPU_batch_uniform_1i(batch, "doMuted", drawmuted);
|
2018-07-18 00:12:21 +02:00
|
|
|
GPU_batch_draw(batch);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* note; this is used for fake links in groups too */
|
|
|
|
void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link)
|
|
|
|
{
|
2014-10-17 10:18:40 +02:00
|
|
|
int th_col1 = TH_WIRE_INNER, th_col2 = TH_WIRE_INNER, th_col3 = TH_WIRE;
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2019-03-26 21:16:47 +11:00
|
|
|
if (link->fromsock == NULL && link->tosock == NULL) {
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2011-01-09 18:59:35 +00:00
|
|
|
/* new connection */
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!link->fromsock || !link->tosock) {
|
2018-04-05 15:41:17 +02:00
|
|
|
th_col1 = th_col2 = TH_ACTIVE;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
/* going to give issues once... */
|
2019-03-26 21:16:47 +11:00
|
|
|
if (link->tosock->flag & SOCK_UNAVAIL) {
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
if (link->fromsock->flag & SOCK_UNAVAIL) {
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
if (link->flag & NODE_LINK_VALID) {
|
2012-06-24 10:49:22 +00:00
|
|
|
/* special indicated link, on drop-node */
|
|
|
|
if (link->flag & NODE_LINKFLAG_HILITE) {
|
|
|
|
th_col1 = th_col2 = TH_ACTIVE;
|
|
|
|
}
|
2021-03-16 19:11:54 +00:00
|
|
|
else if (link->flag & NODE_LINK_MUTED) {
|
|
|
|
th_col1 = th_col2 = TH_REDALERT;
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
else {
|
2021-03-16 19:11:54 +00:00
|
|
|
/* Regular link, highlight if connected to selected node. */
|
2019-03-26 21:16:47 +11:00
|
|
|
if (link->fromnode && link->fromnode->flag & SELECT) {
|
2012-06-24 10:49:22 +00:00
|
|
|
th_col1 = TH_EDGE_SELECT;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
|
|
|
if (link->tonode && link->tonode->flag & SELECT) {
|
2012-06-24 10:49:22 +00:00
|
|
|
th_col2 = TH_EDGE_SELECT;
|
2019-03-26 21:16:47 +11:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-10-21 05:46:41 +00:00
|
|
|
}
|
2012-06-24 10:49:22 +00:00
|
|
|
else {
|
2021-03-16 19:11:54 +00:00
|
|
|
/* Invalid link. */
|
|
|
|
th_col1 = th_col2 = th_col3 = TH_REDALERT;
|
2018-04-05 15:41:17 +02:00
|
|
|
// th_col3 = -1; /* no shadow */
|
2019-04-17 06:17:24 +02:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2018-04-05 15:41:17 +02:00
|
|
|
node_draw_link_bezier(v2d, snode, link, th_col1, th_col2, th_col3);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2020-02-08 01:02:18 +11:00
|
|
|
void ED_node_draw_snap(View2D *v2d, const float cent[2], float size, NodeBorder border, uint pos)
|
2012-06-29 14:34:46 +00:00
|
|
|
{
|
2018-07-18 00:12:21 +02:00
|
|
|
immBegin(GPU_PRIM_LINES, 4);
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-06-29 14:34:46 +00:00
|
|
|
if (border & (NODE_LEFT | NODE_RIGHT)) {
|
2017-02-02 03:14:52 -02:00
|
|
|
immVertex2f(pos, cent[0], v2d->cur.ymin);
|
|
|
|
immVertex2f(pos, cent[0], v2d->cur.ymax);
|
2012-06-29 14:34:46 +00:00
|
|
|
}
|
|
|
|
else {
|
2017-02-02 03:14:52 -02:00
|
|
|
immVertex2f(pos, cent[0], cent[1] - size);
|
|
|
|
immVertex2f(pos, cent[0], cent[1] + size);
|
2012-06-29 14:34:46 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2012-06-29 14:34:46 +00:00
|
|
|
if (border & (NODE_TOP | NODE_BOTTOM)) {
|
2017-02-02 03:14:52 -02:00
|
|
|
immVertex2f(pos, v2d->cur.xmin, cent[1]);
|
|
|
|
immVertex2f(pos, v2d->cur.xmax, cent[1]);
|
2012-06-29 14:34:46 +00:00
|
|
|
}
|
|
|
|
else {
|
2017-02-02 03:14:52 -02:00
|
|
|
immVertex2f(pos, cent[0] - size, cent[1]);
|
|
|
|
immVertex2f(pos, cent[0] + size, cent[1]);
|
2012-06-29 14:34:46 +00:00
|
|
|
}
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2017-02-02 03:14:52 -02:00
|
|
|
immEnd();
|
2012-06-29 14:34:46 +00:00
|
|
|
}
|