mirror of
https://github.com/Relintai/mat_maker_gd.git
synced 2025-04-30 10:57:56 +02:00
219 lines
5.9 KiB
Plaintext
219 lines
5.9 KiB
Plaintext
{
|
|
"name": "circle_splatter",
|
|
"node_position": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"parameters": {
|
|
"count": 20,
|
|
"i_rotate": 0,
|
|
"i_scale": 0,
|
|
"radius": 0.4,
|
|
"rings": 2,
|
|
"rotate": 0,
|
|
"scale": 0,
|
|
"scale_x": 1,
|
|
"scale_y": 1,
|
|
"select_inputs": 0,
|
|
"spiral": 0,
|
|
"value": 0
|
|
},
|
|
"shader_model": {
|
|
"code": "vec4 $(name_uv)_rch = splatter_$(name)($uv, int($count), int($rings), vec2(float($seed)));",
|
|
"longdesc": "Spreads several occurences of an input image in a circle or spiral pattern.",
|
|
"global": "",
|
|
"inputs": [
|
|
{
|
|
"default": "0.0",
|
|
"function": true,
|
|
"label": "",
|
|
"longdesc": "The input image or atlas of 4 or 16 input images",
|
|
"name": "in",
|
|
"shortdesc": "Input",
|
|
"type": "f"
|
|
},
|
|
{
|
|
"default": "1.0",
|
|
"function": true,
|
|
"label": "",
|
|
"longdesc": "The mask applied to the pattern",
|
|
"name": "mask",
|
|
"shortdesc": "Mask",
|
|
"type": "f"
|
|
}
|
|
],
|
|
"instance": "vec4 splatter_$(name)(vec2 uv, int count, int rings, vec2 seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tseed = rand2(seed);\n\tfor (int i = 0; i < count; ++i) {\n\t\tfloat a = -1.57079632679+6.28318530718*float(i)*$rings/float(count);\n\t\tfloat rings_distance = ceil(float(i+1)*float(rings)/float(count))/float(rings);\n\t\tfloat spiral_distance = float(i+1)/float(count);\n\t\tvec2 pos = $radius*mix(rings_distance, spiral_distance, $spiral)*vec2(cos(a), sin(a));\n\t\tfloat mask = $mask(fract(pos-vec2(0.5)));\n\t\tif (mask > 0.01) {\n\t\t\tvec2 pv = uv-0.5-pos;\n\t\t\trc1 = rand3(seed);\n\t\t\tseed = rand2(seed);\n\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * $rotate * 0.01745329251 + (a+1.57079632679) * $i_rotate;\n\t\t\tfloat ca = cos(angle);\n\t\t\tfloat sa = sin(angle);\n\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\tpv /= mix(1.0, float(i+1)/float(count+1), $i_scale);\n\t\t\tpv /= vec2($scale_x, $scale_y);\n\t\t\tpv *= (seed.y-0.5)*2.0*$scale+1.0;\n\t\t\tpv += vec2(0.5);\n\t\t\tpv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t$select_inputs\n\t\t\tseed = rand2(seed);\n\t\t\tfloat c1 = $in(pv)*mask*(1.0-$value*seed.x);\n\t\t\tc = max(c, c1);\n\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n",
|
|
"name": "Circle Splatter",
|
|
"outputs": [
|
|
{
|
|
"f": "$(name_uv)_rch.a",
|
|
"longdesc": "Shows the generated pattern",
|
|
"shortdesc": "Output",
|
|
"type": "f"
|
|
},
|
|
{
|
|
"longdesc": "Shows a random color for each instance of the input image",
|
|
"rgb": "$(name_uv)_rch.rgb",
|
|
"shortdesc": "Instance map",
|
|
"type": "rgb"
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"control": "None",
|
|
"default": 10,
|
|
"label": "Count",
|
|
"longdesc": "The number of occurences of the input image",
|
|
"max": 256,
|
|
"min": 1,
|
|
"name": "count",
|
|
"shortdesc": "Count",
|
|
"step": 1,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 1,
|
|
"label": "Rings",
|
|
"longdesc": "The number of rings of the circle pattern",
|
|
"max": 16,
|
|
"min": 1,
|
|
"name": "rings",
|
|
"shortdesc": "Rings",
|
|
"step": 1,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"default": 0,
|
|
"label": "Inputs",
|
|
"longdesc": "The input type of the node:\n- 1: single image\n- 4: atlas of 4 images\n- 16: atlas of 16 images\nAtlases can be created using the Tile2x2 node.",
|
|
"name": "select_inputs",
|
|
"shortdesc": "Input",
|
|
"type": "enum",
|
|
"values": [
|
|
{
|
|
"name": "1",
|
|
"value": " "
|
|
},
|
|
{
|
|
"name": "4",
|
|
"value": "pv = clamp(0.5*(pv+floor(rand2(seed)*2.0)), vec2(0.0), vec2(1.0));"
|
|
},
|
|
{
|
|
"name": "16",
|
|
"value": "pv = clamp(0.25*(pv+floor(rand2(seed)*4.0)), vec2(0.0), vec2(1.0));"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 1,
|
|
"label": "Scale X",
|
|
"longdesc": "The scale of input images on the X axis",
|
|
"max": 2,
|
|
"min": 0,
|
|
"name": "scale_x",
|
|
"shortdesc": "Scale.x",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 1,
|
|
"label": "Scale Y",
|
|
"longdesc": "The scale of input images on the Y axis",
|
|
"max": 2,
|
|
"min": 0,
|
|
"name": "scale_y",
|
|
"shortdesc": "Scale.y",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0.25,
|
|
"label": "Radius",
|
|
"longdesc": "The radius of the outer circle pattern",
|
|
"max": 0.5,
|
|
"min": 0,
|
|
"name": "radius",
|
|
"shortdesc": "Radius",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0,
|
|
"label": "Spiral",
|
|
"longdesc": "The type of pattern:\n- 0: circles\n- 1: spiral",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "spiral",
|
|
"shortdesc": "Spiral",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0,
|
|
"label": "Inc Rotate",
|
|
"longdesc": "The rotate increment along the pattern",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "i_rotate",
|
|
"shortdesc": "IncRotate",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0,
|
|
"label": "Inc Scale",
|
|
"longdesc": "The scale increment of the pattern",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "i_scale",
|
|
"shortdesc": "IncScale",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0,
|
|
"label": "Rnd Rotate",
|
|
"longdesc": "The random rotation applied to each image instance",
|
|
"max": 180,
|
|
"min": 0,
|
|
"name": "rotate",
|
|
"shortdesc": "RndRotate",
|
|
"step": 0.1,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0,
|
|
"label": "Rnd Scale",
|
|
"longdesc": "The random scale applied to each image instance",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "scale",
|
|
"shortdesc": "RndScale",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0.5,
|
|
"label": "Rnd Value",
|
|
"longdesc": "The random greyscale value applied to each image instance",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "value",
|
|
"shortdesc": "RndValue",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
}
|
|
]
|
|
},
|
|
"type": "shader"
|
|
} |