mirror of
https://github.com/Relintai/mat_maker_gd.git
synced 2025-04-30 10:57:56 +02:00
115 lines
3.6 KiB
Plaintext
115 lines
3.6 KiB
Plaintext
{
|
|
"name": "shape",
|
|
"node_position": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"parameters": {
|
|
"edge": 0.5,
|
|
"radius": 0.8,
|
|
"shape": 1,
|
|
"sides": 6
|
|
},
|
|
"shader_model": {
|
|
"code": "",
|
|
"global": "float shape_circle(vec2 uv, float sides, float size, float edge) {\n uv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n float distance = length(uv);\n return clamp((1.0-distance/size)/edge, 0.0, 1.0);\n}\n\nfloat shape_polygon(vec2 uv, float sides, float size, float edge) {\n uv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n float angle = atan(uv.x, uv.y)+3.14159265359;\n float slice = 6.28318530718/sides;\n return clamp((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 0.0, 1.0);\n}\n\nfloat shape_star(vec2 uv, float sides, float size, float edge) {\n uv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n float angle = atan(uv.x, uv.y);\n float slice = 6.28318530718/sides;\n return clamp((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0);\n}\n\nfloat shape_curved_star(vec2 uv, float sides, float size, float edge) {\n uv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n float angle = 2.0*(atan(uv.x, uv.y)+3.14159265359);\n float slice = 6.28318530718/sides;\n return clamp((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 0.0, 1.0);\n}\n\nfloat shape_rays(vec2 uv, float sides, float size, float edge) {\n uv = 2.0*uv-1.0;\n\tedge = 0.5*max(edge, 1.0e-8)*size;\n\tfloat slice = 6.28318530718/sides;\n float angle = mod(atan(uv.x, uv.y)+3.14159265359, slice)/slice;\n return clamp(min((size-angle)/edge, angle/edge), 0.0, 1.0);\n}\n\n",
|
|
"inputs": [
|
|
{
|
|
"default": "1.0",
|
|
"label": "3:",
|
|
"longdesc": "An input map that affects the shape size",
|
|
"name": "radius_map",
|
|
"shortdesc": "Size map",
|
|
"type": "f"
|
|
},
|
|
{
|
|
"default": "1.0",
|
|
"label": "",
|
|
"longdesc": "An input map that affects the edge width",
|
|
"name": "edge_map",
|
|
"shortdesc": "Edge map",
|
|
"type": "f"
|
|
}
|
|
],
|
|
"instance": "",
|
|
"longdesc": "Draws a white shape on a black background",
|
|
"name": "Shape",
|
|
"outputs": [
|
|
{
|
|
"f": "shape_$(shape)($(uv), $(sides), $(radius)*$radius_map($uv), $(edge)*$edge_map($uv))",
|
|
"longdesc": "Shows a white shape on a black background",
|
|
"shortdesc": "Output",
|
|
"type": "f"
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"default": 0,
|
|
"label": "",
|
|
"longdesc": "The type of shape drawn by this node",
|
|
"name": "shape",
|
|
"shortdesc": "Shape",
|
|
"type": "enum",
|
|
"values": [
|
|
{
|
|
"name": "Circle",
|
|
"value": "circle"
|
|
},
|
|
{
|
|
"name": "Polygon",
|
|
"value": "polygon"
|
|
},
|
|
{
|
|
"name": "Star",
|
|
"value": "star"
|
|
},
|
|
{
|
|
"name": "Curved star",
|
|
"value": "curved_star"
|
|
},
|
|
{
|
|
"name": "Rays",
|
|
"value": "rays"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 3,
|
|
"label": "",
|
|
"longdesc": "The number of sides of the generated shape (unused for Circle)",
|
|
"max": 32,
|
|
"min": 2,
|
|
"name": "sides",
|
|
"shortdesc": "Sides count",
|
|
"step": 1,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 1,
|
|
"label": "",
|
|
"longdesc": "The size of the generated shape",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "radius",
|
|
"shortdesc": "Shape size",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
},
|
|
{
|
|
"control": "None",
|
|
"default": 0.2,
|
|
"label": "",
|
|
"longdesc": "The edge width of the generated shape",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "edge",
|
|
"shortdesc": "Edge width",
|
|
"step": 0.01,
|
|
"type": "float"
|
|
}
|
|
]
|
|
},
|
|
"type": "shader"
|
|
} |