diff --git a/addons/material_maker/nodes/alpha_association.mmg b/addons/material_maker/nodes/alpha_association.mmg new file mode 100644 index 000000000..47f979dc9 --- /dev/null +++ b/addons/material_maker/nodes/alpha_association.mmg @@ -0,0 +1,59 @@ +{ + "generic_size": 1, + "name": "alpha_association", + "node_position": { + "x": 0, + "y": 0 + }, + "parameters": { + "mode": 1.0 + }, + "seed_int": 0, + "shader_model": { + "code": "", + "global": "", + "inputs": [ + { + "default": "vec4(0.0, 0.0, 0.0, 1.0)", + "label": "", + "longdesc": "The image to be converted", + "name": "in#", + "shortdesc": "Input#", + "type": "rgba" + } + ], + "instance": "", + "longdesc": "Converts an input image from straight to premultiplied alpha and vice versa", + "name": "Alpha Association", + "outputs": [ + { + "longdesc": "The converted image", + "rgba": "vec4($in#($uv).rgb $mode $in#($uv).a, $in#($uv).a)", + "shortdesc": "Output#", + "type": "rgba" + } + ], + "parameters": [ + { + "default": 0.0, + "label": "", + "name": "mode", + "shortdesc": "Mode", + "longdesc": "Controls whether the node converts from straight to premultiplied or from premultiplied to straight", + "type": "enum", + "values": [ + { + "name": "Straight to Premultiplied", + "value": "*" + }, + { + "name": "Premultiplied to Straight", + "value": "/" + } + ] + } + ], + "shortdesc": "Alpha Association Conversion" + }, + "type": "shader" +} diff --git a/material_maker/doc/images/node_filter_alpha_association.png b/material_maker/doc/images/node_filter_alpha_association.png new file mode 100644 index 000000000..99502d952 Binary files /dev/null and b/material_maker/doc/images/node_filter_alpha_association.png differ diff --git a/material_maker/doc/node_filter_alpha_association.rst b/material_maker/doc/node_filter_alpha_association.rst new file mode 100644 index 000000000..33fff1c28 --- /dev/null +++ b/material_maker/doc/node_filter_alpha_association.rst @@ -0,0 +1,24 @@ +Alpha Association node +~~~~~~~~~~~~~~~~~~~~~~ + +The **Alpha Association** node is variadic and converts the input images' alpha association +from straight to premultiplied and vice versa. The alpha channel remains untouched. + +.. image:: images/node_filter_alpha_association.png + :align: center + +Inputs +++++++ + +The **Alpha Association** node requires an RGBA input texture. + +Outputs ++++++++ + +The **Alpha Association** node provides a single RGBA texture. + +Parameters +++++++++++ + +The **Alpha Association** node has a single **Mode** parameter to select between +converting from straight to premultiplied and from premultiplied to straight. diff --git a/material_maker/doc/nodes_filter.rst b/material_maker/doc/nodes_filter.rst index 575d9e61b..7d8714550 100644 --- a/material_maker/doc/nodes_filter.rst +++ b/material_maker/doc/nodes_filter.rst @@ -69,3 +69,4 @@ The filter nodes accept one or several inputs and generate one or several images node_filter_classic_kuwahara node_filter_generalized_kuwahara node_filter_symmetric_nearest_neighbor + node_filter_alpha_association diff --git a/material_maker/library/base.json b/material_maker/library/base.json index ab9f0cd72..517419cc6 100644 --- a/material_maker/library/base.json +++ b/material_maker/library/base.json @@ -8076,7 +8076,6 @@ }, { "display_name": "In", - "name": "portal", "icon_data": "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", "io": 0.0, "name": "portal", @@ -8090,7 +8089,16 @@ "name": "portal", "tree_item": "Miscellaneous/Aperture/Out", "type": "portal" + }, + { + "display_name": "Alpha Association", + "name": "alpha_association", + "parameters": { + "mode": 0.0 + }, + "tree_item": "Filter/Alpha Association", + "type": "alpha_association" } ], "name": "Base library" -} \ No newline at end of file +}