Files
armorpaint/base/sources/ts/nodes_material.ts
T
luboslenco 47bc985b42 Cleanup
2025-02-26 08:47:09 +01:00

4349 lines
80 KiB
TypeScript

let nodes_material_categories: string[] = [
_tr("Input"),
_tr("Texture"),
_tr("Color"),
_tr("Vector"),
_tr("Converter"),
_tr("Group")
];
let nodes_material_input: ui_node_t[] = [
{
id: 0,
name: _tr("Attribute"),
type: "ATTRIBUTE",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Name"),
type: "STRING",
output: -1,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Camera Data"),
type: "CAMERA",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
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
},
{
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
},
{
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Fresnel"),
type: "FRESNEL",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("IOR"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.45),
min: 0.0,
max: 3.0,
precision: 100,
display: 0
},
{
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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Geometry"),
type: "NEW_GEOMETRY",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Position"),
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
},
{
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
},
{
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
},
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Incoming"),
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
},
{
id: 0,
node_id: 0,
name: _tr("Parametric"),
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
},
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Pointiness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Layer"),
type: "LAYER", // extension
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Base 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
},
{
id: 0,
node_id: 0,
name: _tr("Opacity"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Occlusion"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Roughness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Metallic"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Emission"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Height"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Subsurface"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Layer"),
type: "ENUM",
output: -1,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(""),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Layer Mask"),
type: "LAYER_MASK", // extension
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Layer"),
type: "ENUM",
output: -1,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(""),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Layer Weight"),
type: "LAYER_WEIGHT",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [
{
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
},
{
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
}
],
outputs: [
{
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
},
{
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Material"),
type: "MATERIAL", // extension
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Base 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
},
{
id: 0,
node_id: 0,
name: _tr("Opacity"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Occlusion"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Roughness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Metallic"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Emission"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Height"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Subsurface"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Material"),
type: "ENUM",
output: -1,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(""),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Object Info"),
type: "OBJECT_INFO",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Location"),
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
},
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Object Index"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Material Index"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Random"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Picker"),
type: "PICKER", // extension
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Base 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
},
{
id: 0,
node_id: 0,
name: _tr("Opacity"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Occlusion"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Roughness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Metallic"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Emission"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Height"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Subsurface"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("RGB"),
type: "RGB",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.5, 0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("default_value"),
type: "RGBA",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Script"),
type: "SCRIPT_CPU", // extension
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: " ",
type: "STRING",
output: -1,
default_value: f32_array_create_x(0), // "",
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Shader"),
type: "SHADER_GPU", // extension
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: " ",
type: "STRING",
output: -1,
default_value: f32_array_create_x(0), // "",
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Tangent"),
type: "TANGENT",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Texture Coordinate"),
type: "TEX_COORD",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Generated"),
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
},
{
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
},
{
id: 0,
node_id: 0,
name: _tr("UV"),
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
},
{
id: 0,
node_id: 0,
name: _tr("Object"),
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
},
{
id: 0,
node_id: 0,
name: _tr("Camera"),
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
},
{
id: 0,
node_id: 0,
name: _tr("Window"),
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
},
{
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
}
],
buttons: []
},
{
id: 0,
name: _tr("UV Map"),
type: "UVMAP",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("UV"),
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Value"),
type: "VALUE",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("default_value"),
type: "VALUE",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 10.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Vertex Color"),
type: "VERTEX_COLOR",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Wireframe"),
type: "WIREFRAME",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Size"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.01),
min: 0.0,
max: 0.1,
precision: 100,
display: 0
},
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Pixel Size"),
type: "BOOL",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
];
// let nodes_material_output: ui_node_t[] = [
// {
// id: 0,
// name: _tr("Material Output"),
// type: "OUTPUT_MATERIAL_PBR",
// x: 0,
// y: 0,
// color: 0xffb34f5a,
// inputs: [
// {
// id: 0,
// node_id: 0,
// name: _tr("Base Color"),
// type: "RGBA",
// color: 0xffc7c729,
// default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Opacity"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(1.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Occlusion"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(1.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Roughness"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(0.1),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Metallic"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(0.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Normal Map"),
// type: "VECTOR",
// color: -10238109,
// default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Emission"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(0.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Height"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(0.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// },
// {
// id: 0,
// node_id: 0,
// name: _tr("Subsurface"),
// type: "VALUE",
// color: 0xffa1a1a1,
// default_value: f32_array_create_x(0.0),
// min: 0.0,
// max: 1.0,
// precision: 100,
// display: 0
// }
// ],
// outputs: [],
// buttons: [],
// width: 0
// }
// ];
let nodes_material_texture: ui_node_t[] = [
{
id: 0,
name: _tr("Brick Texture"),
type: "TEX_BRICK",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Color 1"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyz(0.8, 0.8, 0.8),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Color 2"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyz(0.2, 0.2, 0.2),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Mortar"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyz(0.0, 0.0, 0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Checker Texture"),
type: "TEX_CHECKER",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Color 1"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyz(0.8, 0.8, 0.8),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Color 2"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyz(0.2, 0.2, 0.2),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Curvature Bake"),
type: "BAKE_CURVATURE",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Strength"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 2.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Radius"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 2.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Offset"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: -2.0,
max: 2.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Gradient Texture"),
type: "TEX_GRADIENT",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("gradient_type"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Linear") + "\n" + _tr("Diagonal") + "\n" + _tr("Radial") + "\n" + _tr("Spherical")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Image Texture"),
type: "TEX_IMAGE",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Alpha"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("File"),
type: "ENUM",
output: -1,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(""),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
},
{
name: _tr("Color Space"),
type: "ENUM",
output: -1,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Auto") + "\n" + _tr("Linear") + "\n" + _tr("sRGB") + "\n" + _tr("DirectX Normal Map")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Text Texture"),
type: "TEX_TEXT", // extension
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Alpha"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: "text",
type: "STRING",
output: -1,
default_value: f32_array_create_x(0), // "",
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Magic Texture"),
type: "TEX_MAGIC",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Musgrave Texture"),
type: "TEX_MUSGRAVE",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Height"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Noise Texture"),
type: "TEX_NOISE",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Voronoi Texture"),
type: "TEX_VORONOI",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("coloring"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Intensity") + "\n" + _tr("Cells")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Wave Texture"),
type: "TEX_WAVE",
x: 0,
y: 0,
color: 0xff4982a0,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(5.0),
min: 0.0,
max: 10.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
}
];
let nodes_material_color: ui_node_t[] = [
{
id: 0,
name: _tr("Blur"),
type: "BLUR", // extension
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Strength"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Brightness/Contrast"),
type: "BRIGHTCONTRAST",
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Bright"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Contrast"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Gamma"),
type: "GAMMA",
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Gamma"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Hue/Saturation/Value"),
type: "HUE_SAT",
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Hue"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Saturation"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Invert"),
type: "INVERT",
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Mix Color"),
type: "MIX_RGB",
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Color 1"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.5, 0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Color 2"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.5, 0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("blend_type"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Mix") + "\n" + _tr("Darken") + "\n" + _tr("Multiply") + "\n" + _tr("Burn") + "\n" + _tr("Lighten") + "\n" + _tr("Screen") + "\n" + _tr("Dodge") + "\n" + _tr("Add") + "\n" + _tr("Overlay") + "\n" + _tr("Soft Light") + "\n" + _tr("Linear Light") + "\n" + _tr("Difference") + "\n" + _tr("Subtract") + "\n" + _tr("Divide") + "\n" + _tr("Hue") + "\n" + _tr("Saturation") + "\n" + _tr("Color") + "\n" + _tr("Value")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
},
{
name: _tr("use_clamp"),
type: "BOOL",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Quantize"),
type: "QUANTIZE", // extension
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Strength"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.1),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Replace Color"),
type: "REPLACECOL", // extension
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0)
},
{
id: 0,
node_id: 0,
name: _tr("Old Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0)
},
{
id: 0,
node_id: 0,
name: _tr("New Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0)
},
{
id: 0,
node_id: 0,
name: _tr("Radius"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.1),
min: 0.0,
max: 1.74,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fuzziness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0)
}
],
buttons: []
},
{
id: 0,
name: _tr("Warp"),
type: "DIRECT_WARP", // extension
x: 0,
y: 0,
color: 0xff448c6d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Angle"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 360.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Mask"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
}
];
let nodes_material_vector: ui_node_t[] = [
{
id: 0,
name: _tr("Bump"),
type: "BUMP",
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Strength"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Distance"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Height"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.0, 0.0, 0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Mapping"),
type: "MAPPING",
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Location"),
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: 1
},
{
id: 0,
node_id: 0,
name: _tr("Rotation"),
type: "VECTOR",
color: 0xff6363c7,
default_value: f32_array_create_xyz(0.0, 0.0, 0.0),
min: 0.0,
max: 360.0,
precision: 100,
display: 1
},
{
id: 0,
node_id: 0,
name: _tr("Scale"),
type: "VECTOR",
color: 0xff6363c7,
default_value: f32_array_create_xyz(1.0, 1.0, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 1
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Mix Normal Map"),
type: "MIX_NORMAL_MAP", // extension
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Normal Map 1"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Normal Map 2"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("blend_type"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Partial Derivative") + "\n" + _tr("Whiteout") + "\n" + _tr("Reoriented")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Normal"),
type: "NORMAL",
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
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
}
],
outputs: [
{
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
},
{
id: 0,
node_id: 0,
name: _tr("Dot"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("Vector"),
type: "VECTOR",
output: 0,
default_value: f32_array_create_xyz(0.0, 0.0, 0.0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Normal Map"),
type: "NORMAL_MAP",
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Strength"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 2.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Normal Map"),
type: "VECTOR",
color: -10238109,
default_value: f32_array_create_xyz(0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Vector Curves"),
type: "CURVE_VEC",
x: 0,
y: 0,
color: 0xff522c99,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
buttons: [
{
name: "nodes_material_vector_curves_button",
type: "CUSTOM",
output: 0,
default_value: f32_array_create(96 + 3), // x - [0, 32], y - [33, 64], z - [65, 96], x_len, y_len, z_len
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 8.5
}
],
width: 0
}
];
let nodes_material_converter: ui_node_t[] = [
{
id: 0,
name: _tr("Clamp"),
type: "CLAMP",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Min"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Max"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("operation"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Min Max") + "\n" + _tr("Range")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Color Ramp"),
type: "VALTORGB",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Fac"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
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
},
{
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
}
],
buttons: [
{
name: "nodes_material_color_ramp_button",
type: "CUSTOM",
output: 0,
default_value: f32_array_create_xyzwv(1.0, 1.0, 1.0, 1.0, 0.0),
data: u8_array_create(1),
min: 0.0,
max: 1.0,
precision: 100,
height: 4.5
}
],
width: 0
},
{
id: 0,
name: _tr("Color Mask"),
type: "COLMASK", // extension
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Mask Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Radius"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.1),
min: 0.0,
max: 1.74,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Fuzziness"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Mask"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Combine HSV"),
type: "COMBHSV",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("H"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("S"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("V"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Combine RGB"),
type: "COMBRGB",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("R"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("G"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("B"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Combine XYZ"),
type: "COMBXYZ",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("X"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Y"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Z"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Map Range"),
type: "MAPRANGE",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("From Min"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("From Max"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("To Min"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("To Max"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("use_clamp"),
type: "BOOL",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("Math"),
type: "MATH",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.5),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("operation"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Add") + "\n" + _tr("Subtract") + "\n" + _tr("Multiply") + "\n" + _tr("Divide") + "\n" + _tr("Power") + "\n" + _tr("Logarithm") + "\n" + _tr("Square Root") + "\n" + _tr("Inverse Square Root") + "\n" + _tr("Absolute") + "\n" + _tr("Exponent") + "\n" + _tr("Minimum") + "\n" + _tr("Maximum") + "\n" + _tr("Less Than") + "\n" + _tr("Greater Than") + "\n" + _tr("Sign") + "\n" + _tr("Round") + "\n" + _tr("Floor") + "\n" + _tr("Ceil") + "\n" + _tr("Truncate") + "\n" + _tr("Fraction") + "\n" + _tr("Modulo") + "\n" + _tr("Snap") + "\n" + _tr("Ping-Pong") + "\n" + _tr("Sine") + "\n" + _tr("Cosine") + "\n" + _tr("Tangent") + "\n" + _tr("Arcsine") + "\n" + _tr("Arccosine") + "\n" + _tr("Arctangent") + "\n" + _tr("Arctan2") + "\n" + _tr("Hyperbolic Sine") + "\n" + _tr("Hyperbolic Cosine") + "\n" + _tr("Hyperbolic Tangent") + "\n" + _tr("To Radians") + "\n" + _tr("To Degrees")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
},
{
name: _tr("use_clamp"),
type: "BOOL",
output: 0,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
},
{
id: 0,
name: _tr("RGB to BW"),
type: "RGBTOBW",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.0, 0.0, 0.0, 0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("Val"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Separate HSV"),
type: "SEPHSV",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.5, 0.5, 0.5, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("H"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("S"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("V"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Separate RGB"),
type: "SEPRGB",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("Color"),
type: "RGBA",
color: 0xffc7c729,
default_value: f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("R"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("G"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("B"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Separate XYZ"),
type: "SEPXYZ",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("X"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Y"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
},
{
id: 0,
node_id: 0,
name: _tr("Z"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [],
width: 0
},
{
id: 0,
name: _tr("Vector Math"),
type: "VECT_MATH",
x: 0,
y: 0,
color: 0xff62676d,
inputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("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
}
],
outputs: [
{
id: 0,
node_id: 0,
name: _tr("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
},
{
id: 0,
node_id: 0,
name: _tr("Value"),
type: "VALUE",
color: 0xffa1a1a1,
default_value: f32_array_create_x(0.0),
min: 0.0,
max: 1.0,
precision: 100,
display: 0
}
],
buttons: [
{
name: _tr("operation"),
type: "ENUM",
output: 0,
default_value: f32_array_create_x(0),
data: u8_array_create_from_string(_tr("Add") + "\n" + _tr("Subtract") + "\n" + _tr("Multiply") + "\n" + _tr("Divide") + "\n" + _tr("Average") + "\n" + _tr("Cross Product") + "\n" + _tr("Project") + "\n" + _tr("Reflect") + "\n" + _tr("Dot Product") + "\n" + _tr("Distance") + "\n" + _tr("Length") + "\n" + _tr("Scale") + "\n" + _tr("Normalize") + "\n" + _tr("Absolute") + "\n" + _tr("Minimum") + "\n" + _tr("Maximum") + "\n" + _tr("Floor") + "\n" + _tr("Ceil") + "\n" + _tr("Fraction") + "\n" + _tr("Modulo") + "\n" + _tr("Snap") + "\n" + _tr("Sine") + "\n" + _tr("Cosine") + "\n" + _tr("Tangent")),
min: 0.0,
max: 1.0,
precision: 100,
height: 0
}
],
width: 0
}
];
let nodes_material_group: ui_node_t[] = [
{
id: 0,
name: _tr("New Group"),
type: "GROUP",
x: 0,
y: 0,
color: 0xffb34f5a,
inputs: [],
outputs: [],
buttons: [
{
name: "nodes_material_new_group_button",
type: "CUSTOM",
output: -1,
default_value: f32_array_create_x(0),
data: null,
min: 0.0,
max: 1.0,
precision: 100,
height: 1
}
],
width: 0
}
];
type node_list_t = ui_node_t[];
let nodes_material_list: node_list_t[] = [
nodes_material_input,
nodes_material_texture,
nodes_material_color,
nodes_material_vector,
nodes_material_converter,
nodes_material_group
];
let _nodes_material_nodes: ui_nodes_t;
let _nodes_material_node: ui_node_t;
let _nodes_material_sockets: ui_node_socket_t[];
function nodes_material_init() {
map_set(ui_nodes_custom_buttons, "nodes_material_vector_curves_button", nodes_material_vector_curves_button);
map_set(ui_nodes_custom_buttons, "nodes_material_color_ramp_button", nodes_material_color_ramp_button);
map_set(ui_nodes_custom_buttons, "nodes_material_new_group_button", nodes_material_new_group_button);
map_set(ui_nodes_custom_buttons, "nodes_material_group_input_button", nodes_material_group_input_button);
map_set(ui_nodes_custom_buttons, "nodes_material_group_output_button", nodes_material_group_output_button);
}
function nodes_material_vector_curves_button(node_id: i32) {
let ui: ui_t = ui_nodes_ui;
let nodes: ui_nodes_t = ui_nodes_get_nodes();
let node: ui_node_t = ui_get_node(ui_nodes_get_canvas(true).nodes, node_id);
let but: ui_node_button_t = node.buttons[0];
let nhandle: ui_handle_t = ui_nest(ui_handle(__ID__), node.id);
ui_row3();
ui_radio(ui_nest(ui_nest(nhandle, 0), 1), 0, "X");
ui_radio(ui_nest(ui_nest(nhandle, 0), 1), 1, "Y");
ui_radio(ui_nest(ui_nest(nhandle, 0), 1), 2, "Z");
// Preview
let axis: i32 = ui_nest(ui_nest(nhandle, 0), 1).position;
let val: f32[] = but.default_value;
ui._y += ui_nodes_LINE_H() * 5;
let num: i32 = val[96 + axis];
if (num == 0) {
// Init
val[96 + 0] = 1;
val[96 + 1] = 1;
val[96 + 2] = 1;
}
// Edit
let row: f32[] = [1 / 5, 1 / 5, 3 / 5];
ui_row(row);
if (ui_button("+")) {
val[axis * 32 + num * 2 + 0] = 0.0;
val[axis * 32 + num * 2 + 1] = 0.0;
num++;
val[96 + axis] = num;
}
if (ui_button("-")) {
if (num > 1) {
num--;
val[96 + axis] = num;
}
}
let ihandle: ui_handle_t = ui_nest(ui_nest(ui_nest(nhandle, 0), 2), axis);
if (ihandle.init) {
ihandle.position = 0;
}
let i: i32 = math_floor(ui_slider(ihandle, "Index", 0, num - 1, false, 1, true, ui_align_t.LEFT));
if (i >= num || i < 0) {
ihandle.value = i = num - 1; // Stay in bounds
}
ui_row2();
ui_nest(ui_nest(nhandle, 0), 3).value = val[axis * 32 + i * 2 + 0];
ui_nest(ui_nest(nhandle, 0), 4).value = val[axis * 32 + i * 2 + 1];
let h1: ui_handle_t = ui_nest(ui_nest(nhandle, 0), 3);
if (h1.init) {
h1.value = 0.0;
}
let h2: ui_handle_t = ui_nest(ui_nest(nhandle, 0), 4);
if (h2.init) {
h2.value = 0.0;
}
val[axis * 32 + i * 2 + 0] = ui_slider(h1, "X", -1, 1, true, 100, true, ui_align_t.LEFT);
val[axis * 32 + i * 2 + 1] = ui_slider(h2, "Y", -1, 1, true, 100, true, ui_align_t.LEFT);
}
function nodes_material_color_ramp_button(node_id: i32) {
let ui: ui_t = ui_nodes_ui;
let nodes: ui_nodes_t = ui_nodes_get_nodes();
let node: ui_node_t = ui_get_node(ui_nodes_get_canvas(true).nodes, node_id);
let but: ui_node_button_t = node.buttons[0];
let nhandle: ui_handle_t = ui_nest(ui_handle(__ID__), node.id);
let nx: f32 = ui._x;
let ny: f32 = ui._y;
// Preview
let vals: f32[] = but.default_value; // [r, g, b, a, pos, r, g, b, a, pos, ..]
let sw: f32 = ui._w / ui_nodes_SCALE();
for (let i: i32 = 0; i < vals.length / 5; ++i) {
let pos: f32 = vals[i * 5 + 4];
let col: i32 = color_from_floats(vals[i * 5 + 0], vals[i * 5 + 1], vals[i * 5 + 2], 1.0);
ui_fill(pos * sw, 0, (1.0 - pos) * sw, ui_nodes_LINE_H() - 2 * ui_nodes_SCALE(), col);
}
ui._y += ui_nodes_LINE_H();
// Edit
let ihandle: ui_handle_t = ui_nest(ui_nest(nhandle, 0), 2);
let row: f32[] = [1 / 4, 1 / 4, 2 / 4];
ui_row(row);
if (ui_button("+")) {
array_push(vals, vals[vals.length - 5]); // r
array_push(vals, vals[vals.length - 5]); // g
array_push(vals, vals[vals.length - 5]); // b
array_push(vals, vals[vals.length - 5]); // a
array_push(vals, 1.0); // pos
ihandle.value += 1;
}
if (ui_button("-") && vals.length > 5) {
array_pop(vals);
array_pop(vals);
array_pop(vals);
array_pop(vals);
array_pop(vals);
ihandle.value -= 1;
}
let h: ui_handle_t = ui_nest(ui_nest(nhandle, 0), 1);
if (h.init) {
h.position = but.data[0];
}
let interpolate_combo: string[] = [tr("Linear"), tr("Constant")];
but.data[0] = ui_combo(h, interpolate_combo, tr("Interpolate"));
ui_row2();
let i: i32 = math_floor(ui_slider(ihandle, "Index", 0, (vals.length / 5) - 1, false, 1, true, ui_align_t.LEFT));
if (i >= (vals.length * 5) || i < 0) {
ihandle.value = i = (vals.length / 5) - 1; // Stay in bounds
}
ui_nest(ui_nest(nhandle, 0), 3).value = vals[i * 5 + 4];
vals[i * 5 + 4] = ui_slider(ui_nest(ui_nest(nhandle, 0), 3), "Pos", 0, 1, true, 100, true, ui_align_t.LEFT);
if (vals[i * 5 + 4] > 1.0) {
vals[i * 5 + 4] = 1.0; // Stay in bounds
}
else if (vals[i * 5 + 4] < 0.0) {
vals[i * 5 + 4] = 0.0;
}
let chandle: ui_handle_t = ui_nest(ui_nest(nhandle, 0), 4);
chandle.color = color_from_floats(vals[i * 5 + 0], vals[i * 5 + 1], vals[i * 5 + 2], 1.0);
if (ui_text("", ui_align_t.RIGHT, chandle.color) == ui_state_t.STARTED) {
let rx: f32 = nx + ui._w - ui_nodes_p(37);
let ry: f32 = ny - ui_nodes_p(5);
nodes._input_started = ui.input_started = false;
ui_nodes_rgba_popup(chandle, vals.buffer + i * 5, math_floor(rx), math_floor(ry + ui_ELEMENT_H(ui)));
}
vals[i * 5 + 0] = color_get_rb(chandle.color) / 255;
vals[i * 5 + 1] = color_get_gb(chandle.color) / 255;
vals[i * 5 + 2] = color_get_bb(chandle.color) / 255;
}
function nodes_material_new_group_button(node_id: i32) {
let ui: ui_t = ui_nodes_ui;
let nodes: ui_nodes_t = ui_nodes_get_nodes();
let node: ui_node_t = ui_get_node(ui_nodes_get_canvas(true).nodes, node_id);
if (node.name == "New Group") {
for (let i: i32 = 1; i < 999; ++i) {
node.name = tr("Group") + " " + i;
let found: bool = false;
for (let i: i32 = 0; i < project_material_groups.length; ++i) {
let g: node_group_t = project_material_groups[i];
let cname: string = g.canvas.name;
if (cname == node.name) {
found = true;
break;
}
}
if (!found) {
break;
}
}
let canvas: ui_node_canvas_t = {
name: node.name,
nodes: [
{
id: 0,
name: _tr("Group Input"),
type: "GROUP_INPUT",
x: 50,
y: 200,
color: 0xff448c6d,
inputs: [],
outputs: [],
buttons: [
{
name: "nodes_material_group_input_button",
type: "CUSTOM",
height: 1
}
]
},
{
id: 1,
name: _tr("Group Output"),
type: "GROUP_OUTPUT",
x: 450,
y: 200,
color: 0xff448c6d,
inputs: [],
outputs: [],
buttons: [
{
name: "nodes_material_group_output_button",
type: "CUSTOM",
height: 1
}
]
}
],
links: []
};
let ng: node_group_t = {
canvas: canvas,
nodes: ui_nodes_create()
};
array_push(project_material_groups, ng);
}
let group: node_group_t = null;
for (let i: i32 = 0; i < project_material_groups.length; ++i) {
let g: node_group_t = project_material_groups[i];
let cname: string = g.canvas.name;
if (cname == node.name) {
group = g;
break;
}
}
if (ui_button(tr("Nodes"))) {
array_push(ui_nodes_group_stack, group);
}
}
function nodes_material_group_input_button(node_id: i32) {
let ui: ui_t = ui_nodes_ui;
let nodes: ui_nodes_t = ui_nodes_get_nodes();
let node: ui_node_t = ui_get_node(ui_nodes_get_canvas(true).nodes, node_id);
nodes_material_add_socket_button(ui, nodes, node, node.outputs);
}
function nodes_material_group_output_button(node_id: i32) {
let ui: ui_t = ui_nodes_ui;
let nodes: ui_nodes_t = ui_nodes_get_nodes();
let node: ui_node_t = ui_get_node(ui_nodes_get_canvas(true).nodes, node_id);
nodes_material_add_socket_button(ui, nodes, node, node.inputs);
}
function nodes_material_add_socket_button(ui: ui_t, nodes: ui_nodes_t, node: ui_node_t, sockets: ui_node_socket_t[]) {
if (ui_button(tr("Add"))) {
_nodes_material_nodes = nodes;
_nodes_material_node = node;
_nodes_material_sockets = sockets;
ui_menu_draw(function (ui: ui_t) {
let nodes: ui_nodes_t = _nodes_material_nodes;
let node: ui_node_t = _nodes_material_node;
let sockets: ui_node_socket_t[] = _nodes_material_sockets;
let group_stack: node_group_t[] = ui_nodes_group_stack;
let c: ui_node_canvas_t = group_stack[group_stack.length - 1].canvas;
if (ui_menu_button(tr("RGBA"))) {
array_push(sockets, nodes_material_create_socket(nodes, node, null, "RGBA", c));
nodes_material_sync_sockets(node);
}
if (ui_menu_button(tr("Vector"))) {
array_push(sockets, nodes_material_create_socket(nodes, node, null, "VECTOR", c));
nodes_material_sync_sockets(node);
}
if (ui_menu_button(tr("Value"))) {
array_push(sockets, nodes_material_create_socket(nodes, node, null, "VALUE", c));
nodes_material_sync_sockets(node);
}
});
}
}
function nodes_material_sync_sockets(node: ui_node_t) {
let group_stack: node_group_t[] = ui_nodes_group_stack;
let c: ui_node_canvas_t = group_stack[group_stack.length - 1].canvas;
for (let i: i32 = 0; i < project_materials.length; ++i) {
let m: slot_material_t = project_materials[i];
nodes_material_sync_group_sockets(m.canvas, c.name, node);
}
for (let i: i32 = 0; i < project_material_groups.length; ++i) {
let g: node_group_t = project_material_groups[i];
nodes_material_sync_group_sockets(g.canvas, c.name, node);
}
}
function nodes_material_sync_group_sockets(canvas: ui_node_canvas_t, group_name: string, node: ui_node_t) {
for (let i: i32 = 0; i < canvas.nodes.length; ++i) {
let n: ui_node_t = canvas.nodes[i];
if (n.type == "GROUP" && n.name == group_name) {
let is_inputs: bool = node.name == "Group Input";
let old_sockets: ui_node_socket_t[] = is_inputs ? n.inputs : n.outputs;
let sockets: ui_node_socket_t[] = util_clone_canvas_sockets(is_inputs ? node.outputs : node.inputs);
if (is_inputs) {
n.inputs = sockets;
}
else {
n.outputs = sockets;
}
for (let i: i32 = 0; i < sockets.length; ++i) {
let s: ui_node_socket_t = sockets[i];
s.node_id = n.id;
}
let num_sockets: i32 = sockets.length < old_sockets.length ? sockets.length : old_sockets.length;
for (let i: i32 = 0; i < num_sockets; ++i) {
if (sockets[i].type == old_sockets[i].type) {
sockets[i].default_value = old_sockets[i].default_value;
}
}
}
}
}
function nodes_material_get_socket_color(type: string): i32 {
return type == "RGBA" ? 0xffc7c729 : type == "VECTOR" ? 0xff6363c7 : 0xffa1a1a1;
}
function nodes_material_get_socket_default_value(type: string): f32_array_t {
return type == "RGBA" ? f32_array_create_xyzw(0.8, 0.8, 0.8, 1.0) : type == "VECTOR" ? f32_array_create_xyz(0.0, 0.0, 0.0) : f32_array_create_x(0.0);
}
function nodes_material_get_socket_name(type: string): string {
return type == "RGBA" ? _tr("Color") : type == "VECTOR" ? _tr("Vector") : _tr("Value");
}
function nodes_material_create_socket(nodes: ui_nodes_t, node: ui_node_t, name: string, type: string, canvas: ui_node_canvas_t, min: f32 = 0.0, max: f32 = 1.0, default_value: any = null): ui_node_socket_t {
let soc: ui_node_socket_t = {
id: ui_get_socket_id(canvas.nodes),
node_id: node.id,
name: name == null ? nodes_material_get_socket_name(type) : name,
type: type,
color: nodes_material_get_socket_color(type),
default_value: default_value == null ? nodes_material_get_socket_default_value(type) : default_value,
min: min,
max: max
};
return soc;
}
function nodes_material_get_node_t(node_type: string): ui_node_t {
for (let i: i32 = 0; i < nodes_material_list.length; ++i) {
let c: ui_node_t[] = nodes_material_list[i];
for (let i: i32 = 0; i < c.length; ++i) {
let n: ui_node_t = c[i];
if (n.type == node_type) {
return n;
}
}
}
return null;
}
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);
if (n == null) {
return null;
}
let canvas: ui_node_canvas_t = group != null ? group.canvas : context_raw.material.canvas;
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);
array_push(canvas.nodes, node);
return node;
}