{
	"name": "sdf3d_boolean",
	"node_position": {
		"x": 0,
		"y": 0
	},
	"parameters": {
		"op": 0
	},
	"seed": 60292,
	"seed_locked": true,
	"shader_model": {
		"code": "",
		"global": [
			"vec2 sdf3dc_union(vec2 a, vec2 b) {",
			"\treturn vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x)));",
			"}",
			"vec2 sdf3dc_sub(vec2 a, vec2 b) {",
			"\treturn vec2(max(-a.x, b.x), a.y);",
			"}",
			"vec2 sdf3dc_inter(vec2 a, vec2 b) {",
			"\treturn vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x)));",
			"}",
			""
		],
		"inputs": [
			{
				"default": "vec2(100.0, 0.0)",
				"label": "",
				"longdesc": "The first shape, defined as a signed distance function",
				"name": "in1",
				"shortdesc": "Input1",
				"type": "sdf3dc"
			},
			{
				"default": "vec2(100.0, 0.0)",
				"label": "",
				"longdesc": "The second shape, defined as a signed distance function",
				"name": "in2",
				"shortdesc": "Input2",
				"type": "sdf3dc"
			}
		],
		"instance": "",
		"longdesc": "Performs a boolean operation (union, intersection or difference) between two shapes",
		"name": "Boolean",
		"outputs": [
			{
				"longdesc": "The shape generated by the boolean operation",
				"sdf3dc": "$op($in1($uv), $in2($uv))",
				"shortdesc": "Output",
				"type": "sdf3dc"
			}
		],
		"parameters": [
			{
				"default": 2,
				"label": "",
				"longdesc": "The operation performed by this node",
				"name": "op",
				"shortdesc": "Operation",
				"type": "enum",
				"values": [
					{
						"name": "Union",
						"value": "sdf3dc_union"
					},
					{
						"name": "Subtraction",
						"value": "sdf3dc_sub"
					},
					{
						"name": "Intersection",
						"value": "sdf3dc_inter"
					}
				]
			}
		],
		"shortdesc": "Boolean"
	},
	"type": "shader"
}