mirror of
https://github.com/Relintai/broken_seals.git
synced 2024-12-21 13:16:49 +01:00
706 lines
15 KiB
GDScript
706 lines
15 KiB
GDScript
tool
|
|
extends Reference
|
|
|
|
const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd")
|
|
|
|
#----------------------
|
|
#mwf_create_map.mmg
|
|
#Creates a workflow map using a heightmap and an optional seed map. The workflow map contains height information as well as orientation and a seed for random offset for the material it will be applied to.
|
|
|
|
# "inputs": [
|
|
# {
|
|
# "default": "1.0",
|
|
# "label": "",
|
|
# "longdesc": "The input height map",
|
|
# "name": "h",
|
|
# "shortdesc": "Height",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "default": "0.0",
|
|
# "label": "",
|
|
# "longdesc": "The input offset seed map",
|
|
# "name": "o",
|
|
# "shortdesc": "Offset",
|
|
# "type": "f"
|
|
# }
|
|
# ],
|
|
# "outputs": [
|
|
# {
|
|
# "longdesc": "The generated workflow map, to be connected to a MixMap or an ApplyMap node",
|
|
# "rgb": "vec3($height*$h($uv), $angle*0.00277777777+0.5, rand(vec2(float($seed)+$o($uv))))",
|
|
# "shortdesc": "Output",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
# "parameters": [
|
|
# {
|
|
# "control": "None",
|
|
# "default": 1,
|
|
# "label": "Height",
|
|
# "longdesc": "The maximum height of the workflow map, used as multiplier for the input height map",
|
|
# "max": 1,
|
|
# "min": 0,
|
|
# "name": "height",
|
|
# "shortdesc": "Height",
|
|
# "step": 0.01,
|
|
# "type": "float"
|
|
# },
|
|
# {
|
|
# "control": "None",
|
|
# "default": 0,
|
|
# "label": "Angle",
|
|
# "longdesc": "The angle stored in the workflow map",
|
|
# "max": 180,
|
|
# "min": -180,
|
|
# "name": "angle",
|
|
# "shortdesc": "Angle",
|
|
# "step": 0.1,
|
|
# "type": "float"
|
|
# }
|
|
# ],
|
|
|
|
#----------------------
|
|
#mwf_mix_maps.mmg
|
|
#Mixes up to 4 workflow maps, to be used with the same base material
|
|
|
|
# "inputs": [
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "",
|
|
# "longdesc": "The first workflow map",
|
|
# "name": "in1",
|
|
# "shortdesc": "Input1",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "",
|
|
# "longdesc": "The second workflow map",
|
|
# "name": "in2",
|
|
# "shortdesc": "Input2",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "",
|
|
# "longdesc": "The third input map",
|
|
# "name": "in3",
|
|
# "shortdesc": "Input3",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "",
|
|
# "longdesc": "The fourth input map",
|
|
# "name": "in4",
|
|
# "shortdesc": "Input4",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
# "outputs": [
|
|
# {
|
|
# "longdesc": "Generates a merged workflow map",
|
|
# "rgb": "matmap_mix(matmap_mix($in1($uv), $in2($uv)), matmap_mix($in3($uv), $in4($uv)))",
|
|
# "shortdesc": "Output",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
|
|
#----------------------
|
|
#mwf_map.mmg
|
|
#"Applies a workflow map to a base material, and generates height information as well as PBR channels for the result.\nThe height input must be connected to a Create Map or Mix Maps node. The other inputs must be connected to a base material.\nThe outputs must be connected to the Mix or the Output node, or a workflow filter node.
|
|
|
|
# "code": "float $(name_uv)_angle = 6.28318530718*($map($uv).y-0.5);\nvec2 $(name_uv)_uv = matmap_uv($uv, $(name_uv)_angle, $map($uv).z);\n",
|
|
# "inputs": [
|
|
# {
|
|
# "default": "vec3(1.0, 0.5, 0.0)",
|
|
# "label": "Map",
|
|
# "longdesc": "The input workflow map",
|
|
# "name": "map",
|
|
# "shortdesc": "Map",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "group_size": 4,
|
|
# "label": "Albedo",
|
|
# "longdesc": "The Albedo channel of the input base material",
|
|
# "name": "mat1",
|
|
# "shortdesc": "Albedo",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "ORM",
|
|
# "longdesc": "The ambient occlusion, roughness and metallic channels of the input material",
|
|
# "name": "mat2",
|
|
# "shortdesc": "ORM",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "Emission",
|
|
# "longdesc": "The emission channel of the input material",
|
|
# "name": "mat3",
|
|
# "shortdesc": "Emission",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.5, 0.5, 1.0)",
|
|
# "label": "Normal",
|
|
# "longdesc": "The normal map of the input material",
|
|
# "name": "mat4",
|
|
# "shortdesc": "Normal",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
# "outputs": [
|
|
# {
|
|
# "f": "$map($uv).x",
|
|
# "group_size": 5,
|
|
# "longdesc": "The height map of the result",
|
|
# "shortdesc": "Height",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "longdesc": "The albedo channel of the result",
|
|
# "rgb": "$mat1($(name_uv)_uv)",
|
|
# "shortdesc": "Albedo",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "The ambient occlusion, roughness and metallic channels of the result",
|
|
# "rgb": "$mat2($(name_uv)_uv)",
|
|
# "shortdesc": "ORM",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "The emission channel of the result",
|
|
# "rgb": "$mat3($(name_uv)_uv)",
|
|
# "shortdesc": "Emission",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "The normal map of the result",
|
|
# "rgb": "matmap_rotate_nm($mat4($(name_uv)_uv), -$(name_uv)_angle)",
|
|
# "shortdesc": "Normal",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
|
|
#----------------------
|
|
#mwf_mix.mmg
|
|
#Combines the outputs of 2 mapped base materials (keeping the \"highest\" material).
|
|
|
|
# "code": "float $(name_uv)_a1 = step($h1($uv), $h2($uv));",
|
|
# "inputs": [
|
|
# {
|
|
# "default": "0.0",
|
|
# "group_size": 5,
|
|
# "label": "Height 1",
|
|
# "longdesc": "The height map of the first input",
|
|
# "name": "h1",
|
|
# "shortdesc": "Height1",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "Albedo 1",
|
|
# "longdesc": "The albedo channel of the first input",
|
|
# "name": "c1",
|
|
# "shortdesc": "Albedo1",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "ORM 1",
|
|
# "longdesc": "The ambient occlusion, roughness and metallic channels of the first input",
|
|
# "name": "orm1",
|
|
# "shortdesc": "ORM1",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "Emission 1",
|
|
# "longdesc": "The emission channel of the first input",
|
|
# "name": "em1",
|
|
# "shortdesc": "Emission1",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.5, 0.5, 1.0)",
|
|
# "label": "Normal 1",
|
|
# "longdesc": "The normal map of the first input",
|
|
# "name": "nm1",
|
|
# "shortdesc": "Normal1",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "0.0",
|
|
# "group_size": 5,
|
|
# "label": "Height 2",
|
|
# "longdesc": "The height map of the second input",
|
|
# "name": "h2",
|
|
# "shortdesc": "Height2",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "Albedo 2",
|
|
# "longdesc": "The albedo channel of the second input",
|
|
# "name": "c2",
|
|
# "shortdesc": "Albedo2",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "ORM 2",
|
|
# "longdesc": "The ambient occlusion, roughness and metallic channels of the second input",
|
|
# "name": "orm2",
|
|
# "shortdesc": "ORM2",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.0)",
|
|
# "label": "Emission 2",
|
|
# "longdesc": "The emission channel of the second input",
|
|
# "name": "em2",
|
|
# "shortdesc": "Emission2",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "default": "vec3(0.5, 0.5, 1.0)",
|
|
# "label": "Normal 2",
|
|
# "longdesc": "The normal map of the second input",
|
|
# "name": "nm2",
|
|
# "shortdesc": "Normal2",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
# "outputs": [
|
|
# {
|
|
# "f": "max($h1($uv), $h2($uv))",
|
|
# "group_size": 5,
|
|
# "longdesc": "Generates the height of the result",
|
|
# "shortdesc": "Height",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "longdesc": "Shows the output albedo channel",
|
|
# "rgb": "mix($c1($uv), $c2($uv), $(name_uv)_a1)",
|
|
# "shortdesc": "Albedo",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "Shows the output ambient occlusion, roughness and metallic channels",
|
|
# "rgb": "mix($orm1($uv), $orm2($uv), $(name_uv)_a1)",
|
|
# "shortdesc": "ORM",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "Shows the output emission channel",
|
|
# "rgb": "mix($em1($uv), $em2($uv), $(name_uv)_a1)",
|
|
# "shortdesc": "Emission",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "longdesc": "Shows the output normal map",
|
|
# "rgb": "mix($nm1($uv), $nm2($uv), $(name_uv)_a1)",
|
|
# "shortdesc": "Normal",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
|
|
|
|
#----------------------
|
|
#mwf_output.mmg
|
|
|
|
#{
|
|
# "connections": [
|
|
# {
|
|
# "from": "colorize_3",
|
|
# "from_port": 0,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 6
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 0,
|
|
# "to": "colorize_3",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 0,
|
|
# "to": "occlusion",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "occlusion",
|
|
# "from_port": 0,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 5
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 2,
|
|
# "to": "decompose",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "decompose",
|
|
# "from_port": 1,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 2
|
|
# },
|
|
# {
|
|
# "from": "decompose",
|
|
# "from_port": 2,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 1
|
|
# },
|
|
# {
|
|
# "from": "blend_2",
|
|
# "from_port": 0,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 4
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 1,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 3,
|
|
# "to": "gen_outputs",
|
|
# "to_port": 3
|
|
# },
|
|
# {
|
|
# "from": "brightness_contrast",
|
|
# "from_port": 0,
|
|
# "to": "blend_2",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 4,
|
|
# "to": "brightness_contrast",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "gen_inputs",
|
|
# "from_port": 0,
|
|
# "to": "normal_map_2",
|
|
# "to_port": 0
|
|
# },
|
|
# {
|
|
# "from": "normal_map_2",
|
|
# "from_port": 0,
|
|
# "to": "blend_2",
|
|
# "to_port": 1
|
|
# }
|
|
# ],
|
|
# "label": "Output",
|
|
# "longdesc": "Converts a workflow mapped material (from an Apply Map or a Mix node) for a Material node",
|
|
# "name": "mwf_output",
|
|
# "node_position": {
|
|
# "x": 0,
|
|
# "y": 0
|
|
# },
|
|
# "nodes": [
|
|
# {
|
|
# "name": "colorize_3",
|
|
# "node_position": {
|
|
# "x": -939.637451,
|
|
# "y": 871.842407
|
|
# },
|
|
# "parameters": {
|
|
# "gradient": {
|
|
# "interpolation": 1,
|
|
# "points": [
|
|
# {
|
|
# "a": 1,
|
|
# "b": 1,
|
|
# "g": 1,
|
|
# "pos": 0,
|
|
# "r": 1
|
|
# },
|
|
# {
|
|
# "a": 1,
|
|
# "b": 0,
|
|
# "g": 0,
|
|
# "pos": 1,
|
|
# "r": 0
|
|
# }
|
|
# ],
|
|
# "type": "Gradient"
|
|
# }
|
|
# },
|
|
# "type": "colorize"
|
|
# },
|
|
# {
|
|
# "name": "occlusion",
|
|
# "node_position": {
|
|
# "x": -994.845825,
|
|
# "y": 786.968262
|
|
# },
|
|
# "parameters": {
|
|
# "param0": 10,
|
|
# "param2": 1
|
|
# },
|
|
# "type": "occlusion"
|
|
# },
|
|
# {
|
|
# "name": "decompose",
|
|
# "node_position": {
|
|
# "x": -924.371338,
|
|
# "y": 570.25
|
|
# },
|
|
# "parameters": {
|
|
#
|
|
# },
|
|
# "type": "decompose"
|
|
# },
|
|
# {
|
|
# "name": "blend_2",
|
|
# "node_position": {
|
|
# "x": -931.305542,
|
|
# "y": 677.328491
|
|
# },
|
|
# "parameters": {
|
|
# "amount": 1,
|
|
# "blend_type": 4
|
|
# },
|
|
# "type": "blend"
|
|
# },
|
|
# {
|
|
# "name": "gen_inputs",
|
|
# "node_position": {
|
|
# "x": -1626.805542,
|
|
# "y": 608.758606
|
|
# },
|
|
# "parameters": {
|
|
#
|
|
# },
|
|
# "ports": [
|
|
# {
|
|
# "group_size": 5,
|
|
# "name": "Height",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "name": "Albedo",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "name": "ORM",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "name": "Emission",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "name": "Normal",
|
|
# "type": "rgb"
|
|
# }
|
|
# ],
|
|
# "type": "ios"
|
|
# },
|
|
# {
|
|
# "name": "gen_outputs",
|
|
# "node_position": {
|
|
# "x": -635.305542,
|
|
# "y": 597.758606
|
|
# },
|
|
# "parameters": {
|
|
#
|
|
# },
|
|
# "ports": [
|
|
# {
|
|
# "group_size": 7,
|
|
# "longdesc": "",
|
|
# "name": "Albedo",
|
|
# "shortdesc": "Albedo",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Metallic",
|
|
# "shortdesc": "Metallic",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Roughness",
|
|
# "shortdesc": "Roughness",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Emission",
|
|
# "shortdesc": "Emission",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Normal",
|
|
# "shortdesc": "Normal",
|
|
# "type": "rgb"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Occlusion",
|
|
# "shortdesc": "Occlusion",
|
|
# "type": "f"
|
|
# },
|
|
# {
|
|
# "group_size": 0,
|
|
# "longdesc": "",
|
|
# "name": "Depth",
|
|
# "shortdesc": "Depth",
|
|
# "type": "f"
|
|
# }
|
|
# ],
|
|
# "type": "ios"
|
|
# },
|
|
# {
|
|
# "name": "gen_parameters",
|
|
# "node_position": {
|
|
# "x": -1104.881836,
|
|
# "y": 425.25
|
|
# },
|
|
# "parameters": {
|
|
# "param0": 1,
|
|
# "param2": 1
|
|
# },
|
|
# "type": "remote",
|
|
# "widgets": [
|
|
# {
|
|
# "label": "Occlusion",
|
|
# "linked_widgets": [
|
|
# {
|
|
# "node": "occlusion",
|
|
# "widget": "param2"
|
|
# }
|
|
# ],
|
|
# "longdesc": "The strength of the calculated occlusion effect",
|
|
# "name": "param2",
|
|
# "shortdesc": "Occlusion",
|
|
# "type": "linked_control"
|
|
# },
|
|
# {
|
|
# "label": "Mat Normal",
|
|
# "linked_widgets": [
|
|
# {
|
|
# "node": "blend_2",
|
|
# "widget": "amount"
|
|
# }
|
|
# ],
|
|
# "longdesc": "The strength of normals from the base materials (compared to the normal generated from height information))",
|
|
# "name": "param0",
|
|
# "shortdesc": "MatNormal",
|
|
# "type": "linked_control"
|
|
# }
|
|
# ]
|
|
# },
|
|
# {
|
|
# "name": "brightness_contrast",
|
|
# "node_position": {
|
|
# "x": -1177.223877,
|
|
# "y": 677.062317
|
|
# },
|
|
# "parameters": {
|
|
# "brightness": 0,
|
|
# "contrast": 1
|
|
# },
|
|
# "type": "brightness_contrast"
|
|
# },
|
|
# {
|
|
# "name": "normal_map_2",
|
|
# "node_position": {
|
|
# "x": -1152.5,
|
|
# "y": 544.75
|
|
# },
|
|
# "parameters": {
|
|
# "param0": 10,
|
|
# "param1": 1.02,
|
|
# "param2": 0,
|
|
# "param4": 1
|
|
# },
|
|
# "type": "normal_map"
|
|
# }
|
|
# ],
|
|
# "parameters": {
|
|
# "param0": 1,
|
|
# "param2": 1
|
|
# },
|
|
# "shortdesc": "Output",
|
|
# "type": "graph"
|
|
#}
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
#----------------------
|
|
#edge_detect.mmg
|
|
|
|
|
|
#vec3 matmap_mix(vec3 in1, vec3 in2) {\n\t
|
|
# float is_in1 = step(in2.x, in1.x);\n\t
|
|
# //return vec3(max(in1.x, in2.x), in1.yz*is_in1+in2.yz*(1.0-is_in1));\n\t
|
|
# return vec3(max(in1.x, in2.x), mix(in2.yz, in1.yz, is_in1));\n
|
|
#}
|
|
|
|
#vec2 matmap_uv(vec2 uv, float angle, float seed) {\n\t
|
|
# uv -= vec2(0.5);\n\tvec2 rv;\n\t
|
|
# rv.x = uv.x*cos(angle)+uv.y*sin(angle);\n\t
|
|
# rv.y = -uv.x*sin(angle)+uv.y*cos(angle);\n\t
|
|
# return fract(rv + rand2(vec2(seed)));\n
|
|
#}
|
|
|
|
#vec3 matmap_rotate_nm(vec3 input, float angle) {\n\t
|
|
# vec2 uv = input.xy - vec2(0.5);\n\t
|
|
# vec2 rv;\n\t
|
|
# rv.x = uv.x*cos(angle)+uv.y*sin(angle);\n\t
|
|
# rv.y = -uv.x*sin(angle)+uv.y*cos(angle);\n\t
|
|
# return vec3(rv + vec2(0.5), input.z);\n
|
|
#}
|
|
|