From 89a25f0af0caa99c314eb5d03322e5556ab4207b Mon Sep 17 00:00:00 2001 From: luboslenco Date: Wed, 1 Apr 2026 21:02:23 +0200 Subject: [PATCH] paint: nodes cleanup --- paint/sources/functions.h | 9 --- paint/sources/globals.h | 4 - paint/sources/main.c | 4 - .../sources/material_nodes/camera_data_node.c | 74 ----------------- paint/sources/material_nodes/fresnel_node.c | 64 --------------- paint/sources/material_nodes/geometry_node.c | 47 +---------- .../material_nodes/layer_weight_node.c | 80 ------------------- .../sources/material_nodes/object_info_node.c | 32 +------- paint/sources/material_nodes/tangent_node.c | 39 --------- .../material_nodes/texture_coordinate_node.c | 15 +--- paint/sources/nodes_material.c | 4 - 11 files changed, 7 insertions(+), 365 deletions(-) delete mode 100644 paint/sources/material_nodes/camera_data_node.c delete mode 100644 paint/sources/material_nodes/fresnel_node.c delete mode 100644 paint/sources/material_nodes/layer_weight_node.c delete mode 100644 paint/sources/material_nodes/tangent_node.c diff --git a/paint/sources/functions.h b/paint/sources/functions.h index c2fa9dfa..b2fbd321 100644 --- a/paint/sources/functions.h +++ b/paint/sources/functions.h @@ -909,8 +909,6 @@ char *wave_texture_node_vector(ui_node_t *node, ui_node_s char *wave_texture_node_value(ui_node_t *node, ui_node_socket_t *socket); void clamp_node_init(); char *clamp_node_value(ui_node_t *node, ui_node_socket_t *socket); -void tangent_node_init(); -char *tangent_node_vector(ui_node_t *node, ui_node_socket_t *socket); void curvature_bake_node_init(); char *curvature_bake_node_value(ui_node_t *node, ui_node_socket_t *socket); void blur_node_init(); @@ -929,8 +927,6 @@ char *object_info_node_value(ui_node_t *node, ui_node_soc void magic_texture_node_init(); char *magic_texture_node_vector(ui_node_t *node, ui_node_socket_t *socket); char *magic_texture_node_value(ui_node_t *node, ui_node_socket_t *socket); -void fresnel_node_init(); -char *fresnel_node_value(ui_node_t *node, ui_node_socket_t *socket); void warp_node_init(); char *warp_node_vector(ui_node_t *node, ui_node_socket_t *socket); void normal_node_init(); @@ -980,8 +976,6 @@ void nodes_material_color_ramp_button(i32 node_id); void picker_node_init(); char *picker_node_vector(ui_node_t *node, ui_node_socket_t *socket); char *picker_node_value(ui_node_t *node, ui_node_socket_t *socket); -void layer_weight_node_init(); -char *layer_weight_node_value(ui_node_t *node, ui_node_socket_t *socket); void replace_color_node_init(); char *replace_color_node_vector(ui_node_t *node, ui_node_socket_t *socket); void bump_node_init(); @@ -990,9 +984,6 @@ void gabor_texture_node_init(); char *gabor_texture_node_value(ui_node_t *node, ui_node_socket_t *socket); void mix_normal_map_node_init(); char *mix_normal_map_node_vector(ui_node_t *node, ui_node_socket_t *socket); -void camera_data_node_init(); -char *camera_data_node_vector(ui_node_t *node, ui_node_socket_t *socket); -char *camera_data_node_value(ui_node_t *node, ui_node_socket_t *socket); void script_node_init(); char *script_node_value(ui_node_t *node, ui_node_socket_t *socket); void script_node_button(i32 node_id); diff --git a/paint/sources/globals.h b/paint/sources/globals.h index d7bbf123..b91cbaea 100644 --- a/paint/sources/globals.h +++ b/paint/sources/globals.h @@ -826,7 +826,6 @@ fun tex_wave_f(p: float3): float { \ "; ui_node_t *wave_texture_node_def; ui_node_t *clamp_node_def; -ui_node_t *tangent_node_def; char *parser_material_bake_passthrough_strength = "0.0"; char *parser_material_bake_passthrough_radius = "0.0"; char *parser_material_bake_passthrough_offset = "0.0"; @@ -848,7 +847,6 @@ fun tex_magic_f(p: float3): float { \ } \ "; ui_node_t *magic_texture_node_def; -ui_node_t *fresnel_node_def; ui_node_t *warp_node_def; ui_node_t *normal_node_def; ui_node_t *mapping_node_def; @@ -946,7 +944,6 @@ fun tex_voronoi(x: float3): float4 { \ ui_node_t *voronoi_texture_node_def; ui_node_t *color_ramp_node_def; ui_node_t *picker_node_def; -ui_node_t *layer_weight_node_def; ui_node_t *replace_color_node_def; ui_node_t *bump_node_def; char *str_tex_gabor = "\ @@ -1015,7 +1012,6 @@ fun tex_gabor(co: float3, scale: float, frequency: float, anisotropy: float, ori "; ui_node_t *gabor_texture_node_def; ui_node_t *mix_normal_map_node_def; -ui_node_t *camera_data_node_def; ui_node_t *script_node_def; ui_node_t *combine_xyz_node_def; char *str_tex_noise = "\ diff --git a/paint/sources/main.c b/paint/sources/main.c index 357993fc..22813abd 100644 --- a/paint/sources/main.c +++ b/paint/sources/main.c @@ -22,7 +22,6 @@ #include "material_nodes/brick_texture_node.c" #include "material_nodes/brightness_contrast_node.c" #include "material_nodes/bump_node.c" -#include "material_nodes/camera_data_node.c" #include "material_nodes/camera_texture_node.c" #include "material_nodes/checker_texture_node.c" #include "material_nodes/clamp_node.c" @@ -30,7 +29,6 @@ #include "material_nodes/color_ramp_node.c" #include "material_nodes/combine_xyz_node.c" #include "material_nodes/curvature_bake_node.c" -#include "material_nodes/fresnel_node.c" #include "material_nodes/gabor_texture_node.c" #include "material_nodes/gamma_node.c" #include "material_nodes/geometry_node.c" @@ -41,7 +39,6 @@ #include "material_nodes/invert_color_node.c" #include "material_nodes/layer_mask_node.c" #include "material_nodes/layer_node.c" -#include "material_nodes/layer_weight_node.c" #include "material_nodes/magic_texture_node.c" #include "material_nodes/map_range_node.c" #include "material_nodes/mapping_node.c" @@ -63,7 +60,6 @@ #include "material_nodes/script_node.c" #include "material_nodes/separate_xyz_node.c" #include "material_nodes/shader_node.c" -#include "material_nodes/tangent_node.c" #include "material_nodes/text_texture_node.c" #include "material_nodes/texture_coordinate_node.c" #include "material_nodes/uv_map_node.c" diff --git a/paint/sources/material_nodes/camera_data_node.c b/paint/sources/material_nodes/camera_data_node.c deleted file mode 100644 index 9aee5b71..00000000 --- a/paint/sources/material_nodes/camera_data_node.c +++ /dev/null @@ -1,74 +0,0 @@ - -#include "../global.h" - -void camera_data_node_init() { - - camera_data_node_def = - GC_ALLOC_INIT(ui_node_t, {.id = 0, - .name = _tr("Camera Data"), - .type = "CAMERA", - .x = 0, - .y = 0, - .color = 0xffb34f5a, - .inputs = any_array_create_from_raw((void *[]){}, 0), - .outputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("View Vector"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("View Z Depth"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("View Distance"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 3), - .buttons = any_array_create_from_raw((void *[]){}, 0), - .width = 0, - .flags = 0}); - gc_root(camera_data_node_def); - - any_array_push(nodes_material_input, camera_data_node_def); - any_map_set(parser_material_node_vectors, "CAMERA", camera_data_node_vector); - any_map_set(parser_material_node_values, "CAMERA", camera_data_node_value); -} - -char *camera_data_node_vector(ui_node_t *node, ui_node_socket_t *socket) { - parser_material_kong->frag_vvec_cam = true; - return "vvec_cam"; -} - -char *camera_data_node_value(ui_node_t *node, ui_node_socket_t *socket) { - if (socket == node->outputs->buffer[1]) { // View Z Depth - node_shader_add_constant(parser_material_kong, "camera_proj: float2", "_camera_plane_proj"); - parser_material_kong->frag_wvpposition = true; - return "(constants.camera_proj.y / ((input.wvpposition.z / input.wvpposition.w) - constants.camera_proj.x))"; - } - else { // View Distance - node_shader_add_constant(parser_material_kong, "eye: float3", "_camera_pos"); - parser_material_kong->frag_wposition = true; - return "distance(constants.eye, input.wposition)"; - } -} diff --git a/paint/sources/material_nodes/fresnel_node.c b/paint/sources/material_nodes/fresnel_node.c deleted file mode 100644 index 8087b2fe..00000000 --- a/paint/sources/material_nodes/fresnel_node.c +++ /dev/null @@ -1,64 +0,0 @@ - -#include "../global.h" - -void fresnel_node_init() { - - fresnel_node_def = - GC_ALLOC_INIT(ui_node_t, {.id = 0, - .name = _tr("Fresnel"), - .type = "FRESNEL", - .x = 0, - .y = 0, - .color = 0xffb34f5a, - .inputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("IOR"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(1.5), - .min = 0.0, - .max = 3.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Normal"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 2), - .outputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Factor"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 1), - .buttons = any_array_create_from_raw((void *[]){}, 0), - .width = 0, - .flags = 0}); - gc_root(fresnel_node_def); - - any_array_push(nodes_material_input, fresnel_node_def); - any_map_set(parser_material_node_values, "FRESNEL", fresnel_node_value); -} - -char *fresnel_node_value(ui_node_t *node, ui_node_socket_t *socket) { - char *ior = parser_material_parse_value_input(node->inputs->buffer[0], false); - parser_material_kong->frag_dotnv = true; - return string("pow(1.0 - dotnv, 7.25 / %s)", ior); -} diff --git a/paint/sources/material_nodes/geometry_node.c b/paint/sources/material_nodes/geometry_node.c index 8feefd0c..638ad44b 100644 --- a/paint/sources/material_nodes/geometry_node.c +++ b/paint/sources/material_nodes/geometry_node.c @@ -42,16 +42,6 @@ void geometry_node_init() { .max = 1.0, .precision = 100, .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("True Normal"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, .node_id = 0, .name = _tr("Incoming"), @@ -72,16 +62,6 @@ void geometry_node_init() { .max = 1.0, .precision = 100, .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Backfacing"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, .node_id = 0, .name = _tr("Pointiness"), @@ -92,18 +72,8 @@ void geometry_node_init() { .max = 1.0, .precision = 100, .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Random Per Island"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), }, - 9), + 6), .buttons = any_array_create_from_raw((void *[]){}, 0), .width = 0, .flags = 0}); @@ -127,11 +97,7 @@ char *geometry_node_vector(ui_node_t *node, ui_node_socket_t *socket) { parser_material_kong->frag_wtangent = true; return "input.wtangent"; } - else if (socket == node->outputs->buffer[3]) { // True Normal - parser_material_kong->frag_n = true; - return "n"; - } - else if (socket == node->outputs->buffer[4]) { // Incoming + else if (socket == node->outputs->buffer[3]) { // Incoming parser_material_kong->frag_vvec = true; return "vvec"; } @@ -142,11 +108,7 @@ char *geometry_node_vector(ui_node_t *node, ui_node_socket_t *socket) { } char *geometry_node_value(ui_node_t *node, ui_node_socket_t *socket) { - if (socket == node->outputs->buffer[6]) { // Backfacing - return "0.0"; // SV_IsFrontFace - // return "(1.0 - float(gl_FrontFacing))"; - } - else if (socket == node->outputs->buffer[7]) { // Pointiness + if (socket == node->outputs->buffer[5]) { // Pointiness f32 strength = 1.0; f32 radius = 1.0; f32 offset = 0.0; @@ -160,7 +122,4 @@ char *geometry_node_value(ui_node_t *node, ui_node_socket_t *socket) { store, store, f32_to_string(radius), f32_to_string(strength), f32_to_string(offset))); return string("%s_curvature", store); } - else { // Random Per Island - return "0.0"; - } } diff --git a/paint/sources/material_nodes/layer_weight_node.c b/paint/sources/material_nodes/layer_weight_node.c deleted file mode 100644 index 2c6be761..00000000 --- a/paint/sources/material_nodes/layer_weight_node.c +++ /dev/null @@ -1,80 +0,0 @@ - -#include "../global.h" - -void layer_weight_node_init() { - - layer_weight_node_def = - GC_ALLOC_INIT(ui_node_t, {.id = 0, - .name = _tr("Layer Weight"), - .type = "LAYER_WEIGHT", - .x = 0, - .y = 0, - .color = 0xffb34f5a, - .inputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Blend"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.5), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Normal"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 2), - .outputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Fresnel"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Facing"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 2), - .buttons = any_array_create_from_raw((void *[]){}, 0), - .width = 0, - .flags = 0}); - gc_root(layer_weight_node_def); - - any_array_push(nodes_material_input, layer_weight_node_def); - any_map_set(parser_material_node_values, "LAYER_WEIGHT", layer_weight_node_value); -} - -char *layer_weight_node_value(ui_node_t *node, ui_node_socket_t *socket) { - char *blend = parser_material_parse_value_input(node->inputs->buffer[0], false); - if (socket == node->outputs->buffer[0]) { // Fresnel - parser_material_kong->frag_dotnv = true; - return string("clamp(pow(1.0 - dotnv, (1.0 - %s) * 10.0), 0.0, 1.0)", blend); - } - else { // Facing - parser_material_kong->frag_dotnv = true; - return string("((1.0 - dotnv) * %s)", blend); - } -} diff --git a/paint/sources/material_nodes/object_info_node.c b/paint/sources/material_nodes/object_info_node.c index 3a2ee753..5ea7ed90 100644 --- a/paint/sources/material_nodes/object_info_node.c +++ b/paint/sources/material_nodes/object_info_node.c @@ -23,26 +23,6 @@ void object_info_node_init() { .max = 1.0, .precision = 100, .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Color"), - .type = "RGBA", - .color = 0xffc7c729, - .default_value = f32_array_create_xyzw(0.0, 0.0, 0.0, 1.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Alpha"), - .type = "VALUE", - .color = 0xffa1a1a1, - .default_value = f32_array_create_x(0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, .node_id = 0, .name = _tr("Object Index"), @@ -74,7 +54,7 @@ void object_info_node_init() { .precision = 100, .display = 0}), }, - 6), + 4), .buttons = any_array_create_from_raw((void *[]){}, 0), .width = 0, .flags = 0}); @@ -90,20 +70,14 @@ char *object_info_node_vector(ui_node_t *node, ui_node_socket_t *socket) { parser_material_kong->frag_wposition = true; return "input.wposition"; } - else { // Color - return "float3(0.0, 0.0, 0.0)"; - } } char *object_info_node_value(ui_node_t *node, ui_node_socket_t *socket) { - if (socket == node->outputs->buffer[2]) { // Alpha - return "0.0"; - } - else if (socket == node->outputs->buffer[3]) { // Object Index + if (socket == node->outputs->buffer[1]) { // Object Index node_shader_add_constant(parser_material_kong, "object_info_index: float", "_object_info_index"); return "constants.object_info_index"; } - else if (socket == node->outputs->buffer[4]) { // Material Index + else if (socket == node->outputs->buffer[2]) { // Material Index node_shader_add_constant(parser_material_kong, "object_info_material_index: float", "_object_info_material_index"); return "constants.object_info_material_index"; } diff --git a/paint/sources/material_nodes/tangent_node.c b/paint/sources/material_nodes/tangent_node.c deleted file mode 100644 index 8552c509..00000000 --- a/paint/sources/material_nodes/tangent_node.c +++ /dev/null @@ -1,39 +0,0 @@ - -#include "../global.h" - -void tangent_node_init() { - - tangent_node_def = GC_ALLOC_INIT(ui_node_t, {.id = 0, - .name = _tr("Tangent"), - .type = "TANGENT", - .x = 0, - .y = 0, - .color = 0xffb34f5a, - .inputs = any_array_create_from_raw((void *[]){}, 0), - .outputs = any_array_create_from_raw( - (void *[]){ - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Tangent"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), - }, - 1), - .buttons = any_array_create_from_raw((void *[]){}, 0), - .width = 0, - .flags = 0}); - gc_root(tangent_node_def); - - any_array_push(nodes_material_input, tangent_node_def); - any_map_set(parser_material_node_vectors, "TANGENT", tangent_node_vector); -} - -char *tangent_node_vector(ui_node_t *node, ui_node_socket_t *socket) { - parser_material_kong->frag_wtangent = true; - return "input.wtangent"; -} diff --git a/paint/sources/material_nodes/texture_coordinate_node.c b/paint/sources/material_nodes/texture_coordinate_node.c index 64e7b647..df3654be 100644 --- a/paint/sources/material_nodes/texture_coordinate_node.c +++ b/paint/sources/material_nodes/texture_coordinate_node.c @@ -73,18 +73,8 @@ void texture_coordinate_node_init() { .max = 1.0, .precision = 100, .display = 0}), - GC_ALLOC_INIT(ui_node_socket_t, {.id = 0, - .node_id = 0, - .name = _tr("Reflection"), - .type = "VECTOR", - .color = 0xff6363c7, - .default_value = f32_array_create_xyz(0.0, 0.0, 0.0), - .min = 0.0, - .max = 1.0, - .precision = 100, - .display = 0}), }, - 7), + 6), .buttons = any_array_create_from_raw((void *[]){}, 0)}); gc_root(texture_coordinate_node_def); @@ -117,7 +107,4 @@ char *texture_coordinate_node_vector(ui_node_t *node, ui_node_socket_t *socket) parser_material_kong->frag_wvpposition = true; return "input.wvpposition.xyz"; } - else { // Reflection - return "float3(0.0, 0.0, 0.0)"; - } } diff --git a/paint/sources/nodes_material.c b/paint/sources/nodes_material.c index 394d91c7..819ac801 100644 --- a/paint/sources/nodes_material.c +++ b/paint/sources/nodes_material.c @@ -10,19 +10,15 @@ void nodes_material_init() { nodes_material_input = any_array_create_from_raw((void *[]){}, 0); gc_root(nodes_material_input); attribute_node_init(); - camera_data_node_init(); rgb_node_init(); // color_node_init - 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();