Files
armorpaint/paint/sources/nodes_material.c
T

169 lines
4.4 KiB
C
Raw Normal View History

2026-03-09 13:17:15 +01:00
#include "global.h"
2026-03-06 12:56:38 +01:00
void nodes_material_init() {
2026-03-07 21:12:59 +01:00
if (nodes_material_list != NULL) {
2026-03-06 12:56:38 +01:00
return;
}
gc_unroot(nodes_material_input);
2026-03-08 08:39:29 +01:00
nodes_material_input = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_input);
attribute_node_init();
rgb_node_init(); // color_node_init
geometry_node_init();
layer_node_init();
layer_mask_node_init();
material_node_init();
object_info_node_init();
picker_node_init();
script_node_init();
shader_node_init();
texture_coordinate_node_init();
uv_map_node_init();
value_node_init();
wireframe_node_init();
gc_unroot(nodes_material_texture);
2026-03-08 08:39:29 +01:00
nodes_material_texture = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_texture);
2026-05-21 23:16:34 +02:00
bake_texture_node_init();
2026-03-06 12:56:38 +01:00
brick_texture_node_init();
camera_texture_node_init();
checker_texture_node_init();
curvature_bake_node_init();
gabor_texture_node_init();
gradient_texture_node_init();
image_texture_node_init();
magic_texture_node_init();
noise_texture_node_init();
text_texture_node_init();
voronoi_texture_node_init();
wave_texture_node_init();
gc_unroot(nodes_material_color);
2026-03-08 08:39:29 +01:00
nodes_material_color = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_color);
blur_node_init();
brightness_contrast_node_init();
2026-04-03 13:32:16 +02:00
color_mask_node_init();
color_ramp_node_init();
combine_color_node_init();
2026-03-06 12:56:38 +01:00
gamma_node_init();
hue_saturation_value_node_init();
invert_color_node_init();
mix_color_node_init();
quantize_node_init();
2026-04-03 13:32:16 +02:00
rgb_curves_node_init();
rgb_to_bw_node_init();
2026-03-06 12:56:38 +01:00
replace_color_node_init();
2026-04-03 13:32:16 +02:00
separate_color_node_init();
2026-03-06 12:56:38 +01:00
warp_node_init();
gc_unroot(nodes_material_utilities);
2026-03-08 08:39:29 +01:00
nodes_material_utilities = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_utilities);
bump_node_init();
clamp_node_init();
combine_xyz_node_init();
2026-04-03 13:32:16 +02:00
float_curve_node_init();
2026-03-06 12:56:38 +01:00
map_range_node_init();
mapping_node_init();
math2_node_init();
mix_normal_map_node_init();
normal_node_init();
normal_map_node_init();
separate_xyz_node_init();
vector_curves_node_init();
vector_math2_node_init();
2026-04-03 13:32:16 +02:00
vector_rotate_node_init();
vector_transform_node_init();
2026-03-06 12:56:38 +01:00
2026-04-21 10:52:27 +02:00
#if defined(IRON_WINDOWS) || defined(IRON_LINUX) || defined(IRON_MACOS)
2026-03-06 12:56:38 +01:00
gc_unroot(nodes_material_neural);
2026-03-08 08:39:29 +01:00
nodes_material_neural = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_neural);
edit_image_node_init();
2026-04-21 10:52:27 +02:00
#ifdef IRON_WINDOWS
2026-03-06 12:56:38 +01:00
image_to_3d_mesh_node_init();
2026-04-21 10:52:27 +02:00
#endif
2026-03-06 12:56:38 +01:00
image_to_depth_node_init();
image_to_normal_map_node_init();
image_to_pbr_node_init();
inpaint_image_node_init();
outpaint_image_node_init();
2026-05-26 17:59:14 +02:00
repeat_node_init();
save_image_node_init();
2026-03-06 12:56:38 +01:00
text_to_image_node_init();
2026-05-30 19:45:52 +02:00
if (g_config->experimental) {
texture_mesh_node_init();
}
2026-03-06 12:56:38 +01:00
tile_image_node_init();
upscale_image_node_init();
vary_image_node_init();
2026-04-21 10:52:27 +02:00
#endif
2026-03-06 12:56:38 +01:00
gc_unroot(nodes_material_group);
2026-03-08 08:39:29 +01:00
nodes_material_group = any_array_create_from_raw((void *[]){}, 0);
2026-03-06 12:56:38 +01:00
gc_root(nodes_material_group);
group_node_init();
2026-04-21 10:52:27 +02:00
#if defined(IRON_WINDOWS) || defined(IRON_LINUX) || defined(IRON_MACOS)
2026-03-06 12:56:38 +01:00
gc_unroot(nodes_material_list);
nodes_material_list = any_array_create_from_raw(
2026-03-08 08:39:29 +01:00
(void *[]){
2026-03-06 12:56:38 +01:00
nodes_material_input,
nodes_material_texture,
nodes_material_color,
nodes_material_utilities,
nodes_material_neural,
nodes_material_group,
},
6);
gc_root(nodes_material_list);
2026-04-21 10:52:27 +02:00
#else
2026-03-06 12:56:38 +01:00
gc_unroot(nodes_material_list);
nodes_material_list = any_array_create_from_raw(
2026-03-08 08:39:29 +01:00
(void *[]){
2026-03-06 12:56:38 +01:00
nodes_material_input,
nodes_material_texture,
nodes_material_color,
nodes_material_utilities,
nodes_material_group,
},
5);
gc_root(nodes_material_list);
2026-04-21 10:52:27 +02:00
#endif
2026-03-06 12:56:38 +01:00
}
2026-03-07 21:12:59 +01:00
ui_node_t *nodes_material_get_node_t(char *node_type) {
2026-03-06 12:56:38 +01:00
for (i32 i = 0; i < nodes_material_list->length; ++i) {
ui_node_t_array_t *c = nodes_material_list->buffer[i];
for (i32 i = 0; i < c->length; ++i) {
ui_node_t *n = c->buffer[i];
if (string_equals(n->type, node_type)) {
return n;
}
}
}
2026-03-07 21:12:59 +01:00
return NULL;
2026-03-06 12:56:38 +01:00
}
2026-03-07 21:12:59 +01:00
ui_node_t *nodes_material_create_node(char *node_type, node_group_t *group) {
2026-03-06 12:56:38 +01:00
ui_node_t *n = nodes_material_get_node_t(node_type);
2026-03-07 21:12:59 +01:00
if (n == NULL) {
return NULL;
2026-03-06 12:56:38 +01:00
}
2026-03-07 21:12:59 +01:00
ui_node_canvas_t *canvas = group != NULL ? group->canvas : ui_nodes_get_canvas(false);
2026-04-05 16:41:00 +02:00
ui_nodes_t *nodes = group != NULL ? group->nodes : g_context->material->nodes;
2026-03-06 12:56:38 +01:00
ui_node_t *node = ui_nodes_make_node(n, nodes, canvas);
any_array_push(canvas->nodes, node);
return node;
}