2024-03-13 23:50:11 +01:00
|
|
|
|
2025-11-20 20:11:17 +01:00
|
|
|
/// if (arm_windows || arm_linux || arm_macos)
|
|
|
|
|
|
2025-10-20 10:28:33 +02:00
|
|
|
let nodes_material_categories: string[] = [ _tr("Input"), _tr("Texture"), _tr("Color"), _tr("Utilities"), _tr("Neural"), _tr("Group") ];
|
2025-10-01 12:40:05 +02:00
|
|
|
|
2025-11-20 20:11:17 +01:00
|
|
|
/// else
|
|
|
|
|
|
|
|
|
|
let nodes_material_categories: string[] = [ _tr("Input"), _tr("Texture"), _tr("Color"), _tr("Utilities"), _tr("Group") ];
|
|
|
|
|
|
|
|
|
|
/// end
|
|
|
|
|
|
2025-10-01 12:40:05 +02:00
|
|
|
let nodes_material_input: ui_node_t[];
|
|
|
|
|
let nodes_material_texture: ui_node_t[];
|
|
|
|
|
let nodes_material_color: ui_node_t[];
|
2025-10-20 10:28:33 +02:00
|
|
|
let nodes_material_utilities: ui_node_t[];
|
2025-10-09 22:34:25 +02:00
|
|
|
let nodes_material_neural: ui_node_t[];
|
2025-10-01 12:40:05 +02:00
|
|
|
let nodes_material_group: ui_node_t[];
|
|
|
|
|
|
2025-10-15 18:39:55 +02:00
|
|
|
type node_list_t = ui_node_t[];
|
|
|
|
|
let nodes_material_list: node_list_t[] = null;
|
2024-11-08 23:46:39 +01:00
|
|
|
|
2024-08-29 21:05:51 +02:00
|
|
|
function nodes_material_init() {
|
2025-10-01 12:40:05 +02:00
|
|
|
if (nodes_material_list != null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-07 13:32:44 +02:00
|
|
|
nodes_material_input = [];
|
|
|
|
|
attribute_node_init();
|
|
|
|
|
camera_data_node_init();
|
2025-10-20 10:28:33 +02:00
|
|
|
rgb_node_init(); // color_node_init
|
2025-10-07 13:32:44 +02:00
|
|
|
fresnel_node_init();
|
|
|
|
|
geometry_node_init();
|
|
|
|
|
layer_node_init();
|
|
|
|
|
layer_mask_node_init();
|
|
|
|
|
layer_weight_node_init();
|
|
|
|
|
material_node_init();
|
|
|
|
|
object_info_node_init();
|
|
|
|
|
picker_node_init();
|
|
|
|
|
script_node_init();
|
|
|
|
|
shader_node_init();
|
|
|
|
|
tangent_node_init();
|
|
|
|
|
texture_coordinate_node_init();
|
|
|
|
|
uv_map_node_init();
|
|
|
|
|
value_node_init();
|
|
|
|
|
wireframe_node_init();
|
|
|
|
|
|
|
|
|
|
nodes_material_texture = [];
|
|
|
|
|
brick_texture_node_init();
|
2025-10-20 20:33:27 +02:00
|
|
|
camera_texture_node_init();
|
2025-10-07 13:32:44 +02:00
|
|
|
checker_texture_node_init();
|
|
|
|
|
curvature_bake_node_init();
|
|
|
|
|
gradient_texture_node_init();
|
|
|
|
|
image_texture_node_init();
|
|
|
|
|
text_texture_node_init();
|
|
|
|
|
magic_texture_node_init();
|
|
|
|
|
noise_texture_node_init();
|
|
|
|
|
voronoi_texture_node_init();
|
|
|
|
|
wave_texture_node_init();
|
2025-10-07 14:04:57 +02:00
|
|
|
gabor_texture_node_init();
|
2025-10-07 13:32:44 +02:00
|
|
|
|
|
|
|
|
nodes_material_color = [];
|
|
|
|
|
blur_node_init();
|
|
|
|
|
brightness_contrast_node_init();
|
|
|
|
|
gamma_node_init();
|
|
|
|
|
hue_saturation_value_node_init();
|
2025-10-20 10:28:33 +02:00
|
|
|
invert_color_node_init();
|
2025-10-07 13:32:44 +02:00
|
|
|
mix_color_node_init();
|
|
|
|
|
quantize_node_init();
|
|
|
|
|
replace_color_node_init();
|
|
|
|
|
warp_node_init();
|
|
|
|
|
|
2025-10-20 10:28:33 +02:00
|
|
|
nodes_material_utilities = [];
|
2025-10-07 13:32:44 +02:00
|
|
|
bump_node_init();
|
|
|
|
|
mapping_node_init();
|
|
|
|
|
mix_normal_map_node_init();
|
|
|
|
|
normal_node_init();
|
|
|
|
|
normal_map_node_init();
|
|
|
|
|
vector_curves_node_init();
|
|
|
|
|
clamp_node_init();
|
|
|
|
|
color_ramp_node_init();
|
|
|
|
|
color_mask_node_init();
|
|
|
|
|
combine_xyz_node_init();
|
|
|
|
|
map_range_node_init();
|
|
|
|
|
math2_node_init();
|
|
|
|
|
rgb_to_bw_node_init();
|
|
|
|
|
separate_xyz_node_init();
|
|
|
|
|
vector_math2_node_init();
|
|
|
|
|
|
2025-11-20 20:11:17 +01:00
|
|
|
/// if (arm_windows || arm_linux || arm_macos)
|
|
|
|
|
|
2025-10-09 22:34:25 +02:00
|
|
|
nodes_material_neural = [];
|
2025-11-19 22:50:04 +01:00
|
|
|
edit_image_node_init();
|
|
|
|
|
image_to_depth_node_init();
|
|
|
|
|
image_to_normal_map_node_init();
|
|
|
|
|
image_to_pbr_node_init();
|
|
|
|
|
inpaint_image_node_init();
|
|
|
|
|
outpaint_image_node_init();
|
|
|
|
|
text_to_image_node_init();
|
|
|
|
|
tile_image_node_init();
|
|
|
|
|
upscale_image_node_init();
|
|
|
|
|
vary_image_node_init();
|
2025-10-07 13:32:44 +02:00
|
|
|
|
2025-11-20 20:11:17 +01:00
|
|
|
/// end
|
|
|
|
|
|
2025-10-07 13:32:44 +02:00
|
|
|
nodes_material_group = [];
|
|
|
|
|
group_node_init();
|
2025-10-01 12:40:05 +02:00
|
|
|
|
2025-11-20 20:11:17 +01:00
|
|
|
/// if (arm_windows || arm_linux || arm_macos)
|
|
|
|
|
|
2025-11-06 19:18:48 +01:00
|
|
|
nodes_material_list =
|
|
|
|
|
[ nodes_material_input, nodes_material_texture, nodes_material_color, nodes_material_utilities, nodes_material_neural, nodes_material_group ];
|
2025-11-20 20:11:17 +01:00
|
|
|
|
|
|
|
|
/// else
|
|
|
|
|
|
|
|
|
|
nodes_material_list = [ nodes_material_input, nodes_material_texture, nodes_material_color, nodes_material_utilities, nodes_material_group ];
|
|
|
|
|
|
|
|
|
|
/// end
|
2024-08-29 21:05:51 +02:00
|
|
|
}
|
|
|
|
|
|
2024-09-03 15:52:05 +02:00
|
|
|
function nodes_material_get_node_t(node_type: string): ui_node_t {
|
2024-03-21 21:06:41 +01:00
|
|
|
for (let i: i32 = 0; i < nodes_material_list.length; ++i) {
|
2024-09-03 15:52:05 +02:00
|
|
|
let c: ui_node_t[] = nodes_material_list[i];
|
2024-03-21 21:06:41 +01:00
|
|
|
for (let i: i32 = 0; i < c.length; ++i) {
|
2024-09-03 15:52:05 +02:00
|
|
|
let n: ui_node_t = c[i];
|
2024-03-21 21:06:41 +01:00
|
|
|
if (n.type == node_type) {
|
2024-03-20 16:13:54 +01:00
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-03-13 23:50:11 +01:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-03 15:52:05 +02:00
|
|
|
function nodes_material_create_node(node_type: string, group: node_group_t = null): ui_node_t {
|
|
|
|
|
let n: ui_node_t = nodes_material_get_node_t(node_type);
|
2024-03-20 16:13:54 +01:00
|
|
|
if (n == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2025-09-27 13:23:25 +02:00
|
|
|
let canvas: ui_node_canvas_t = group != null ? group.canvas : ui_nodes_get_canvas();
|
2025-10-15 18:39:55 +02:00
|
|
|
let nodes: ui_nodes_t = group != null ? group.nodes : context_raw.material.nodes;
|
|
|
|
|
let node: ui_node_t = ui_nodes_make_node(n, nodes, canvas);
|
2024-03-20 16:13:54 +01:00
|
|
|
array_push(canvas.nodes, node);
|
2024-03-13 23:50:11 +01:00
|
|
|
return node;
|
|
|
|
|
}
|