{ "name": "sdrhombus", "node_position": { "x": 0, "y": 0 }, "parameters": { "cx": 0, "cy": 0, "h": 0.2, "w": 0.3 }, "shader_model": { "code": "", "global": "float sdr_ndot(vec2 a, vec2 b) { return a.x*b.x - a.y*b.y; }\nfloat sdRhombus(in vec2 p, in vec2 b) {\n vec2 q = abs(p);\n float h = clamp((-2.0*sdr_ndot(q,b)+sdr_ndot(b,b))/dot(b,b),-1.0,1.0);\n float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );\n return d * sign( q.x*b.y + q.y*b.x - b.x*b.y );\n}", "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" }