{ "name": "sdpolygon", "node_position": { "x": 0, "y": 0 }, "parameters": { "polygon": { "points": [ { "x": 0.2, "y": 0.2 }, { "x": 0.4, "y": 0.7 }, { "x": 0.7, "y": 0.4 } ], "type": "Polygon" } }, "shader_model": { "code": "", "global": "", "inputs": [ ], "instance": "float sdPolygon_$(name)(vec2 p) {\n\tvec2 v[] = $polygon;\n\tint l = v.length();\n float d = dot(p-v[0],p-v[0]);\n float s = 1.0;\n\tint j = l-1;\n for(int i=0; i=v[i].y,p.ye.y*w.x);\n if( all(c) || all(not(c)) ) s*=-1.0;\n\t\tj=i;\n }\n return s*sqrt(d);\n}\n", "longdesc": "A polygon as a signed distance function", "name": "sdPolygon", "outputs": [ { "longdesc": "The polygon as a signed distance function", "sdf2d": "sdPolygon_$(name)($uv)", "shortdesc": "Output", "type": "sdf2d" } ], "parameters": [ { "default": { "points": [ { "x": 0.2, "y": 0.2 }, { "x": 0.4, "y": 0.7 }, { "x": 0.7, "y": 0.4 } ], "type": "Polygon" }, "label": "", "longdesc": "The polygon to be drawn", "name": "polygon", "shortdesc": "Polygon", "type": "polygon" } ], "shortdesc": "sdPolygon" }, "type": "shader" }