material-maker/addons/material_maker/nodes/sdrhombus.mmg

83 lines
1.8 KiB
Plaintext

{
"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"
}