From 24683a19a36e07742079224cbb76174cd8cfda1b Mon Sep 17 00:00:00 2001 From: Rodz Labs Date: Tue, 5 Oct 2021 06:51:24 +0200 Subject: [PATCH] Updated Normal Map node (no format option anymore) and added a Normal map convert node --- addons/material_maker/nodes/material.mmg | 2 +- addons/material_maker/nodes/normal_map2.mmg | 296 ++++++++++++++++++ .../nodes/normal_map_convert.mmg | 59 ++++ material_maker/library/base.json | 24 +- 4 files changed, 376 insertions(+), 5 deletions(-) create mode 100644 addons/material_maker/nodes/normal_map2.mmg create mode 100644 addons/material_maker/nodes/normal_map_convert.mmg diff --git a/addons/material_maker/nodes/material.mmg b/addons/material_maker/nodes/material.mmg index 569f6b69..66f1f6a8 100644 --- a/addons/material_maker/nodes/material.mmg +++ b/addons/material_maker/nodes/material.mmg @@ -399,7 +399,7 @@ "type": "rgb" }, { - "rgb": "$normal_tex($uv)*vec3(-1.0, 1.0, 1.0)+vec3(1.0, 0.0, 0.0)", + "rgb": "$normal_tex($uv)*vec3(-1.0, 1.0, -1.0)+vec3(1.0, 0.0, 1.0)", "type": "rgb" }, { diff --git a/addons/material_maker/nodes/normal_map2.mmg b/addons/material_maker/nodes/normal_map2.mmg new file mode 100644 index 00000000..2784894b --- /dev/null +++ b/addons/material_maker/nodes/normal_map2.mmg @@ -0,0 +1,296 @@ +{ + "connections": [ + { + "from": "gen_inputs", + "from_port": 0, + "to": "buffer", + "to_port": 0 + }, + { + "from": "buffer", + "from_port": 0, + "to": "switch", + "to_port": 1 + }, + { + "from": "gen_inputs", + "from_port": 0, + "to": "switch", + "to_port": 0 + }, + { + "from": "edge_detect_1", + "from_port": 0, + "to": "gen_outputs", + "to_port": 0 + }, + { + "from": "switch", + "from_port": 0, + "to": "edge_detect_1", + "to_port": 0 + } + ], + "label": "Normal Map", + "longdesc": "Generates a normal map from a height map", + "name": "normal_map2", + "node_position": { + "x": 0, + "y": 0 + }, + "nodes": [ + { + "name": "buffer", + "node_position": { + "x": -695.663818, + "y": 34.60614 + }, + "parameters": { + "lod": 0, + "size": 10 + }, + "seed": -32011, + "seed_locked": false, + "type": "buffer" + }, + { + "name": "gen_parameters", + "node_position": { + "x": -809.910156, + "y": -136.916687 + }, + "parameters": { + "buffer": 1, + "param2": 0, + "size": 10, + "strength": 1 + }, + "seed": 56582, + "seed_locked": false, + "type": "remote", + "widgets": [ + { + "label": "", + "linked_widgets": [ + { + "node": "edge_detect_1", + "widget": "algo" + } + ], + "longdesc": "The algorithm used to generate the normal map", + "name": "param2", + "shortdesc": "Algorithm", + "type": "linked_control" + }, + { + "label": "", + "linked_widgets": [ + { + "node": "buffer", + "widget": "size" + }, + { + "node": "edge_detect_1", + "widget": "size" + } + ], + "longdesc": "The resolution of the generated normal map", + "name": "size", + "shortdesc": "Resolution", + "type": "linked_control" + }, + { + "label": "", + "linked_widgets": [ + { + "node": "edge_detect_1", + "widget": "amount" + } + ], + "longdesc": "The strength of the normal map filter", + "name": "strength", + "shortdesc": "Strength", + "type": "linked_control" + }, + { + "configurations": { + "False": [ + { + "node": "switch", + "value": 0, + "widget": "source" + } + ], + "True": [ + { + "node": "switch", + "value": 1, + "widget": "source" + } + ] + }, + "label": "Buffer", + "linked_widgets": [ + { + "node": "switch", + "widget": "source" + } + ], + "longdesc": "When set, a buffer is used to sample the input before the normal map filter", + "name": "buffer", + "shortdesc": "Buffer", + "type": "config_control" + } + ] + }, + { + "name": "gen_outputs", + "node_position": { + "x": -445.663818, + "y": 75.047363 + }, + "parameters": { + + }, + "ports": [ + { + "group_size": 0, + "longdesc": "Shows the generated normal map", + "name": "Normal", + "shortdesc": "Output", + "type": "rgb" + } + ], + "seed": -6314, + "seed_locked": false, + "type": "ios" + }, + { + "name": "gen_inputs", + "node_position": { + "x": -1094.910156, + "y": 74.047363 + }, + "parameters": { + + }, + "ports": [ + { + "group_size": 0, + "longdesc": "The input height map", + "name": "Bump", + "shortdesc": "Input", + "type": "f" + } + ], + "seed": 12483, + "seed_locked": true, + "type": "ios" + }, + { + "name": "switch", + "node_position": { + "x": -675.5, + "y": 110.297363 + }, + "parameters": { + "choices": 2, + "outputs": 1, + "source": 1 + }, + "seed": -53264, + "seed_locked": false, + "type": "switch" + }, + { + "name": "edge_detect_1", + "node_position": { + "x": -678.092529, + "y": 187.868774 + }, + "parameters": { + "algo": 0, + "amount": 1, + "size": 10 + }, + "seed": -11547, + "seed_locked": false, + "shader_model": { + "code": "", + "global": "", + "inputs": [ + { + "default": "0.0", + "function": true, + "label": "", + "name": "in", + "type": "f" + } + ], + "instance": "vec3 nm_$name(vec2 uv, float amount, float size) {\n\tvec3 e = vec3(1.0/size, -1.0/size, 0);\n\tvec2 rv;\n\tif ($algo == 0) {\n\t\trv = vec2(1.0, -1.0)*$in(uv+e.xy);\n\t\trv += vec2(-1.0, 1.0)*$in(uv-e.xy);\n\t\trv += vec2(1.0, 1.0)*$in(uv+e.xx);\n\t\trv += vec2(-1.0, -1.0)*$in(uv-e.xx);\n\t\trv += vec2(2.0, 0.0)*$in(uv+e.xz);\n\t\trv += vec2(-2.0, 0.0)*$in(uv-e.xz);\n\t\trv += vec2(0.0, 2.0)*$in(uv+e.zx);\n\t\trv += vec2(0.0, -2.0)*$in(uv-e.zx);\n\t\trv *= size*amount/128.0;\n\t} else if ($algo == 1) {\n\t\trv = vec2(3.0, -3.0)*$in(uv+e.xy);\n\t\trv += vec2(-3.0, 3.0)*$in(uv-e.xy);\n\t\trv += vec2(3.0, 3.0)*$in(uv+e.xx);\n\t\trv += vec2(-3.0, -3.0)*$in(uv-e.xx);\n\t\trv += vec2(10.0, 0.0)*$in(uv+e.xz);\n\t\trv += vec2(-10.0, 0.0)*$in(uv-e.xz);\n\t\trv += vec2(0.0, 10.0)*$in(uv+e.zx);\n\t\trv += vec2(0.0, -10.0)*$in(uv-e.zx);\n\t\trv *= size*amount/512.0;\n\t} else if ($algo == 2) {\n\t\trv += vec2(2.0, 0.0)*$in(uv+e.xz);\n\t\trv += vec2(-2.0, 0.0)*$in(uv-e.xz);\n\t\trv += vec2(0.0, 2.0)*$in(uv+e.zx);\n\t\trv += vec2(0.0, -2.0)*$in(uv-e.zx);\n\t\trv *= size*amount/64.0;\n\t} else {\n\t\trv += vec2(1.0, 0.0)*$in(uv+e.xz);\n\t\trv += vec2(0.0, 1.0)*$in(uv+e.zx);\n\t\trv += vec2(-1.0, -1.0)*$in(uv);\n\t\trv *= size*amount/20.0;\n\t}\n\treturn vec3(0.5)+0.5*normalize(vec3(rv, -1.0));\n}\n", + "name": "Normal map", + "outputs": [ + { + "rgb": "nm_$name($uv, $amount, $size)", + "type": "rgb" + } + ], + "parameters": [ + { + "default": 3, + "label": "", + "name": "algo", + "type": "enum", + "values": [ + { + "name": "Sobel", + "value": "0" + }, + { + "name": "Scharr", + "value": "1" + }, + { + "name": "Simple", + "value": "2" + }, + { + "name": "Cheap", + "value": "3" + } + ] + }, + { + "default": 9, + "first": 4, + "label": "", + "last": 12, + "name": "size", + "type": "size" + }, + { + "control": "None", + "default": 0.5, + "label": "", + "max": 2, + "min": 0, + "name": "amount", + "step": 0.01, + "type": "float" + } + ] + }, + "type": "shader" + } + ], + "parameters": { + "buffer": 1, + "param2": 0, + "size": 10, + "strength": 1 + }, + "seed": 0, + "seed_locked": false, + "shortdesc": "Normal map", + "type": "graph" +} \ No newline at end of file diff --git a/addons/material_maker/nodes/normal_map_convert.mmg b/addons/material_maker/nodes/normal_map_convert.mmg new file mode 100644 index 00000000..0c4c28ce --- /dev/null +++ b/addons/material_maker/nodes/normal_map_convert.mmg @@ -0,0 +1,59 @@ +{ + "name": "normal_map_convert", + "node_position": { + "x": 0, + "y": 0 + }, + "parameters": { + "op": 0 + }, + "seed": 0, + "seed_locked": false, + "shader_model": { + "code": "", + "global": "", + "inputs": [ + { + "default": "vec3(0.5, 0.5, 1.0)", + "label": "", + "longdesc": "The input image", + "name": "in", + "shortdesc": "Input", + "type": "rgb" + } + ], + "instance": "", + "longdesc": "Convert a normal map between OpenGL (default) and DirectX formats", + "name": "Convert Normal Map", + "outputs": [ + { + "longdesc": "Shows the image with adjusted Hue, Saturation and Value", + "rgb": "$in($(uv))$op", + "shortdesc": "Output", + "type": "rgb" + } + ], + "parameters": [ + { + "default": 1, + "label": "", + "longdesc": "The conversion that should be performed", + "name": "op", + "shortdesc": "Conversion", + "type": "enum", + "values": [ + { + "name": "From/To OpenGL", + "value": "*vec3(-1.0, 1.0, -1.0)+vec3(1.0, 0.0, 1.0)" + }, + { + "name": "From/To DirectX", + "value": "*vec3(-1.0, -1.0, -1.0)+vec3(1.0, 1.0, 1.0)" + } + ] + } + ], + "shortdesc": "Convert Normal Map" + }, + "type": "shader" +} \ No newline at end of file diff --git a/material_maker/library/base.json b/material_maker/library/base.json index f78a9081..90dec11a 100644 --- a/material_maker/library/base.json +++ b/material_maker/library/base.json @@ -2139,13 +2139,18 @@ "type": "swap_channels" }, { - "icon": "filter_normal_map", - "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAADnZJREFUaIHVmtuzHUd1xn9rdff07K1zk2RZd2FjGyOCA4aYAAHHuZmqFMTFe5LXvJCX5A/wI5UXyEOSikMwpCrJI4FAkfASUhAKCA4YExIkAr7hW3SxjqSz95k93WvlYfaRZCHpHG1fqrKepmame9bXa/W3Lj3y8MP8vxZdYMxP7119zfUADr1/bYFRiwD4g2+nn9y/b4GBN5DjDx797L+kBQYuAoDIpB3/8DePLDL2WnL8waOl9Kq+wNhFAOhM/uhLGy76owePLjD8Kjn+4FHgz79c1d4oANa4mqgC/PhDi9uhaTj+4NHoktCIhdYWmGQRALVYr/Vj/3QRqC4nfuvw+r5ws5McfOvotl87AojIJ760YY2MrF9AmbjAGCIBpVy+cfqd+89vdke/fmaHE9z+GwdSnH+6ihNJVpv4RlnA1AFt5GNfnczOTP3MZPPUdPN8eeodK7adJdoVuePe1XR6Kmcn+dQ0np588ivT4dHoyiXZsSxkAei1UsjEXlTdUSSJzerz9ywnfP/jF39+SAjsu2dpFAIqrpqqAER5dYosNM6DSxWgn9U/fqz82XuCzGo/9by1/C+9c2kklmB0dtZA3NOMEQCH4jQSZmYiraSPf82T1hoVmKZIP3sjABQsEXKMgM2c4hLVilXzgiBkMxNQbC25SjC33pomJkRVcoeqiCgQMSJJawp1k5tmAhaMA1k6Skcx84r93g+mpuKqpmIqgKmoQplvympe89aHotSsHpUof/JNs0Yu0X9JCymzwJgysThWoNdq6rdsjK2iitXLPm1Gj1AsmAeVxPy+qqbeAYoTCRiRTCESJ28YC7VecMsOENFGHnpy3QxTqTMfjFBVEldHVlWRzTpcf/L7ErAhfbAgGojjNywSK0AfbMBg5m85u0YU11fOFtVUeqgqQEJURFU8anShR9UzRYJrHuC9IQDetqctyWZarbNarA+119qVcv8zLwOmUoL2CFDN1ZxiqXh0AWIMWlHjT79jAQO6FJta1Swm0+DP7LppUrl5C0TpggGWsYzV+bK9+5ndRKkhAMWluJgKUVVFVQBVoViIgSg+EyBTcl8YiyoRI8nLy+3rC+Cuw62Zm1KSl2QFYyx9qESI3HVq3Yyu25p6i14Gl9OKFAc+872pNTJ3mLFELCYjSVDaUv7n8M1huAkAx+5oSdKPAbpgppAomFUnAXz4xKqJhKzWKGBbpKIGoI02okQ5140G4gdUPSbLwUbUxqqMVQPPHWleewBH376LqBYgiY/Vx9oFK8kLVsbeW52lUqMdPne++JyF+qhDehlUUtTBmT7/w/VklQSROPaIjZKpksakMVktJWxXfP5t4x0qFh544IaPA/vuW1nelwRmuIqYuQQAF9yJUaloUK+uyOjlbjqZXlxuIp7EG/fGaVUz2s740Q9efmK6QhBJ3oaq6rvaCmhAR5ICHkWChiwh6saBZnZbO/pZdyP9rpdKNPt0+Y6l4bpCbbV0laAzF5s5VYgoDh6B3otZrNKHOqq6eq6snlt/5l0rV4YBFfmvJ84BFQ3Zmq7GseXGTCW0IlmSOkhIokpQieKSAzB938rUAdZ+fEHPXINn5wBCy9K9KyHH5NKLJ5dprabk2dyRh0ytdDU2oZr3xdqsPabmeUm4aLYkjQUm83mPfff8uXfM3cA2ypMnN4brkfYEiaueg9mukMRznsePlJA4qH7ZsTuRlIOZbxxfJc7v67QfPXZBK0Dc8+Ct83erAT2AUJyoCn2rZpaKD5TS4wjWBjapOFmnxUAl2QgtwTZCZR5qWfv+ZJjw7BULpq1HtahOlJFUyyElIm4qYRy1r0FlWLPQBC8WmsBAwUN+FbQgqswe2Du3wJs/LqEGoD9y4Znfb4dEoMfMXUWppqpVraqYkokOFRgH3TQrltBOPSRh3UbIs7VyQ3lTP3lhaZSxdoxmzcEkqqk2rQLkYJDaqGbgNtceE1UlmGOO2//+ZVdeboEQqjz8MGunw/Gn9qviVQbuc/GTf3ihX8nVHAjubLHhlQYBpKu5okbboZ2feGZyLbVfISePjXP2lCQ0qkpo5o4RmqDmg59cUhoI5tMXNk5/Ztdlv1IJxp3vOp0Scqm1+CvfPdR5zRL6asBFK+o64Lnw62dO/+oeioUts1yJRLoaXYL5c09sbKs9YIEXf2HXUP0MOzW1cVAathZb5cV/PNc/vgIUxFwbqSK+Kdq6AXe+Z+6YcmVv9N1P3BJqiKLFbb32gBmt6KYbkFypWtamz38sVZHgPthEXtxY/9E2ZHdNOX/vWFZbgKCqlK6+9Amps2iKBxsUHTTeTNL23mXPndRxvfvt65cmkauau0eeaw6fXROT89KpS9dJzt73AqTkXSdNkL7g4uJy8pd32oa4sfzwW7dmLcCVinbZUy9AbUwNKSpNPXD7+eXlV5Dp1YHs/Eo9tWfj4PqoC7XiBBdBg1swEURdomtyTLSxAy+NZrHfXCiPH+TFE6Onn1tOuCWrySNuSlIrERFCME/uERFU/a5fXM/56hmuEYlr4IW9k1tPjVTEBZIRXINbMpJ5NI+mySS6wfh8s/dMc2bfTRfjwIn/XO0sSFOlrZIMdaKTzIOrS1WpKphgUlXees/6NSe5diSuyn8fP/eWJ5ckehIxdTUB+h7A6lZraFRDdFO/48X8kwM3tw1OPjv25UKRIR5ZgOB9AlB1M0/uFAG0cvwt1+jT3AjAgOHCns21jdy5JaQTSyIhQ3QxIjLLNVmYaRVYCjfdUJisoua51mmJbSx1GrSxWMRMknuvqHufAe7YfyNyu1EF9LPdZWXaZKREy6LATGsOmhRTy4iFmlVKMr35uqhZqgXtjdCXrkrSCnStjPrqUEqMsTIN2li64bHBNiXciQOTu9dboFBTkhQwzEBVNIsiJJoUALaPYK+QyVKKmPVCRM2rQU/EqmImjRaMOKp379288TzbAKhKuFQhKZpETWa5xqoxSUne5CAqCwCoI1UDdUsS+zmSxoYNQddrZEddlu2LaFXRIPMXExqk0cBQKLbSNzSq3/rZuZtTH+47d/47B9d0ZlZRdU0ObFrU6vQQ2WGrdwcAsgwVY0RKck0SVeer3iogzUIdtUqvITUAPYg5EHu7VCOWpOzgwGAHbYwxEQVMvUlhZjUsxTiBkQY0BP3aT0+ff3wcLjSabISP27o7yHP3XE0dL31/aU1qnsQxErtYDmx8gDPfePMtcVYYqU+tye6I9ZDnDQELwjZbYLuSEjg6zoa7kHIQkbgrJoInpNGI/sOjsvlsm3rVZFmtydaoj1sOnMln9l6ObidPLmmypqDBM5h6XG/z06PbH7cnf0mLa4hUUWvUXCyqBXEVdzm0Xb96e+uHqNYSxsECjObvJw1Jwuf+xptYg/qgfW6sVc/ZiZbGfvvLc/773vPLlt3Uu+w9TKJN8JILEJGPPCoxeq+hombzT+TsMblluZ5WOwVw7+oYyB60oo0GNMSgKgX7/KM1i5t6IwZoY0BKDoxKVJP9k3kGP/NgJp2FiWhVnwJtBSxVoBP/7c8QoxNForgKI93stfPgKqe322DbPA4rkZGGURw8XlVE5Tv/fPELf6sA0RqxUbTUltZkHF2VcQIQU2BvJ987tQT0Mn+/y17VS5G+LaZuqZoa8NBn5eCz6zWGglaUkdZRZKRP3rK8OIAQiL5VLsUgjXqULz6iz5/aFd1TNDWIburZRJuako9FAc0u0QP69jN7LvS5okS3gJkAXXba2sMEN3WCm3rv/t6vrn7o0yZRtMFVhubpUOIuCOC+g2tA0qAqpq4iX/iUeFOAoK7G4PramKoHE50FtvynueK4L2AF6RM9OhFlGiZIAdpKtCle8BKtd2+UjzyivYQaw7ArgG8fudE/FDe0ADqseonuM/vcp01iHbSPwVQ8qwGtSYoGWFOJw064etmkCGAmps6o1uCb6gUmRaq6iZtRhmPWpnz0rzARF9EGX3gPvO/YblUZsuh//8rFL/+dqniCrBbD3HnU5NLy5+wMPbYAMHj2JfHoW/0OnYjOTxjAGgOITvDiPmCwWB96tB56er2vWor0Gr556LpGuG4gCzE4CHzhU1LTcsTnpBhc1Ufqph4gA9GiaTYJ2XIXU0soGpMAAQWrKIJW68eWN1G1aReSeYhmRXUw3SyglIJu1R7v/9qKSf3c7wZA2usu9LUf/M6xNwEV++IjKrFGn2uvqc4PhYbPRCdaQkK2kC8vuW+dtdSthCy6AdKLmRREcu1HVk2qeom2OdMJDqgyEzP1Ar27uj701wr0Vf/t2N6dAggBUZlsdl9+JA5bdr720VRd1UaHJvrmSbh9g7YkZOB+imYLGtAt3ohyeScUUTfpkwCdDb15+uQ9+HLPnRvcuWEHphfViF5wYMBAUwYMfp0zzGu40IeP3vYf//rC408taVOAmMvye8///GsV2N8NheotJ1qiESQEBYlXrEtFIxXw6EA/9pHXrgsKh+9+RaKzeYtxW38pKw/G6BtrjSlN+eij4bEPnPv62/Z98CentgGwby38xd+f937l0P2ndl5nnb57c89LYbQ+qoGYAQJa3KPM6ZyBiKKHTkqNtx+5mLY7AKjKxQ/Os/Rmwn3f3Pvux/pT96OvbF5eDeDUuXr4/We5eTm7vy7bbLVvImJqg3MOm7iIBN+yQOK2Wze21f4qmY059cAZuFp7Fvzl7Dry9MEZUPCBJqNIHSgIgDLPJvyqztSrlNcSAPDEsYswDwWDXDrN1kpB7jm0o/7pzuU1BgCs75pvzeIe0Ipe6vwc338NMniV8toDeHL35UKwYgErW3w6XuS/ym3ktQcAPLV6AYgigwWAit538KYL/53I6wLgxaU5WdQrWiMLNL92Iq/PrHBqvGHqAR3iwDtvXYSadyKvF4CTu7shJxtc6PXw/kEW/dduB2LqmAU4OLpub/nVy+tlAeDrB84GFLhr9yIHUDuU/wPtfRbgn/DXZgAAAABJRU5ErkJggg==", + "icon_data": "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", + "name": "normal_map2", "parameters": { - "amount": 0.5 + "buffer": 1, + "param2": 0, + "size": 10, + "strength": 1 }, + "seed": 0, + "seed_locked": false, "tree_item": "Filter/Normal map", - "type": "normal_map" + "type": "normal_map2" }, { "icon": "filter_blur", @@ -6255,6 +6260,17 @@ "seed_locked": false, "tree_item": "3D/Texture/Select/Shape", "type": "tex3d_select_shape" + }, + { + "icon_data": "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", + "name": "normal_map_convert_2", + "parameters": { + "op": 0 + }, + "seed": 0, + "seed_locked": false, + "tree_item": "Filter/Normal map/Convert", + "type": "normal_map_convert" } ], "name": "Base library"