{
	"name": "sdrepeat",
	"node_position": {
		"x": 0,
		"y": 0
	},
	"parameters": {
		"r": 0.5,
		"rx": 3,
		"ry": 3,
		"variations": false
	},
	"seed_int": 3641340672,
	"shader_model": {
		"code": [
			"vec2 $(name_uv)_offset = vec2(mod($rx, 2.0) == 0.0 ? 0.5 : 0.0, mod($ry, 2.0) == 0.0 ? 0.5 : 0.0);",
			"float $(name_uv)_seed = $variations ? rand(floor($uv * vec2($rx, $ry) + $(name_uv)_offset)) + $seed : 0.0;",
			"float $(name_uv)_in = $in.variation(repeat_2d($uv, vec2(1.0/$rx, 1.0/$ry), float($seed), $r), $(name_uv)_seed);"
		],
		"global": [
			"vec2 repeat_2d(vec2 p, vec2 r, float seed, float randomness) {",
			"\tp -= vec2(0.5);",
			"\tfloat a = (rand(floor(mod((p.xy+0.5*r.xy)/r.xy, 1.0/r.xy))+vec2(seed))-0.5)*6.28*randomness;",
			"\tp = mod(p+0.5*r,r)-0.5*r;",
			"\tvec2 rv;",
			"\tfloat c = cos(a);",
			"\tfloat s = sin(a);",
			"\trv.x = p.x*c+p.y*s;",
			"\trv.y = -p.x*s+p.y*c;",
			"\treturn rv+vec2(0.5);",
			"}",
			""
		],
		"inputs": [
			{
				"default": "0.0",
				"function": true,
				"label": "",
				"longdesc": "The input shape, defined as a signed distance function",
				"name": "in",
				"shortdesc": "Input",
				"type": "sdf2d"
			}
		],
		"instance": "",
		"longdesc": "Repeats its input shape on a grid.\nThis node does not support overlapping between instances.",
		"name": "Repeat",
		"outputs": [
			{
				"longdesc": "The shape generated by the repeat operation",
				"sdf2d": "$(name_uv)_in",
				"shortdesc": "Output",
				"type": "sdf2d"
			}
		],
		"parameters": [
			{
				"control": "None",
				"default": 4,
				"label": "X",
				"longdesc": "The number of columns in the grid",
				"max": 32,
				"min": 1,
				"name": "rx",
				"shortdesc": "Columns",
				"step": 1,
				"type": "float"
			},
			{
				"control": "None",
				"default": 4,
				"label": "Y",
				"longdesc": "The number of lines in the grid",
				"max": 32,
				"min": 1,
				"name": "ry",
				"shortdesc": "Lines",
				"step": 1,
				"type": "float"
			},
			{
				"control": "None",
				"default": 0.5,
				"label": "R",
				"longdesc": "The amount of random rotation on each instance of the input shape",
				"max": 1,
				"min": 0,
				"name": "r",
				"shortdesc": "Rotation",
				"step": 0.01,
				"type": "float"
			},
			{
				"default": false,
				"label": "Variations",
				"longdesc": "Check to repeat variations of the input",
				"name": "variations",
				"shortdesc": "Variations",
				"type": "boolean"
			}
		],
		"shortdesc": "sdRepeat"
	},
	"type": "shader"
}