47 #include "RNA_prototypes.h"
71 #define DEFAULT_FLAGS UI_ITEM_R_SPLIT_EMPTY_NAME
151 #define SAMPLE_FLT_ISNONE FLT_MAX
240 if (
x >= totr.
xmin && x < totr.xmin + size && y >= totr.
ymin &&
y < totr.
ymax) {
256 totr.
xmin =
node->totr.xmax - 1.0f *
U.widget_unit;
271 if (
x >= totr.
xmin && x < totr.xmin + size && y >= totr.
ymin &&
y < totr.
ymax) {
294 switch (ntype->
type) {
311 const bool show_layer_selection,
312 const bool show_color_management)
334 uiItemL(layout, numstr, ICON_NONE);
352 if (show_color_management) {
461 switch (ntype->
type) {
619 if (
node->custom1 == 0) {
620 const float backdropWidth = backdrop->
x;
621 const float backdropHeight = backdrop->
y;
622 const float cx =
x + snode->
zoom * backdropWidth *
node->custom3;
623 const float cy =
y + snode->
zoom * backdropHeight *
node->custom4;
624 const float cross_size = 12 *
U.pixelsize;
648 const float backdropWidth = backdrop->
x;
649 const float backdropHeight = backdrop->
y;
650 const float aspect = backdropWidth / backdropHeight;
651 const float rad = -boxmask->
rotation;
652 const float cosine =
cosf(rad);
653 const float sine =
sinf(rad);
654 const float halveBoxWidth = backdropWidth * (boxmask->
width / 2.0f);
655 const float halveBoxHeight = backdropHeight * (boxmask->
height / 2.0f) * aspect;
657 float cx, cy, x1,
x2, x3, x4;
658 float y1, y2, y3, y4;
660 cx =
x + snode->
zoom * backdropWidth * boxmask->
x;
661 cy =
y + snode->
zoom * backdropHeight * boxmask->
y;
663 x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->
zoom;
664 x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->
zoom;
665 x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->
zoom;
666 x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->
zoom;
667 y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->
zoom;
668 y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->
zoom;
669 y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->
zoom;
670 y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->
zoom;
693 const float backdropWidth = backdrop->
x;
694 const float backdropHeight = backdrop->
y;
695 const float aspect = backdropWidth / backdropHeight;
696 const float rad = -ellipsemask->
rotation;
697 const float cosine =
cosf(rad);
698 const float sine =
sinf(rad);
699 const float halveBoxWidth = backdropWidth * (ellipsemask->
width / 2.0f);
700 const float halveBoxHeight = backdropHeight * (ellipsemask->
height / 2.0f) * aspect;
702 float cx, cy, x1,
x2, x3, x4;
703 float y1, y2, y3, y4;
705 cx =
x + snode->
zoom * backdropWidth * ellipsemask->
x;
706 cy =
y + snode->
zoom * backdropHeight * ellipsemask->
y;
708 x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->
zoom;
709 x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->
zoom;
710 x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->
zoom;
711 x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->
zoom;
712 y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->
zoom;
713 y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->
zoom;
714 y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->
zoom;
715 y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->
zoom;
753 uiItemO(layout,
IFACE_(
"Add Crypto Layer"), ICON_ADD,
"NODE_OT_cryptomatte_layer_add");
754 uiItemO(layout,
IFACE_(
"Remove Crypto Layer"), ICON_REMOVE,
"NODE_OT_cryptomatte_layer_remove");
812 switch (ntype->
type) {
1017 switch (ntype->
type) {
1093 for (stemp = ntype->
inputs; stemp->
type >= 0; stemp++) {
1098 for (stemp = ntype->
outputs; stemp->
type >= 0; stemp++) {
1108 const char *
UNUSED(text))
1110 uiItemL(layout,
IFACE_(
"Undefined Socket Type"), ICON_ERROR);
1128 uiItemL(layout,
IFACE_(
"Undefined Socket Type"), ICON_ERROR);
1190 {0.63, 0.63, 0.63, 1.0},
1191 {0.39, 0.39, 0.78, 1.0},
1192 {0.78, 0.78, 0.16, 1.0},
1193 {0.39, 0.78, 0.39, 1.0},
1194 {0.80, 0.65, 0.84, 1.0},
1195 {0.0, 0.0, 0.0, 1.0},
1196 {0.35, 0.55, 0.36, 1.0},
1197 {0.44, 0.70, 1.00, 1.0},
1198 {0.93, 0.62, 0.36, 1.0},
1199 {0.39, 0.22, 0.39, 1.0},
1200 {0.00, 0.84, 0.64, 1.0},
1201 {0.96, 0.96, 0.96, 1.0},
1202 {0.62, 0.31, 0.64, 1.0},
1203 {0.92, 0.46, 0.51, 1.0},
1259 const char *imtype_name;
1268 uiItemL(row, imtype_name, ICON_NONE);
1275 if (
node.runtime->declaration ==
nullptr) {
1282 return node.runtime->declaration->inputs()[socket_index]->is_attribute_name();
1290 int type = sock->typeinfo->type;
1327 if (text[0] ==
'\0') {
1357 if (text[0] ==
'\0') {
1395 if (text[0] ==
'\0') {
1412 row,
C,
ptr,
"default_value",
"texture.new",
nullptr,
nullptr, 0, ICON_NONE,
nullptr);
1521 if (parent_key.
value != active_viewer_key.
value) {
1545 const float x = (region.
winx - snode.
zoom * ibuf->
x) / 2 + snode.
xof;
1546 const float y = (region.
winy - snode.
zoom * ibuf->
y) / 2 + snode.
yof;
1554 if (
node->typeinfo->draw_backdrop) {
1555 node->typeinfo->draw_backdrop(&snode, ibuf,
node,
x,
y);
1562 viewer_border->xmin < viewer_border->xmax && viewer_border->ymin < viewer_border->ymax) {
1565 x + snode.
zoom * viewer_border->xmin * ibuf->
x,
1566 x + snode.
zoom * viewer_border->xmax * ibuf->
x,
1567 y + snode.
zoom * viewer_border->ymin * ibuf->
y,
1568 y + snode.
zoom * viewer_border->ymax * ibuf->
y);
1592 float cursor[2] = {0.0f, 0.0f};
1614 if (snode ==
nullptr) {
1631 if (snode ==
nullptr) {
1647 const float dist = curving * 0.10f *
fabsf(vec[0][0] - vec[3][0]);
1649 vec[1][0] = vec[0][0] + dist;
1650 vec[1][1] = vec[0][1];
1652 vec[2][0] = vec[3][0] - dist;
1653 vec[2][1] = vec[3][1];
1655 if (v2d &&
min_ffff(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) > v2d->
cur.
xmax) {
1658 if (v2d &&
max_ffff(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) < v2d->
cur.
xmin) {
1668 float coord_array[][2],
1676 vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0] + 0, resol,
sizeof(
float[2]));
1678 vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0] + 1, resol,
sizeof(
float[2]));
1685 #define NODELINK_GROUP_SIZE 256
1686 #define LINK_RESOL 24
1687 #define LINK_WIDTH (2.5f * UI_DPI_FAC)
1688 #define ARROW_SIZE (7 * UI_DPI_FAC)
1692 static float arrow_verts[3][2] = {{-1.0f, 1.0f}, {0.0f, 0.0f}, {-1.0f, -1.0f}};
1694 static float mute_verts[3][2] = {{0.7071f, 1.0f}, {0.7071f, 0.0f}, {0.7071f, -1.0f}};
1774 for (
int k = 0; k < 2; k++) {
1775 uchar uv[2] = {0, 0};
1776 float pos[2] = {0.0f, 0.0f};
1777 float exp[2] = {0.0f, 1.0f};
1801 for (
int i = 0; i < 3; i++) {
1820 for (
int i = 0; i < 3; ++i) {
1949 const float start_color[4],
1950 const float end_color[4],
1972 colid[3] = drawarrow;
1976 muted[0] = drawmuted;
1994 const bool selected)
1997 float thickness = 1.5f;
1998 float dash_factor = 1.0f;
2008 dash_factor = 0.75f;
2022 float colors[3][4] = {{0.0f}};
2023 if (th_col3 != -1) {
2053 float color_selected[4];
2055 const float alpha = color_selected[3];
2089 float link_preselection_highlight_color[4];
2091 copy_v4_v4(colors[2], link_preselection_highlight_color);
2095 for (
int i = 0; i < 4; i++) {
2098 for (
int i = 0; i < 3; i++) {
2101 node_link_data.
doArrow = drawarrow;
2102 node_link_data.
doMuted = drawmuted;
2128 const bool selected)
typedef float(TangentPoint)[2]
void immDrawBorderCorners(unsigned int pos, const struct rcti *border, float zoomx, float zoomy)
struct Scene * CTX_data_scene(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride)
void BKE_image_release_ibuf(struct Image *ima, struct ImBuf *ibuf, void *lock)
struct ImBuf * BKE_image_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, void **r_lock)
struct Image * BKE_image_ensure_viewer(struct Main *bmain, int type, const char *name)
int BKE_image_user_frame_get(const struct ImageUser *iuser, int cfra, bool *r_is_in_range)
bool BKE_image_is_dirty(struct Image *image)
#define CMP_NODE_VALTORGB
#define SH_NODE_COMBINE_COLOR
#define NODE_TYPES_BEGIN(ntype)
#define CMP_NODE_MASK_ELLIPSE
#define TEX_NODE_PROC_MAX
#define CMP_NODE_COMBYCCA_LEGACY
#define CMP_NODE_SEPARATE_COLOR
#define CMP_NODE_CRYPTOMATTE
struct bNodeType NodeTypeUndefined
#define SH_NODE_TEX_ENVIRONMENT
#define CMP_NODE_HUECORRECT
#define TEX_NODE_COMBINE_COLOR
#define TEX_NODE_SEPARATE_COLOR
#define CMP_NODE_CRYPTOMATTE_LEGACY
#define SH_NODE_OUTPUT_MATERIAL
#define CMP_NODE_OUTPUT_FILE
#define CMP_NODE_CURVE_RGB
#define SH_NODE_BSDF_GLOSSY
#define CMP_NODE_COMBINE_COLOR
#define SH_NODE_CURVE_RGB
#define CMP_NODE_MASK_BOX
#define TEX_NODE_CURVE_TIME
#define CMP_CRYPTOMATTE_SRC_RENDER
#define SH_NODE_BSDF_GLASS
struct bNodeSocketType NodeSocketTypeUndefined
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE
#define SH_NODE_DISPLACEMENT
#define CMP_NODE_SEPYCCA_LEGACY
#define SH_NODE_BSDF_REFRACTION
#define SH_NODE_OUTPUT_LIGHT
#define TEX_NODE_VALTORGB
#define TEX_NODE_CURVE_RGB
void BKE_ntree_update_tag_node_property(struct bNodeTree *ntree, struct bNode *node)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float max_ffff(float a, float b, float c, float d)
MINLINE float min_ffff(float a, float b, float c, float d)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
void mid_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void copy_v4_fl(float r[4], float f)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
bool BLI_rctf_isect_pt(const struct rctf *rect, float x, float y)
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
#define NODE_FRAME_RESIZEABLE
@ CMP_NODE_COMBSEP_COLOR_YCC
#define NODE_LINK_DRAGGED
#define NTREE_VIEWER_BORDER
#define NODE_LINK_TEMP_HIGHLIGHT
@ SOCK_DISPLAY_SHAPE_CIRCLE
@ SOCK_DISPLAY_SHAPE_DIAMOND
#define NODE_LINKFLAG_HILITE
Object is a sort of wrapper for general info.
#define R_IMF_IMTYPE_MULTILAYER
@ SN_OVERLAY_SHOW_WIRE_COLORS
@ SN_OVERLAY_SHOW_OVERLAYS
void DRW_draw_view(const struct bContext *C)
bool ED_node_is_compositor(struct SpaceNode *snode)
void ED_node_tree_propagate_change(const struct bContext *C, struct Main *bmain, struct bNodeTree *ntree)
#define REGION_DRAW_BACKDROP
void ED_region_draw_cb_draw(const struct bContext *C, struct ARegion *region, int type)
#define GPU_batch_uniformbuf_bind(batch, name, ubo)
void GPU_batch_program_set_builtin(GPUBatch *batch, eGPUBuiltinShader shader_id)
void GPU_batch_instbuf_set(GPUBatch *, GPUVertBuf *, bool own_vbo)
GPUBatch * GPU_batch_create_ex(GPUPrimType prim, GPUVertBuf *vert, GPUIndexBuf *elem, eGPUBatchFlag owns_flag)
void GPU_batch_draw(GPUBatch *batch)
void gpu_batch_presets_register(struct GPUBatch *preset_batch)
struct GPUFrameBuffer GPUFrameBuffer
void GPU_framebuffer_bind_no_srgb(GPUFrameBuffer *fb)
void GPU_framebuffer_restore(void)
GPUFrameBuffer * GPU_framebuffer_active_get(void)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
void GPU_matrix_pop(void)
void GPU_matrix_pop_projection(void)
void GPU_matrix_push(void)
void GPU_matrix_identity_set(void)
void GPU_matrix_push_projection(void)
@ GPU_SHADER_2D_NODELINK_INST
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_depth_test(eGPUDepthTest test)
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
void GPU_vertbuf_use(GPUVertBuf *)
GPUVertBuf * GPU_vertbuf_create_with_format_ex(const GPUVertFormat *, GPUUsageType)
GPU_INLINE void * GPU_vertbuf_raw_step(GPUVertBufRaw *a)
void GPU_vertbuf_data_len_set(GPUVertBuf *, uint v_len)
void GPU_vertbuf_attr_get_raw_data(GPUVertBuf *, uint a_idx, GPUVertBufRaw *access)
void GPU_vertbuf_attr_set(GPUVertBuf *, uint a_idx, uint v_idx, const void *data)
bool IMB_colormanagement_space_name_is_data(const char *name)
Contains defines and structs used throughout the imbuf module.
Group Output data from inside of a node group A color picker SH_NODE_MIX_RGB
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise TEX_VORONOI
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue Hue Saturation Apply a color transformation in the HSV color model Specular Similar to the Principled BSDF node but uses the specular workflow instead of which functions by specifying the so the result may not be physically accurate SH_NODE_OUTPUT_WORLD
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value SH_NODE_NORMAL
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders SH_NODE_VECTOR_DISPLACEMENT
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color SH_NODE_CURVE_VEC
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction White Return a random value or color based on an input seed SH_NODE_CURVE_FLOAT
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction White Return a random value or color based on an input seed Float Map an input float to a curve and outputs a float value SH_NODE_SEPARATE_COLOR
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block SH_NODE_TEX_IMAGE
Group Output data from inside of a node group SH_NODE_RGB
void uiLayoutSetActive(uiLayout *layout, bool active)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int type, bool levels, bool brush, bool neg_slope, bool tone)
void uiLayoutSetEnabled(uiLayout *layout, bool enabled)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemL(uiLayout *layout, const char *name, int icon)
void uiTemplateCryptoPicker(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int icon)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void UI_block_emboss_set(uiBlock *block, eUIEmbossType emboss)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, struct PointerRNA *userptr, bool compact, bool multiview)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
void uiLayoutSetContextPointer(uiLayout *layout, const char *name, struct PointerRNA *ptr)
uiLayout * uiLayoutSplit(uiLayout *layout, float percentage, bool align)
void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, const char *text)
void uiTemplateID(uiLayout *layout, const struct bContext *C, struct PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, bool live_icon, const char *text)
void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, const char *propname, bool expand)
void uiTemplateColorPicker(uiLayout *layout, struct PointerRNA *ptr, const char *propname, bool value_slider, bool lock, bool lock_luminosity, bool cubic)
void uiTemplateComponentMenu(uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *name)
@ UI_TEMPLATE_ID_FILTER_ALL
int UI_GetThemeValueType(int colorid, int spacetype)
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColor4fv(int colorid, float col[4])
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void ED_node_sample_set(const float col[4])
void ED_init_custom_node_type(bNodeType *UNUSED(ntype))
#define NODELINK_GROUP_SIZE
void ED_init_node_socket_type_virtual(bNodeSocketType *stype)
static float _sample_col[4]
void ED_node_draw_snap(View2D *v2d, const float cent[2], float size, NodeBorder border, uint pos)
void ED_init_custom_node_socket_type(bNodeSocketType *stype)
void ED_init_standard_node_socket_type(bNodeSocketType *stype)
void ED_node_init_butfuncs()
#define SAMPLE_FLT_ISNONE
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
IconTextureDrawCall border
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
ccl_device_inline float3 exp(float3 v)
static void node_buts_curvevec(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_buts_normal(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static const float virtual_node_socket_color[4]
static void node_shader_buts_tex_environment_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_socket_template_properties_update(bNodeType *ntype, bNodeSocketTemplate *stemp)
static void node_buts_curvecol(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_buts_frame_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_buts_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_composit_buts_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static const float std_node_socket_colors[][4]
static void node_texture_buts_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_socket_undefined_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr), const char *UNUSED(text))
static void node_buts_mix_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
GPUVertBufRaw dash_alpha_step
static void std_node_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, const char *text)
static float mute_expand_axis[3][2]
static void node_socket_undefined_interface_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr))
static void node_texture_buts_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_composit_backdrop_boxmask(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
void node_draw_link_bezier(const bContext &C, const View2D &v2d, const SpaceNode &snode, const bNodeLink &link, const int th_col1, const int th_col2, const int th_col3, const bool selected)
static void node_shader_buts_glossy(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_buts_colorramp(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
void node_geometry_add_attribute_search_button(const bContext &UNUSED(C), const bNode &node, PointerRNA &socket_ptr, uiLayout &layout)
static void node_texture_buts_combsep_color(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_template_properties_update(bNodeType *ntype)
void nodelink_batch_end(SpaceNode &snode)
static void node_composit_buts_huecorrect(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static float arrow_expand_axis[3][2]
static void node_buts_curvefloat(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
void node_socket_color_get(const bContext &C, const bNodeTree &ntree, PointerRNA &node_ptr, const bNodeSocket &sock, float r_color[4])
static void std_node_socket_interface_draw_color(bContext *UNUSED(C), PointerRNA *ptr, float *r_color)
void node_draw_link(const bContext &C, const View2D &v2d, const SpaceNode &snode, const bNodeLink &link, const bool selected)
static void nodelink_batch_reset()
float2 node_link_calculate_multi_input_position(const float2 &socket_position, const int index, const int total_inputs)
static void node_draw_buttons_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_buts_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void nodelink_batch_init()
static void set_nodelink_vertex(GPUVertBuf *vbo, uint uv_id, uint pos_id, uint exp_id, uint v, const uchar uv[2], const float pos[2], const float exp[2])
bool node_link_bezier_points(const View2D *v2d, const SpaceNode *snode, const bNodeLink &link, float coord_array[][2], const int resol)
static void nodelink_batch_add_link(const SpaceNode &snode, const float2 &p0, const float2 &p1, const float2 &p2, const float2 &p3, int th_col1, int th_col2, int th_col3, const float start_color[4], const float end_color[4], bool drawarrow, bool drawmuted, float dim_factor, float thickness, float dash_factor, float dash_alpha)
static char nodelink_get_color_id(int th_col)
static void std_node_socket_draw_color(bContext *UNUSED(C), PointerRNA *ptr, PointerRNA *UNUSED(node_ptr), float *r_color)
static struct blender::ed::space_node::@535 g_batch_link
static void node_composit_buts_combsep_color(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
GPUVertBufRaw end_color_step
GPUVertBufRaw dim_factor_step
void draw_nodespace_back_pix(const bContext &C, ARegion ®ion, SpaceNode &snode, bNodeInstanceKey parent_key)
static void node_socket_undefined_interface_draw_color(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), float *r_color)
static void node_buts_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_composit_buts_ycc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
float node_link_dim_factor(const View2D &v2d, const bNodeLink &link)
GPUVertBufRaw thickness_step
static void node_composit_buts_cryptomatte_legacy(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_buts_texture(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_shader_buts_tex_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_buts_output_shader(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_composit_set_butfunc(bNodeType *ntype)
static void node_socket_virtual_draw_color(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr), float *r_color)
NodeResizeDirection node_get_resize_direction(const bNode *node, const int x, const int y)
void nodelink_batch_start(SpaceNode &UNUSED(snode))
static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
static float arrow_verts[3][2]
static void node_socket_undefined_draw_color(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr), float *r_color)
GPUVertBufRaw dash_factor_step
static void node_composit_backdrop_ellipsemask(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
static void node_texture_buts_proc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_socket_button_label(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr), const char *text)
static void node_texture_buts_bricks(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_texture_set_butfunc(bNodeType *ntype)
static void node_composit_buts_cryptomatte(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_file_output_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
static void nodelink_batch_draw(const SpaceNode &snode)
static void node_composit_buts_cryptomatte_legacy_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *UNUSED(ptr))
static void node_buts_image_user(uiLayout *layout, bContext *C, PointerRNA *ptr, PointerRNA *imaptr, PointerRNA *iuserptr, const bool show_layer_selection, const bool show_color_management)
static void node_shader_set_butfunc(bNodeType *ntype)
static void node_shader_buts_tex_environment(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_property_update_default(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
bool node_link_bezier_handles(const View2D *v2d, const SpaceNode *snode, const bNodeLink &link, float vec[4][2])
static void node_buts_image_views(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr, PointerRNA *imaptr)
static void node_common_set_butfunc(bNodeType *ntype)
static void node_buts_combsep_color(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void node_shader_buts_displacement(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
GPUVertBufRaw start_color_step
static void node_composit_backdrop_viewer(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
static float mute_verts[3][2]
static void std_node_socket_interface_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *ptr)
static void node_shader_buts_tex_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void node_buts_time(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static bool socket_needs_attribute_search(bNode &node, bNodeSocket &socket)
void split(const std::string &s, const char delim, std::vector< std::string > &tokens)
#define NODE_RESIZE_MARGIN
static void expand_id(BlendExpander *expander, ID *id)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
bool RNA_property_enum_name(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name)
void RNA_def_property_update_runtime(PropertyRNA *prop, const void *func)
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
struct bNodeTree * nodetree
int multi_input_socket_index
Compact definition of a node socket.
void(* draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color)
void(* interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color)
void(* draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, const char *text)
void(* interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr)
struct bNodeSocketType * typeinfo
bNodeInstanceKey active_viewer_key
bNodeSocketTemplate * outputs
void(* draw_buttons_ex)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
bNodeSocketTemplate * inputs
void(* draw_backdrop)(struct SpaceNode *snode, struct ImBuf *backdrop, struct bNode *node, int x, int y)
void wmOrtho2_region_pixelspace(const ARegion *region)