Skip to content

Commit 2754d18

Browse files
committed
Added kite sdf
1 parent 1f15eea commit 2754d18

File tree

6 files changed

+135
-1
lines changed

6 files changed

+135
-1
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"name": "sdkite",
3+
"node_position": {
4+
"x": 0,
5+
"y": 0
6+
},
7+
"parameters": {
8+
"apex": -0.3,
9+
"base": 0.4,
10+
"width": 0.225
11+
},
12+
"seed_int": 0,
13+
"shader_model": {
14+
"code": "",
15+
"global": [
16+
"float sdKite(vec2 p, float w, float hb, float ht) {",
17+
"\tvec2 v[] = { vec2(-w, 0.0), vec2(0.0, ht), vec2(w, 0.0), vec2(0.0, hb) };",
18+
"\tint l = 4;",
19+
"\tfloat d = dot(p-v[0],p-v[0]);",
20+
"\tfloat s = 1.0;",
21+
"\tint j = l-1;",
22+
"\tfor(int i=0; i<l; i++)",
23+
"\t{",
24+
"\t\tvec2 e = v[j] - v[i];",
25+
"\t\tvec2 w =\tp - v[i];",
26+
"\t\tvec2 b = w - e*clamp( dot(w,e)/dot(e,e), 0.0, 1.0 );",
27+
"\t\td = min( d, dot(b,b) );",
28+
"\t\tbvec3 c = bvec3(p.y>=v[i].y,p.y<v[j].y,e.x*w.y>e.y*w.x);",
29+
"\t\tif( all(c) || all(not(c)) ) s*=-1.0;",
30+
"\t\tj=i;",
31+
"\t}",
32+
"\treturn s*sqrt(d);",
33+
"}",
34+
""
35+
],
36+
"inputs": [],
37+
"instance": "",
38+
"longdesc": "A kite as a signed distance function",
39+
"name": "sdKite",
40+
"outputs": [
41+
{
42+
"longdesc": "The kite as a signed distance function",
43+
"sdf2d": "sdKite($uv-0.5, $width, min($apex,0.0), max($base,0.0))",
44+
"shortdesc": "Output",
45+
"type": "sdf2d"
46+
}
47+
],
48+
"parameters": [
49+
{
50+
"control": "P1.y",
51+
"default": -0.3,
52+
"label": "Apex",
53+
"longdesc": "Position of the top vertex along the Y axis",
54+
"max": 1.0,
55+
"min": 0.0,
56+
"name": "apex",
57+
"shortdesc": "Apex",
58+
"step": 0.01,
59+
"type": "float"
60+
},
61+
{
62+
"control": "P2.y",
63+
"default": 0.4,
64+
"label": "Base",
65+
"longdesc": "Position of the bottom vertex on the Y axis",
66+
"max": 1.0,
67+
"min": 0.0,
68+
"name": "base",
69+
"shortdesc": "Base",
70+
"step": 0.01,
71+
"type": "float"
72+
},
73+
{
74+
"control": "P3.x",
75+
"default": 0.225,
76+
"label": "Width",
77+
"longdesc": "Width of the kite",
78+
"max": 1.0,
79+
"min": 0.0,
80+
"name": "width",
81+
"shortdesc": "Width",
82+
"step": 0.01,
83+
"type": "float"
84+
}
85+
],
86+
"shortdesc": "sdKite"
87+
},
88+
"type": "shader"
89+
}
22.1 KB
Loading
17.6 KB
Loading

material_maker/doc/node_simple_sdf.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ Shapes
5454
node_simple_sdf_shapes_sdstar
5555
node_simple_sdf_shapes_sdpie
5656
node_simple_sdf_shapes_sdarrow
57+
node_simple_sdf_shapes_sdkite
5758

5859
Operators
5960
+++++++++
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
sdKite node
2+
...........
3+
4+
The **sdKite** node generates a signed distance image for a kite.
5+
6+
.. image:: images/node_simple_sdf_shapes_sdkite.png
7+
:align: center
8+
9+
Inputs
10+
::::::
11+
12+
The **sdKite** node does not accept any input.
13+
14+
Outputs
15+
:::::::
16+
17+
The **sdKite** node generates a signed distance function for a kite.
18+
19+
Parameters
20+
::::::::::
21+
22+
The **sdKite** node accepts the following parameters:
23+
24+
* *Apex* position of the kite along the Y axis
25+
* *Base* position of the kite along the Y axis
26+
* *Width* of the kite
27+
28+
Example images
29+
::::::::::::::
30+
31+
.. image:: images/node_sdkite_sample.png
32+
:align: center

