{
	"name": "sdrhombus",
	"node_position": {
		"x": 0,
		"y": 0
	},
	"parameters": {
		"cx": 0,
		"cy": 0,
		"h": 0.2,
		"w": 0.3
	},
	"seed_int": 0,
	"shader_model": {
		"code": "",
		"global": [
			"float sdr_ndot(vec2 a, vec2 b) { return a.x*b.x - a.y*b.y; }",
			"float sdRhombus(in vec2 p, in vec2 b) {",
			"\tvec2 q = abs(p);",
			"\tfloat h = clamp((-2.0*sdr_ndot(q,b)+sdr_ndot(b,b))/dot(b,b),-1.0,1.0);",
			"\tfloat d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );",
			"\treturn d * sign( q.x*b.y + q.y*b.x - b.x*b.y );",
			"}"
		],
		"inputs": [

		],
		"instance": "",
		"longdesc": "A rhombus described as a signed distance function",
		"name": "sdRhombus",
		"outputs": [
			{
				"longdesc": "The rhombus as a signed distance function",
				"sdf2d": "sdRhombus($uv-vec2($cx+0.5, $cy+0.5), vec2($w, $h))",
				"shortdesc": "Output",
				"type": "sdf2d"
			}
		],
		"parameters": [
			{
				"control": "Rect1.x",
				"default": 0.5,
				"label": "Width",
				"longdesc": "The width of the rhombus",
				"max": 1,
				"min": 0,
				"name": "w",
				"shortdesc": "Width",
				"step": 0.01,
				"type": "float"
			},
			{
				"control": "Rect1.y",
				"default": 1,
				"label": "Height",
				"longdesc": "The height of the rhombus",
				"max": 1,
				"min": 0,
				"name": "h",
				"shortdesc": "Height",
				"step": 0.01,
				"type": "float"
			},
			{
				"control": "P1.x",
				"default": 0,
				"label": "Center X",
				"longdesc": "The position of the center on the X axis",
				"max": 1,
				"min": -1,
				"name": "cx",
				"shortdesc": "Center.x",
				"step": 0.01,
				"type": "float"
			},
			{
				"control": "P1.y",
				"default": 0,
				"label": "Center Y",
				"longdesc": "The position of the center on the Y axis",
				"max": 1,
				"min": -1,
				"name": "cy",
				"shortdesc": "Center.y",
				"step": 0.01,
				"type": "float"
			}
		],
		"shortdesc": "sdRhombus"
	},
	"type": "shader"
}