36 float input_color1[4];
37 float input_color2[4];
44 float value = input_value[0];
46 value *= input_color2[3];
48 float valuem = 1.0f - value;
49 output[0] = valuem * (input_color1[0]) + value * (input_color2[0]);
50 output[1] = valuem * (input_color1[1]) + value * (input_color2[1]);
51 output[2] = valuem * (input_color1[2]) + value * (input_color2[2]);
52 output[3] = input_color1[3];
111 float value = p.
value[0];
115 const float value_m = 1.0f - value;
131 float input_color1[4];
132 float input_color2[4];
133 float input_value[4];
139 float value = input_value[0];
141 value *= input_color2[3];
143 output[0] = input_color1[0] + value * input_color2[0];
144 output[1] = input_color1[1] + value * input_color2[1];
145 output[2] = input_color1[2] + value * input_color2[2];
146 output[3] = input_color1[3];
154 float value = p.
value[0];
175 float input_color1[4];
176 float input_color2[4];
177 float input_value[4];
183 value = input_value[0];
186 value *= input_color2[3];
188 float valuem = 1.0f - value;
189 output[0] = valuem * (input_color1[0]) + value * (input_color2[0]);
190 output[1] = valuem * (input_color1[1]) + value * (input_color2[1]);
191 output[2] = valuem * (input_color1[2]) + value * (input_color2[2]);
192 output[3] = input_color1[3];
200 float value = p.
value[0];
204 float value_m = 1.0f - value;
222 float input_color1[4];
223 float input_color2[4];
224 float input_value[4];
231 float value = input_value[0];
233 value *= input_color2[3];
235 float valuem = 1.0f - value;
237 tmp = valuem + value * input_color2[0];
242 tmp = 1.0f - (1.0f - input_color1[0]) / tmp;
246 else if (tmp > 1.0f) {
254 tmp = valuem + value * input_color2[1];
259 tmp = 1.0f - (1.0f - input_color1[1]) / tmp;
263 else if (tmp > 1.0f) {
271 tmp = valuem + value * input_color2[2];
276 tmp = 1.0f - (1.0f - input_color1[2]) / tmp;
280 else if (tmp > 1.0f) {
288 output[3] = input_color1[3];
296 float value = p.
value[0];
300 const float value_m = 1.0f - value;
302 float tmp = value_m + value * p.
color2[0];
307 tmp = 1.0f - (1.0f - p.
color1[0]) / tmp;
311 tmp = value_m + value * p.
color2[1];
316 tmp = 1.0f - (1.0f - p.
color1[1]) / tmp;
320 tmp = value_m + value * p.
color2[2];
325 tmp = 1.0f - (1.0f - p.
color1[2]) / tmp;
342 float input_color1[4];
343 float input_color2[4];
344 float input_value[4];
350 float value = input_value[0];
352 value *= input_color2[3];
354 float valuem = 1.0f - value;
356 float colH, colS, colV;
357 rgb_to_hsv(input_color2[0], input_color2[1], input_color2[2], &colH, &colS, &colV);
360 float tmpr, tmpg, tmpb;
361 rgb_to_hsv(input_color1[0], input_color1[1], input_color1[2], &rH, &rS, &rV);
362 hsv_to_rgb(colH, colS, rV, &tmpr, &tmpg, &tmpb);
363 output[0] = (valuem * input_color1[0]) + (value * tmpr);
364 output[1] = (valuem * input_color1[1]) + (value * tmpg);
365 output[2] = (valuem * input_color1[2]) + (value * tmpb);
370 output[3] = input_color1[3];
378 float value = p.
value[0];
382 const float value_m = 1.0f - value;
384 float colH, colS, colV;
388 float tmpr, tmpg, tmpb;
390 hsv_to_rgb(colH, colS, rV, &tmpr, &tmpg, &tmpb);
391 p.
out[0] = (value_m * p.
color1[0]) + (value * tmpr);
392 p.
out[1] = (value_m * p.
color1[1]) + (value * tmpg);
393 p.
out[2] = (value_m * p.
color1[2]) + (value * tmpb);
412 float input_color1[4];
413 float input_color2[4];
414 float input_value[4];
420 float value = input_value[0];
422 value *= input_color2[3];
424 float valuem = 1.0f - value;
425 output[0] =
min_ff(input_color1[0], input_color2[0]) * value + input_color1[0] * valuem;
426 output[1] =
min_ff(input_color1[1], input_color2[1]) * value + input_color1[1] * valuem;
427 output[2] =
min_ff(input_color1[2], input_color2[2]) * value + input_color1[2] * valuem;
428 output[3] = input_color1[3];
436 float value = p.
value[0];
440 float value_m = 1.0f - value;
458 float input_color1[4];
459 float input_color2[4];
460 float input_value[4];
466 float value = input_value[0];
468 value *= input_color2[3];
470 float valuem = 1.0f - value;
471 output[0] = valuem * input_color1[0] + value *
fabsf(input_color1[0] - input_color2[0]);
472 output[1] = valuem * input_color1[1] + value *
fabsf(input_color1[1] - input_color2[1]);
473 output[2] = valuem * input_color1[2] + value *
fabsf(input_color1[2] - input_color2[2]);
474 output[3] = input_color1[3];
482 float value = p.
value[0];
486 const float value_m = 1.0f - value;
504 float input_color1[4];
505 float input_color2[4];
506 float input_value[4];
512 float value = input_value[0];
514 value *= input_color2[3];
516 float valuem = 1.0f - value;
518 if (input_color2[0] != 0.0f) {
519 output[0] = valuem * (input_color1[0]) + value * (input_color1[0]) / input_color2[0];
524 if (input_color2[1] != 0.0f) {
525 output[1] = valuem * (input_color1[1]) + value * (input_color1[1]) / input_color2[1];
530 if (input_color2[2] != 0.0f) {
531 output[2] = valuem * (input_color1[2]) + value * (input_color1[2]) / input_color2[2];
537 output[3] = input_color1[3];
545 float value = p.
value[0];
549 const float value_m = 1.0f - value;
551 if (p.
color2[0] != 0.0f) {
557 if (p.
color2[1] != 0.0f) {
563 if (p.
color2[2] != 0.0f) {
584 float input_color1[4];
585 float input_color2[4];
586 float input_value[4];
593 float value = input_value[0];
595 value *= input_color2[3];
598 if (input_color1[0] != 0.0f) {
599 tmp = 1.0f - value * input_color2[0];
604 tmp = input_color1[0] / tmp;
617 if (input_color1[1] != 0.0f) {
618 tmp = 1.0f - value * input_color2[1];
623 tmp = input_color1[1] / tmp;
636 if (input_color1[2] != 0.0f) {
637 tmp = 1.0f - value * input_color2[2];
642 tmp = input_color1[2] / tmp;
655 output[3] = input_color1[3];
663 float value = p.
value[0];
669 if (p.
color1[0] != 0.0f) {
670 tmp = 1.0f - value * p.
color2[0];
683 if (p.
color1[1] != 0.0f) {
684 tmp = 1.0f - value * p.
color2[1];
697 if (p.
color1[2] != 0.0f) {
698 tmp = 1.0f - value * p.
color2[2];
725 float input_color1[4];
726 float input_color2[4];
727 float input_value[4];
728 float value, input_weight, glare_weight;
733 value = input_value[0];
739 glare_weight = 1.0f + value;
742 input_weight = 1.0f - value;
745 output[0] = input_weight *
MAX2(input_color1[0], 0.0f) + glare_weight * input_color2[0];
746 output[1] = input_weight *
MAX2(input_color1[1], 0.0f) + glare_weight * input_color2[1];
747 output[2] = input_weight *
MAX2(input_color1[2], 0.0f) + glare_weight * input_color2[2];
748 output[3] = input_color1[3];
756 const float value = p.
value[0];
764 glare_weight = 1.0f + value;
767 input_weight = 1.0f - value;
787 float input_color1[4];
788 float input_color2[4];
789 float input_value[4];
795 float value = input_value[0];
797 value *= input_color2[3];
799 float valuem = 1.0f - value;
801 float colH, colS, colV;
802 rgb_to_hsv(input_color2[0], input_color2[1], input_color2[2], &colH, &colS, &colV);
805 float tmpr, tmpg, tmpb;
806 rgb_to_hsv(input_color1[0], input_color1[1], input_color1[2], &rH, &rS, &rV);
807 hsv_to_rgb(colH, rS, rV, &tmpr, &tmpg, &tmpb);
808 output[0] = valuem * (input_color1[0]) + value * tmpr;
809 output[1] = valuem * (input_color1[1]) + value * tmpg;
810 output[2] = valuem * (input_color1[2]) + value * tmpb;
815 output[3] = input_color1[3];
823 float value = p.
value[0];
827 const float value_m = 1.0f - value;
829 float colH, colS, colV;
833 float tmpr, tmpg, tmpb;
835 hsv_to_rgb(colH, rS, rV, &tmpr, &tmpg, &tmpb);
836 p.
out[0] = value_m * p.
color1[0] + value * tmpr;
837 p.
out[1] = value_m * p.
color1[1] + value * tmpg;
838 p.
out[2] = value_m * p.
color1[2] + value * tmpb;
857 float input_color1[4];
858 float input_color2[4];
859 float input_value[4];
865 float value = input_value[0];
867 value *= input_color2[3];
870 tmp = value * input_color2[0];
871 if (tmp > input_color1[0]) {
875 output[0] = input_color1[0];
877 tmp = value * input_color2[1];
878 if (tmp > input_color1[1]) {
882 output[1] = input_color1[1];
884 tmp = value * input_color2[2];
885 if (tmp > input_color1[2]) {
889 output[2] = input_color1[2];
891 output[3] = input_color1[3];
899 float value = p.
value[0];
904 float tmp = value * p.
color2[0];
907 tmp = value * p.
color2[1];
910 tmp = value * p.
color2[2];
927 float input_color1[4];
928 float input_color2[4];
929 float input_value[4];
935 float value = input_value[0];
937 value *= input_color2[3];
939 if (input_color2[0] > 0.5f) {
940 output[0] = input_color1[0] + value * (2.0f * (input_color2[0] - 0.5f));
943 output[0] = input_color1[0] + value * (2.0f * (input_color2[0]) - 1.0f);
945 if (input_color2[1] > 0.5f) {
946 output[1] = input_color1[1] + value * (2.0f * (input_color2[1] - 0.5f));
949 output[1] = input_color1[1] + value * (2.0f * (input_color2[1]) - 1.0f);
951 if (input_color2[2] > 0.5f) {
952 output[2] = input_color1[2] + value * (2.0f * (input_color2[2] - 0.5f));
955 output[2] = input_color1[2] + value * (2.0f * (input_color2[2]) - 1.0f);
958 output[3] = input_color1[3];
966 float value = p.
value[0];
1003 float input_color1[4];
1004 float input_color2[4];
1005 float input_value[4];
1011 float value = input_value[0];
1013 value *= input_color2[3];
1015 float valuem = 1.0f - value;
1016 output[0] = input_color1[0] * (valuem + value * input_color2[0]);
1017 output[1] = input_color1[1] * (valuem + value * input_color2[1]);
1018 output[2] = input_color1[2] * (valuem + value * input_color2[2]);
1019 output[3] = input_color1[3];
1027 float value = p.
value[0];
1031 const float value_m = 1.0f - value;
1050 float input_color1[4];
1051 float input_color2[4];
1052 float input_value[4];
1058 float value = input_value[0];
1060 value *= input_color2[3];
1063 float valuem = 1.0f - value;
1065 if (input_color1[0] < 0.5f) {
1066 output[0] = input_color1[0] * (valuem + 2.0f * value * input_color2[0]);
1070 (valuem + 2.0f * value * (1.0f - input_color2[0])) * (1.0f - input_color1[0]);
1072 if (input_color1[1] < 0.5f) {
1073 output[1] = input_color1[1] * (valuem + 2.0f * value * input_color2[1]);
1077 (valuem + 2.0f * value * (1.0f - input_color2[1])) * (1.0f - input_color1[1]);
1079 if (input_color1[2] < 0.5f) {
1080 output[2] = input_color1[2] * (valuem + 2.0f * value * input_color2[2]);
1084 (valuem + 2.0f * value * (1.0f - input_color2[2])) * (1.0f - input_color1[2]);
1086 output[3] = input_color1[3];
1094 float value = p.
value[0];
1098 const float value_m = 1.0f - value;
1099 if (p.
color1[0] < 0.5f) {
1103 p.
out[0] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[0])) * (1.0f - p.
color1[0]);
1105 if (p.
color1[1] < 0.5f) {
1109 p.
out[1] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[1])) * (1.0f - p.
color1[1]);
1111 if (p.
color1[2] < 0.5f) {
1115 p.
out[2] = 1.0f - (value_m + 2.0f * value * (1.0f - p.
color2[2])) * (1.0f - p.
color1[2]);
1132 float input_color1[4];
1133 float input_color2[4];
1134 float input_value[4];
1140 float value = input_value[0];
1142 value *= input_color2[3];
1144 float valuem = 1.0f - value;
1147 rgb_to_hsv(input_color1[0], input_color1[1], input_color1[2], &rH, &rS, &rV);
1149 float colH, colS, colV;
1150 rgb_to_hsv(input_color2[0], input_color2[1], input_color2[2], &colH, &colS, &colV);
1157 output[3] = input_color1[3];
1165 float value = p.
value[0];
1169 const float value_m = 1.0f - value;
1174 float colH, colS, colV;
1196 float input_color1[4];
1197 float input_color2[4];
1198 float input_value[4];
1204 float value = input_value[0];
1206 value *= input_color2[3];
1208 float valuem = 1.0f - value;
1210 output[0] = 1.0f - (valuem + value * (1.0f - input_color2[0])) * (1.0f - input_color1[0]);
1211 output[1] = 1.0f - (valuem + value * (1.0f - input_color2[1])) * (1.0f - input_color1[1]);
1212 output[2] = 1.0f - (valuem + value * (1.0f - input_color2[2])) * (1.0f - input_color1[2]);
1213 output[3] = input_color1[3];
1221 float value = p.
value[0];
1225 const float value_m = 1.0f - value;
1227 p.
out[0] = 1.0f - (value_m + value * (1.0f - p.
color2[0])) * (1.0f - p.
color1[0]);
1228 p.
out[1] = 1.0f - (value_m + value * (1.0f - p.
color2[1])) * (1.0f - p.
color1[1]);
1229 p.
out[2] = 1.0f - (value_m + value * (1.0f - p.
color2[2])) * (1.0f - p.
color1[2]);
1244 float input_color1[4];
1245 float input_color2[4];
1246 float input_value[4];
1252 float value = input_value[0];
1254 value *= input_color2[3];
1256 float valuem = 1.0f - value;
1257 float scr, scg, scb;
1260 scr = 1.0f - (1.0f - input_color2[0]) * (1.0f - input_color1[0]);
1261 scg = 1.0f - (1.0f - input_color2[1]) * (1.0f - input_color1[1]);
1262 scb = 1.0f - (1.0f - input_color2[2]) * (1.0f - input_color1[2]);
1264 output[0] = valuem * (input_color1[0]) +
1265 value * (((1.0f - input_color1[0]) * input_color2[0] * (input_color1[0])) +
1266 (input_color1[0] * scr));
1267 output[1] = valuem * (input_color1[1]) +
1268 value * (((1.0f - input_color1[1]) * input_color2[1] * (input_color1[1])) +
1269 (input_color1[1] * scg));
1270 output[2] = valuem * (input_color1[2]) +
1271 value * (((1.0f - input_color1[2]) * input_color2[2] * (input_color1[2])) +
1272 (input_color1[2] * scb));
1273 output[3] = input_color1[3];
1281 float value = p.
value[0];
1285 const float value_m = 1.0f - value;
1286 float scr, scg, scb;
1289 scr = 1.0f - (1.0f - p.
color2[0]) * (1.0f - p.
color1[0]);
1290 scg = 1.0f - (1.0f - p.
color2[1]) * (1.0f - p.
color1[1]);
1291 scb = 1.0f - (1.0f - p.
color2[2]) * (1.0f - p.
color1[2]);
1313 float input_color1[4];
1314 float input_color2[4];
1315 float input_value[4];
1321 float value = input_value[0];
1323 value *= input_color2[3];
1325 output[0] = input_color1[0] - value * (input_color2[0]);
1326 output[1] = input_color1[1] - value * (input_color2[1]);
1327 output[2] = input_color1[2] - value * (input_color2[2]);
1328 output[3] = input_color1[3];
1336 float value = p.
value[0];
1357 float input_color1[4];
1358 float input_color2[4];
1359 float input_value[4];
1365 float value = input_value[0];
1367 value *= input_color2[3];
1369 float valuem = 1.0f - value;
1372 float colH, colS, colV;
1373 rgb_to_hsv(input_color1[0], input_color1[1], input_color1[2], &rH, &rS, &rV);
1374 rgb_to_hsv(input_color2[0], input_color2[1], input_color2[2], &colH, &colS, &colV);
1376 output[3] = input_color1[3];
1384 float value = p.
value[0];
1388 float value_m = 1.0f - value;
1391 float colH, colS, colV;
MINLINE float min_ff(float a, float b)
void rgb_to_hsv(float r, float g, float b, float *r_h, float *r_s, float *r_v)
void hsv_to_rgb(float h, float s, float v, float *r_r, float *r_g, float *r_b)
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
_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 width
a MemoryBuffer contains access to the data of a chunk
float * get_elem(int x, int y)
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void set_use_clamp(bool value)
void clamp_if_needed(float color[4])
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
void deinit_execution() override
bool use_value_alpha_multiply()
SocketReader * input_color2_operation_
void init_execution() override
virtual void update_memory_buffer_row(PixelCursor &p)
SocketReader * input_color1_operation_
SocketReader * input_value_operation_
void set_use_value_alpha_multiply(const bool value)
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void update_memory_buffer_row(PixelCursor &p) override
void update_memory_buffer_row(PixelCursor &p) override
void execute_pixel_sampled(float output[4], float x, float y, PixelSampler sampler) override
void add_output_socket(DataType datatype)
SocketReader * get_input_socket_reader(unsigned int index)
NodeOperationFlags flags_
NodeOperationInput * get_input_socket(unsigned int index)
void read_sampled(float result[4], float x, float y, PixelSampler sampler)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
depth_tx sampler(1, ImageType::FLOAT_2D, "combined_tx") .sampler(2
ccl_global KernelShaderEvalInput ccl_global float * output
static void area(int d1, int d2, int e1, int e2, float weights[2])
constexpr rcti COM_AREA_NONE
static bNodeSocketTemplate inputs[]