Skip to content

Commit

Permalink
Merge pull request #682 from williamchange/fix-variadic-compatibility
Browse files Browse the repository at this point in the history
Fix broken compatibility with several new variadic nodes & tex3d_blend tooltips
  • Loading branch information
RodZill4 authored May 5, 2024
2 parents f18b5da + 737f07c commit cf681dd
Show file tree
Hide file tree
Showing 7 changed files with 370 additions and 61 deletions.
13 changes: 6 additions & 7 deletions addons/material_maker/nodes/sdf3d_color.mmg
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
"generic_size": 1,
"name": "sdf3d_color",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"c1": 0.5
"c": 0.5
},
"seed_int": 0,
"shader_model": {
Expand All @@ -17,8 +16,8 @@
"default": "0.0",
"label": "",
"longdesc": "The input 3D object",
"name": "in#",
"shortdesc": "Input#",
"name": "in",
"shortdesc": "Input",
"type": "sdf3d"
}
],
Expand All @@ -28,8 +27,8 @@
"outputs": [
{
"longdesc": "The colored 3D object",
"sdf3dc": "vec2($in#($uv), $c#)",
"shortdesc": "Output#",
"sdf3dc": "vec2($in($uv), $c)",
"shortdesc": "Output",
"type": "sdf3dc"
}
],
Expand All @@ -41,7 +40,7 @@
"longdesc": "The color index to be assigned",
"max": 1,
"min": 0,
"name": "c#",
"name": "c",
"shortdesc": "Color",
"step": 0.01,
"type": "float"
Expand Down
53 changes: 53 additions & 0 deletions addons/material_maker/nodes/sdf3d_color_v.mmg
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"generic_size": 1,
"name": "sdf3d_color",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"c1": 0.5
},
"seed_int": 0,
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"longdesc": "The input 3D object",
"name": "in#",
"shortdesc": "Input#",
"type": "sdf3d"
}
],
"instance": "",
"longdesc": "Assigns a color index to a 3D object",
"name": "Color",
"outputs": [
{
"longdesc": "The colored 3D object",
"sdf3dc": "vec2($in#($uv), $c#)",
"shortdesc": "Output#",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 0,
"label": "",
"longdesc": "The color index to be assigned",
"max": 1,
"min": 0,
"name": "c#",
"shortdesc": "Color",
"step": 0.01,
"type": "float"
}
],
"shortdesc": "Color"
},
"type": "shader"
}
39 changes: 14 additions & 25 deletions addons/material_maker/nodes/tex3d_blend.mmg
Original file line number Diff line number Diff line change
@@ -1,27 +1,16 @@
{
"generic_size": 1,
"name": "tex3d_blend",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"amount1": 0.5,
"blend_type1": 0
"amount": 0.5,
"blend_type": 0
},
"seed_int": 0,
"shader_model": {
"code": [
"vec3 $(name_uv)_b = $b($uv);",
"vec3 $(name_uv)_l;",
"vec3 $(name_uv)_a;",
"#for",
"$(name_uv)_l = $l#($uv);",
"$(name_uv)_a = $amount#*$a#($uv);",
"$(name_uv)_b = blend3d_$blend_type#($(name_uv)_l.rgb, $(name_uv)_b.rgb, $amount#*dot($a#($uv), vec3(1.0))/3.0 );",
"#end",
""
],
"code": "",
"global": [
"vec3 blend3d_normal(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*c1 + (1.0-opacity)*c2;",
Expand Down Expand Up @@ -87,26 +76,26 @@
"inputs": [
{
"default": "vec3($uv.x, 1.0, 1.0)",
"label": "Background",
"label": "Source1",
"longdesc": "The foreground input",
"name": "b",
"name": "s1",
"shortdesc": "Foreground",
"type": "tex3d"
},
{
"default": "vec3(1.0, $uv.y, 1.0)",
"label": "Layer#",
"label": "Source2",
"longdesc": "The background input",
"name": "l#",
"name": "s2",
"shortdesc": "Background",
"type": "tex3d"
},
{
"default": "vec3(1.0)",
"label": "Opacity#",
"label": "Opacity",
"longdesc": "The optional opacity mask",
"name": "a#",
"shortdesc": "Mask#",
"name": "a",
"shortdesc": "Mask",
"type": "tex3d"
}
],
Expand All @@ -117,16 +106,16 @@
{
"longdesc": "The 3D texture generated by the blend operation",
"shortdesc": "Output",
"tex3d": "$(name_uv)_b",
"tex3d": "blend3d_$blend_type($s1($uv).rgb, $s2($uv).rgb, $amount*dot($a($uv), vec3(1.0))/3.0)",
"type": "tex3d"
}
],
"parameters": [
{
"default": 0,
"label": "2:",
"label": "",
"longdesc": "The algorithm used to blend the inputs",
"name": "blend_type#",
"name": "blend_type",
"shortdesc": "Blend mode",
"type": "enum",
"values": [
Expand Down Expand Up @@ -183,7 +172,7 @@
"longdesc": "The opacity of the blend operation",
"max": 1,
"min": 0,
"name": "amount#",
"name": "amount",
"shortdesc": "Opacity",
"step": 0,
"type": "float"
Expand Down
195 changes: 195 additions & 0 deletions addons/material_maker/nodes/tex3d_blend_v.mmg
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
{
"generic_size": 1,
"name": "tex3d_blend",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"amount1": 0.5,
"blend_type1": 0
},
"seed_int": 0,
"shader_model": {
"code": [
"vec3 $(name_uv)_b = $b($uv);",
"vec3 $(name_uv)_l;",
"vec3 $(name_uv)_a;",
"#for",
"$(name_uv)_l = $l#($uv);",
"$(name_uv)_a = $amount#*$a#($uv);",
"$(name_uv)_b = blend3d_$blend_type#($(name_uv)_l.rgb, $(name_uv)_b.rgb, $amount#*dot($a#($uv), vec3(1.0))/3.0 );",
"#end",
""
],
"global": [
"vec3 blend3d_normal(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*c1 + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_multiply(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*c1*c2 + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_screen(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;",
"}",
"",
"float blend3d_overlay_f(float c1, float c2) {",
"\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));",
"}",
"",
"vec3 blend3d_overlay(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*vec3(blend3d_overlay_f(c1.x, c2.x), blend3d_overlay_f(c1.y, c2.y), blend3d_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_hard_light(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*0.5*(c1*c2+blend3d_overlay(c1, c2, 1.0)) + (1.0-opacity)*c2;",
"}",
"",
"float blend3d_soft_light_f(float c1, float c2) {",
"\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);",
"}",
"",
"vec3 blend3d_soft_light(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*vec3(blend3d_soft_light_f(c1.x, c2.x), blend3d_soft_light_f(c1.y, c2.y), blend3d_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;",
"}",
"",
"float blend3d_burn_f(float c1, float c2) {",
"\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);",
"}",
"",
"vec3 blend3d_burn(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*vec3(blend3d_burn_f(c1.x, c2.x), blend3d_burn_f(c1.y, c2.y), blend3d_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;",
"}",
"",
"float blend3d_dodge_f(float c1, float c2) {",
"\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);",
"}",
"",
"vec3 blend3d_dodge(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*vec3(blend3d_dodge_f(c1.x, c2.x), blend3d_dodge_f(c1.y, c2.y), blend3d_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_lighten(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_darken(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;",
"}",
"",
"vec3 blend3d_difference(vec3 c1, vec3 c2, float opacity) {",
"\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;",
"}",
""
],
"inputs": [
{
"default": "vec3($uv.x, 1.0, 1.0)",
"label": "Background",
"longdesc": "The background input",
"name": "b",
"shortdesc": "Background",
"type": "tex3d"
},
{
"default": "vec3(1.0, $uv.y, 1.0)",
"label": "Layer#",
"longdesc": "A layer input",
"name": "l#",
"shortdesc": "Layer#",
"type": "tex3d"
},
{
"default": "vec3(1.0)",
"label": "Opacity#",
"longdesc": "The optional opacity mask",
"name": "a#",
"shortdesc": "Mask#",
"type": "tex3d"
}
],
"instance": "",
"longdesc": "Blends its 3D texture inputs, using an optional mask",
"name": "TEX3D Blend",
"outputs": [
{
"longdesc": "The 3D texture generated by the blend operation",
"shortdesc": "Output",
"tex3d": "$(name_uv)_b",
"type": "tex3d"
}
],
"parameters": [
{
"default": 0,
"label": "2:",
"longdesc": "The algorithm used to blend the inputs",
"name": "blend_type#",
"shortdesc": "Blend mode",
"type": "enum",
"values": [
{
"name": "Normal",
"value": "normal"
},
{
"name": "Multiply",
"value": "multiply"
},
{
"name": "Screen",
"value": "screen"
},
{
"name": "Overlay",
"value": "overlay"
},
{
"name": "Hard Light",
"value": "hard_light"
},
{
"name": "Soft Light",
"value": "soft_light"
},
{
"name": "Burn",
"value": "burn"
},
{
"name": "Dodge",
"value": "dodge"
},
{
"name": "Lighten",
"value": "lighten"
},
{
"name": "Darken",
"value": "darken"
},
{
"name": "Difference",
"value": "difference"
}
]
},
{
"control": "None",
"default": 0.5,
"label": "3:",
"longdesc": "The opacity of the blend operation",
"max": 1,
"min": 0,
"name": "amount#",
"shortdesc": "Opacity",
"step": 0,
"type": "float"
}
],
"shortdesc": "Tex3D Blend"
},
"type": "shader"
}
Loading

0 comments on commit cf681dd

Please sign in to comment.