material-maker/addons/material_maker/nodes/dilate_pass_2.mmg

53 lines
1.2 KiB
Plaintext

{
"name": "distance_pass_2",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"d": 0.1,
"s": 9
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "vec3(0.0)",
"function": true,
"label": "",
"name": "in",
"type": "rgb"
}
],
"instance": "vec3 $(name)_distance_v(vec2 uv) {\n\tvec2 e = vec2(0.0, 1.0/$s);\n\tint steps = int($s*$d);\n\tvec3 p = $in(uv);\n\tfor (int i = 0; i < steps; ++i) {\n\t\tvec2 dx = float(i)*e;\n\t\tvec3 p2 = $in(uv+dx);\n\t\tif (p2.x > p.x) {\n\t\t\tp2.x = 1.0-sqrt((1.0-p2.x)*(1.0-p2.x)+dx.y*dx.y/$d/$d);\n\t\t\tp = mix(p, p2, step(p.x, p2.x));\n\t\t}\n\t\tp2 = $in(uv-dx);\n\t\tif (p2.x > p.x) {\n\t\t\tp2.x = 1.0-sqrt((1.0-p2.x)*(1.0-p2.x)+dx.y*dx.y/$d/$d);\n\t\t\tp = mix(p, p2, step(p.x, p2.x));\n\t\t}\n\t}\n\treturn p;\n}\n",
"name": "Distance pass 2",
"outputs": [
{
"rgb": "$(name)_distance_v($uv)",
"type": "rgb"
}
],
"parameters": [
{
"default": 9,
"first": 6,
"label": "",
"last": 12,
"name": "s",
"type": "size"
},
{
"control": "None",
"default": 0.5,
"label": "",
"max": 1,
"min": 0,
"name": "d",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
}