material_maker/library/base.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7851,7 +7851,19 @@
78517851
"icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABCtJREFUeJztmk9MI1Ucxz8tHbpt7RJKI4gL8kcpB4MX42GBJlwgniDawEGixsNe1oSLnk00IRoPHoyJHgzZxBA9ctkFPdiEA0gkYSUxoBGyDbiAdgVWScBOn4ducTpMYRjKvOl2PskkM+/Ne/y+X6a/Xzv5gYuLSyXjMXnfc8CrwEtAPeC/tIguThq4B9wG7gCHF9ksCtwCVECU4bEOvGJVfAfwmwNElOL4oJjIYh+BWuAHco8+AH6/n3g8TiwWIxQKnWacNFRVZWdnh9nZWdbX1/XTbwOfmd3rUzQO9vf3i1QqJcoFVVXFxMSECAaD2qfgALhmRvyT5BKHAERfX584OjqSrckSMzMzwuv1ak34xIwBb+UXeDwesbKyIlvHhRgZGdEacE8v1mtgwAv5k66uLmKxmBnTHMvw8LD2shmIaAd8Bmvqj+9ubj5188N/sxcIrbRU+7x4DFJ6S0uLfqgeeJC/MDLgeMznM5rOMX13m9X7D88X5SUSDvh4M/4MXp0LBhqUgnmrf/BqwEdNUDn7RpuIhKrxmP5i+z+WDbjeUcf1jjqryx2DURKsKFwDZAcgG8s5AOAwk819vXAAxcrgWVg24PbSFr9u/W11ecm5GlB4I958ogyehWUDaoKKo8pgbUixtwx2d9TR7ZbB8sc1QHYAsql4AywnwTt3t/jlvnPKYE1Q4fVeG8tg+IqzymBN0OYy2BOroyfmlsGyxzVAdgCyqXgDLCdBp70UrQ0pjPbYWAZD/iquKFUIh7wQCPl99pbB3s4ovZ1Rq8sdQ8XnANcA2QHIpuINsJwEZ37aZuV355TByBPVvNbdZF8ZDFRX4Vec8wAFqqtKVgbV4xNVNZjOEe+MEi+DMmigoWDA6F/4R/5kc3PzEkKyl42NDf3QtvbCyICf8ydLS0ukUqlLCMs+pqamtJfb5BopT+UamsbIoaEhkc1mZbf6WGJ+fl4oiqLtEfrCrHG3NIvE6Oio2N3dla3nXExPT4toNKoVf4Sm7zFPsbT5FPAj0JgfiEQiDA4O0t7eTjgcJpFI0NjYeGJhOp1mcnKSg4MDs2aXlL29PZLJJHNzc/qp94D3z7PXi8AORdpP29raRCaTKXB9dXVVNDU1yW6LNTq+xHxjeAEtwLdGm3o8HrG/v38sfnl5WTQ0NMgWqj8eADdPE2jWlR5gGEiQ+3jQ2trK2toaAIuLiwwMDJBOFyTYh0DG5P6lQiX31K6Ra5X/Gk1LXCn4nkfuJhIJIYQQCwsLIhKJ6J3/Bl072uOAB/iLRyLHx8dFMpkU4XBYL/4rLth54lSeRSN0bGxMBAIBvfjPeYx/YQ5zesL5GIuZtlz4iOLiP5QYl218x0nhWeBdmUHZyZ8Uis8AN6RGZCNPUyj+EBiRGpHNBMm9JxDAP8DLcsORQwx4B3hediAuLqXjP2stcqDv6aOOAAAAAElFTkSuQmCC",
78527852
"tree_item": "Miscellaneous/Comment/Line",
78537853
"type": "comment_line"
7854+
},
7855+
{
7856+
"display_name": "sdKite",
7857+
"icon": "simple_sdf_shapes_sdkite",
7858+
"icon_data": "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",
7859+
"parameters": {
7860+
"apex": -0.3,
7861+
"base": 0.4,
7862+
"width": 0.225
7863+
},
7864+
"tree_item": "Simple/SDF/Shapes/sdKite",
7865+
"type": "sdkite"
78547866
}
78557867
],
78567868
"name": "Base library"
7857-
}
7869+
}

0 commit comments

Comments
 (0)