{
	"name": "transform",
	"node_position": {
		"x": 0,
		"y": 0
	},
	"parameters": {
		"repeat": false,
		"rotate": 0,
		"scale_x": 1,
		"scale_y": 1,
		"translate_x": 0,
		"translate_y": 0
	},
	"shader_model": {
		"code": "",
		"global": "vec2 transform(vec2 uv, vec2 translate, float rotate, vec2 scale, bool repeat) {\n \tvec2 rv;\n\tuv -= translate;\n\tuv -= vec2(0.5);\n\trv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;\n\trv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;\n\trv /= scale;\n\trv += vec2(0.5);\n    if (repeat) {\n\t\treturn fract(rv);\n\t} else {\n\t\treturn clamp(rv, vec2(0.0), vec2(1.0));\n\t}\t\n}",
		"inputs": [
			{
				"default": "vec4($uv, 0.0, 1.0)",
				"label": "",
				"name": "i",
				"type": "rgba"
			},
			{
				"default": "1.0",
				"label": "",
				"name": "tx",
				"type": "f"
			},
			{
				"default": "1.0",
				"label": "",
				"name": "ty",
				"type": "f"
			},
			{
				"default": "1.0",
				"label": "",
				"name": "r",
				"type": "f"
			},
			{
				"default": "1.0",
				"label": "",
				"name": "sx",
				"type": "f"
			},
			{
				"default": "1.0",
				"label": "",
				"name": "sy",
				"type": "f"
			}
		],
		"instance": "",
		"name": "Transform",
		"outputs": [
			{
				"rgba": "$i(transform($uv, vec2($translate_x*(2.0*$tx($uv)-1.0), $translate_y*(2.0*$ty($uv)-1.0)), $rotate*0.01745329251*(2.0*$r($uv)-1.0), vec2($scale_x*(2.0*$sx($uv)-1.0), $scale_y*(2.0*$sy($uv)-1.0)), $repeat))",
				"type": "rgba"
			}
		],
		"parameters": [
			{
				"control": "P1.x",
				"default": 0,
				"label": "2:Translate X:",
				"max": 1,
				"min": -1,
				"name": "translate_x",
				"step": 0.005,
				"type": "float"
			},
			{
				"control": "P1.y",
				"default": 0,
				"label": "Translate Y:",
				"max": 1,
				"min": -1,
				"name": "translate_y",
				"step": 0.005,
				"type": "float"
			},
			{
				"control": "Radius1.a",
				"default": 0,
				"label": "Rotate:",
				"max": 720,
				"min": -720,
				"name": "rotate",
				"step": 0.005,
				"type": "float"
			},
			{
				"control": "Scale1.x",
				"default": 1,
				"label": "Scale X:",
				"max": 50,
				"min": 0,
				"name": "scale_x",
				"step": 0.005,
				"type": "float"
			},
			{
				"control": "Scale1.y",
				"default": 1,
				"label": "Scale Y:",
				"max": 50,
				"min": 0,
				"name": "scale_y",
				"step": 0.005,
				"type": "float"
			},
			{
				"default": false,
				"label": "Repeat:",
				"name": "repeat",
				"type": "boolean"
			}
		]
	},
	"type": "shader"
}