{ "name": "splatter_base", "node_position": { "x": 0, "y": 0 }, "parameters": { "name": 0.5, "offx": 0, "offy": 0, "repeat": 8, "scale": 1.78, "size": 1 }, "shader_model": { "code": "vec4 $(name_uv)_xyzw = splatter($uv, $repeat, $scale, vec2($offx, $offy));", "global": "vec4 splatter(vec2 uv, float repeat, float scale, vec2 offset) {\n\tvec2 center = (floor(uv*repeat-offset)+0.5+offset)/repeat;\n\tvec2 tmp = (uv-center)*repeat*2.0;\n\tvec2 src_uv;\n\tsrc_uv.x = tmp.x*cos(center.x)+tmp.y*sin(center.x);\n\tsrc_uv.y = tmp.x*sin(center.x)-tmp.y*cos(center.x);\n\tsrc_uv /= scale;\n\tsrc_uv += 0.5;\n\treturn vec4(src_uv, center);\n}", "inputs": [ { "default": "0.0", "label": "", "name": "in", "type": "f" }, { "default": "0.0", "label": "", "name": "mask", "type": "f" } ], "instance": "", "name": "Splatter", "outputs": [ { "f": "$in($(name_uv)_xyzw.xy)*$mask($(name_uv)_xyzw.zw)", "type": "f" } ], "parameters": [ { "default": 4, "label": "Repeat", "max": 128, "min": 2, "name": "repeat", "step": 1, "type": "float" }, { "default": 1, "label": "Scale", "max": 2, "min": 0, "name": "scale", "step": 0.01, "type": "float" }, { "default": 0.5, "label": "Offset X", "max": 1, "min": 0, "name": "offx", "step": 0.1, "type": "float" }, { "default": 0.5, "label": "Offset Y", "max": 1, "min": 0, "name": "offy", "step": 0.1, "type": "float" } ] }, "type": "shader" }