Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions addons/material_maker/nodes/scratches.mmg
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"shader_model": {
"code": "",
"global": [
"float scratch(vec2 uv, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"float old_scratch(vec2 uv, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"\tfloat subdivide = floor(1.0/size.x);",
"\tfloat cut = size.x*subdivide;",
"\tuv *= subdivide;",
Expand All @@ -36,11 +36,11 @@
"\treturn min(border.x, border.y)*(1.0-uv.x*uv.x)*max(0.0, 1.0-1000.0*uv.y*uv.y);",
"}",
"",
"float scratches(vec2 uv, int layers, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"float old_scratches(vec2 uv, int layers, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"\tfloat v = 0.0;",
"\tfor (int i = 0; i < layers; ++i) {",
"\t\tseed = rand2(seed);",
"\t\tv = max(v, scratch(fract(uv+seed), size, waviness, angle/360.0, randomness, seed));",
"\t\tv = max(v, old_scratch(fract(uv+seed), size, waviness, angle/360.0, randomness, seed));",
"\t}",
"\treturn v;",
"}",
Expand All @@ -54,7 +54,7 @@
"name": "Scratches",
"outputs": [
{
"f": "scratches($uv, int($layers), vec2($length, $width), $waviness, $angle, $randomness, vec2(float($seed), 0.0))",
"f": "old_scratches($uv, int($layers), vec2($length, $width), $waviness, $angle, $randomness, vec2(float($seed), 0.0))",
"longdesc": "Shows white scratches on a black background",
"shortdesc": "Output",
"type": "f"
Expand Down Expand Up @@ -136,4 +136,4 @@
]
},
"type": "shader"
}
}
139 changes: 139 additions & 0 deletions addons/material_maker/nodes/scratches2.mmg
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"name": "scratches",
"node_position": {
"x": 0,
"y": 0
},
"parameters": {
"angle": 0,
"layers": 5,
"length": 0.25,
"randomness": 0.3,
"waviness": 0.3,
"width": 0.4
},
"seed_int": 0,
"shader_model": {
"code": "",
"global": [
"float scratch(vec2 uv, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"\tfloat subdivide = floor(1.0/size.x);",
"\tfloat cut = size.x*subdivide;",
"\tuv *= subdivide;",
"\tvec2 r1 = rand2(floor(uv)+seed);",
"\tvec2 r2 = rand2(r1);",
"\tuv = fract(uv);",
"\tvec2 border = min(fract(uv), 1.0-fract(uv));",
"\tuv = 2.0*uv-vec2(1.0);",
"\tfloat a = 6.28318530718*(angle+(r1.x-0.5)*randomness);",
"\tfloat c = cos(a);",
"\tfloat s = sin(a);",
"\tuv = vec2(c*uv.x+s*uv.y, s*uv.x-c*uv.y);",
"\tuv.y += 2.0*r1.y-1.0;",
"\tuv.y += 0.5*waviness*cos(2.0*uv.x+6.28318530718*r2.y);",
"\tuv.x /= cut;",
"\tuv.y /= subdivide*size.y;",
"\treturn min(border.x, border.y)*(1.0-uv.x*uv.x)*max(0.0, 1.0-1000.0*uv.y*uv.y);",
"}",
"",
"float scratches(vec2 uv, int layers, vec2 size, float waviness, float angle, float randomness, vec2 seed) {",
"\tfloat v = 0.0;",
"\tfor (int i = 0; i < layers; ++i) {",
"\t\tseed = rand2(seed);",
"\t\tv = max(v, scratch(fract(uv+seed), size, waviness, angle/360.0, randomness, seed));",
"\t}",
"\treturn v * 2.0;",
"}",
""
],
"inputs": [

],
"instance": "",
"longdesc": "Draws white scratches on a black background",
"name": "Scratches",
"outputs": [
{
"f": "scratches($uv, int($layers), vec2($length, $width), $waviness, $angle, $randomness, vec2(float($seed), 0.0))",
"longdesc": "Shows white scratches on a black background",
"shortdesc": "Output",
"type": "f"
}
],
"parameters": [
{
"control": "None",
"default": 0.25,
"label": "Length",
"longdesc": "The length of scratches (the shorter the scratches,the more they will be)",
"max": 1,
"min": 0.1,
"name": "length",
"shortdesc": "Length",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "Width",
"longdesc": "The width of scratches",
"max": 1,
"min": 0.1,
"name": "width",
"shortdesc": "Width",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 4,
"label": "Layers",
"longdesc": "The number of scratches layers",
"max": 10,
"min": 1,
"name": "layers",
"shortdesc": "Layers",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "Waviness",
"longdesc": "The waviness of scratches",
"max": 1,
"min": 0,
"name": "waviness",
"shortdesc": "Waviness",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 0,
"label": "Angle",
"longdesc": "The average angle of the scratches (0 generates horizontal scratches)",
"max": 180,
"min": -180,
"name": "angle",
"shortdesc": "Angle",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "Randomness",
"longdesc": "The randomness of the scratches angles",
"max": 1,
"min": 0,
"name": "randomness",
"shortdesc": "Randomness",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
}
6 changes: 3 additions & 3 deletions material_maker/library/base.json
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,7 @@
"display_name": "Scratches",
"icon": "pattern_scratches",
"icon_data": "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",
"name": "scratches",
"name": "scratches2",
"parameters": {
"Randomness": 0.5,
"angle": -1.0,
Expand All @@ -1994,7 +1994,7 @@
"width": 0.4
},
"tree_item": "Pattern/Scratches",
"type": "scratches"
"type": "scratches2"
},
{
"display_name": "Beehive",
Expand Down Expand Up @@ -8093,4 +8093,4 @@
}
],
"name": "Base library"
}
}