material-maker/material_maker/examples/mmm_donuts.ptex

2530 lines
45 KiB
Plaintext
Raw Normal View History

{
"connections": [
{
"from": "graph",
"from_port": 0,
"to": "sdf3d_scale_2",
"to_port": 0
},
{
"from": "sdf3d_scale_2",
"from_port": 0,
"to": "sdf3d_repeat",
"to_port": 0
},
{
"from": "sdf3d_scale_2",
"from_port": 0,
"to": "sdf3d_repeat_2",
"to_port": 0
},
{
"from": "sdf3d_repeat_2",
"from_port": 0,
"to": "sdf3d_translate_3_2_2",
"to_port": 0
},
{
"from": "sdf3d_repeat",
"from_port": 0,
"to": "sdf3d_boolean",
"to_port": 0
},
{
"from": "sdf3d_translate_3_2_2",
"from_port": 0,
"to": "sdf3d_boolean",
"to_port": 1
},
{
"from": "sdf3d_boolean",
"from_port": 0,
"to": "sdf3d_translate_3_2_2_2",
"to_port": 0
},
{
"from": "sdf3d_translate_3_2_2_2",
"from_port": 0,
"to": "raymarching",
"to_port": 0
},
{
"from": "mwf_create_map",
"from_port": 0,
"to": "mwf_map",
"to_port": 0
},
{
"from": "mwf_create_map_3",
"from_port": 0,
"to": "mwf_map_2",
"to_port": 0
},
{
"from": "mwf_create_map_2",
"from_port": 0,
"to": "mwf_map_2_2",
"to_port": 0
},
{
"from": "uniform",
"from_port": 0,
"to": "mwf_map_2",
"to_port": 1
},
{
"from": "mwf_map_2",
"from_port": 0,
"to": "mwf_mix",
"to_port": 0
},
{
"from": "mwf_map_2",
"from_port": 1,
"to": "mwf_mix",
"to_port": 1
},
{
"from": "mwf_map_2",
"from_port": 2,
"to": "mwf_mix",
"to_port": 2
},
{
"from": "mwf_map_2",
"from_port": 3,
"to": "mwf_mix",
"to_port": 3
},
{
"from": "mwf_map_2",
"from_port": 4,
"to": "mwf_mix",
"to_port": 4
},
{
"from": "mwf_map_2_2",
"from_port": 0,
"to": "mwf_mix",
"to_port": 5
},
{
"from": "mwf_map_2_2",
"from_port": 1,
"to": "mwf_mix",
"to_port": 6
},
{
"from": "mwf_map_2_2",
"from_port": 2,
"to": "mwf_mix",
"to_port": 7
},
{
"from": "mwf_map_2_2",
"from_port": 3,
"to": "mwf_mix",
"to_port": 8
},
{
"from": "mwf_map_2_2",
"from_port": 4,
"to": "mwf_mix",
"to_port": 9
},
{
"from": "mwf_mix",
"from_port": 4,
"to": "mwf_mix_2",
"to_port": 9
},
{
"from": "mwf_mix",
"from_port": 3,
"to": "mwf_mix_2",
"to_port": 8
},
{
"from": "mwf_mix",
"from_port": 2,
"to": "mwf_mix_2",
"to_port": 7
},
{
"from": "mwf_mix",
"from_port": 1,
"to": "mwf_mix_2",
"to_port": 6
},
{
"from": "mwf_mix",
"from_port": 0,
"to": "mwf_mix_2",
"to_port": 5
},
{
"from": "mwf_mix_2",
"from_port": 0,
"to": "mwf_output",
"to_port": 0
},
{
"from": "mwf_mix_2",
"from_port": 1,
"to": "mwf_output",
"to_port": 1
},
{
"from": "mwf_mix_2",
"from_port": 2,
"to": "mwf_output",
"to_port": 2
},
{
"from": "mwf_mix_2",
"from_port": 3,
"to": "mwf_output",
"to_port": 3
},
{
"from": "mwf_mix_2",
"from_port": 4,
"to": "mwf_output",
"to_port": 4
},
{
"from": "mwf_output",
"from_port": 0,
"to": "Material",
"to_port": 0
},
{
"from": "mwf_output",
"from_port": 1,
"to": "Material",
"to_port": 1
},
{
"from": "mwf_output",
"from_port": 2,
"to": "Material",
"to_port": 2
},
{
"from": "mwf_output",
"from_port": 3,
"to": "Material",
"to_port": 3
},
{
"from": "mwf_output",
"from_port": 5,
"to": "Material",
"to_port": 5
},
{
"from": "uniform_2",
"from_port": 0,
"to": "mwf_map_2",
"to_port": 2
},
{
"from": "uniform_3",
"from_port": 0,
"to": "mwf_map",
"to_port": 1
},
{
"from": "uniform_2_2",
"from_port": 0,
"to": "mwf_map",
"to_port": 2
},
{
"from": "uniform_2_3_2",
"from_port": 0,
"to": "mwf_map_2_2",
"to_port": 2
},
{
"from": "raymarching",
"from_port": 1,
"to": "Material",
"to_port": 4
},
{
"from": "mwf_map",
"from_port": 4,
"to": "mwf_mix_3",
"to_port": 9
},
{
"from": "mwf_map",
"from_port": 3,
"to": "mwf_mix_3",
"to_port": 8
},
{
"from": "mwf_map",
"from_port": 2,
"to": "mwf_mix_3",
"to_port": 7
},
{
"from": "mwf_map",
"from_port": 1,
"to": "mwf_mix_3",
"to_port": 6
},
{
"from": "mwf_map",
"from_port": 0,
"to": "mwf_mix_3",
"to_port": 5
},
{
"from": "mwf_mix_3",
"from_port": 0,
"to": "mwf_mix_2",
"to_port": 0
},
{
"from": "mwf_mix_3",
"from_port": 1,
"to": "mwf_mix_2",
"to_port": 1
},
{
"from": "mwf_mix_3",
"from_port": 2,
"to": "mwf_mix_2",
"to_port": 2
},
{
"from": "mwf_mix_3",
"from_port": 3,
"to": "mwf_mix_2",
"to_port": 3
},
{
"from": "mwf_mix_3",
"from_port": 4,
"to": "mwf_mix_2",
"to_port": 4
},
{
"from": "uniform_greyscale",
"from_port": 0,
"to": "mwf_mix_3",
"to_port": 0
},
{
"from": "uniform_4",
"from_port": 0,
"to": "mwf_mix_3",
"to_port": 1
},
{
"from": "uniform_4_2",
"from_port": 0,
"to": "mwf_mix_3",
"to_port": 2
},
{
"from": "colorize",
"from_port": 0,
"to": "mwf_map_2_2",
"to_port": 1
},
{
"from": "perlin",
"from_port": 0,
"to": "colorize",
"to_port": 0
},
{
"from": "mwf_output",
"from_port": 6,
"to": "Material",
"to_port": 6
},
{
"from": "raymarching",
"from_port": 0,
"to": "mul_detect",
"to_port": 0
},
{
"from": "raymarching",
"from_port": 2,
"to": "mul_detect",
"to_port": 1
},
{
"from": "mul_detect",
"from_port": 0,
"to": "mwf_create_map",
"to_port": 0
},
{
"from": "mul_detect_2",
"from_port": 0,
"to": "mwf_create_map_3",
"to_port": 0
},
{
"from": "raymarching",
"from_port": 0,
"to": "mul_detect_2",
"to_port": 0
},
{
"from": "raymarching",
"from_port": 2,
"to": "mul_detect_2",
"to_port": 1
},
{
"from": "raymarching",
"from_port": 0,
"to": "mul_detect_2_2",
"to_port": 0
},
{
"from": "mul_detect_2_2",
"from_port": 0,
"to": "mwf_create_map_2",
"to_port": 0
},
{
"from": "raymarching",
"from_port": 2,
"to": "mul_detect_2_2",
"to_port": 1
}
],
"label": "Graph",
"name": "53",
"node_position": {
"x": 0,
"y": 0
},
"nodes": [
{
"name": "Material",
"node_position": {
"x": 1596.135986,
"y": -86.800011
},
"parameters": {
"albedo_color": {
"a": 1,
"b": 1,
"g": 1,
"r": 1,
"type": "Color"
},
"ao_light_affect": 1,
"depth_scale": 0.3,
"emission_energy": 1,
"metallic": 1,
"normal_scale": 1,
"roughness": 1,
"size": 11,
"subsurf_scatter_strength": 0
},
"type": "material"
},
{
"name": "raymarching",
"node_position": {
"x": -93.107498,
"y": 112.625015
},
"parameters": {
},
"shader_model": {
"code": "vec2 $(name_uv)_d = raymarch_$name($uv);\n",
"global": "",
"inputs": [
{
"default": "0.0",
"function": true,
"label": "",
"name": "sdf",
"type": "sdf3dc"
}
],
"instance": "vec2 raymarch_$name(vec2 uv) {\n\tvec3 ro = vec3(uv-vec2(0.5), 1.0);\n\tvec3 rd = vec3(0.0, 0.0, -1.0);\n\tfloat dO = 0.0;\n\tfloat c = 0.0;\n for (int i=0; i < 100; i++) {\n \tvec3 p = ro + rd*dO;\n vec2 dS = $sdf(p);\n dO += dS.x;\n\n if (dO >= 1.0) {\n\t\t\tbreak;\n\t\t} else if (dS.x < 0.0001) {\n\t\t\tc = dS.y;\n\t\t\tbreak;\n\t\t}\n }\n \n return vec2(dO, c);\n}\n\nvec3 normal_$name(vec3 p) {\n\tif (p.z <= 0.0) {\n\t\treturn vec3(0.0, 0.0, 1.0);\n\t}\n\n\tfloat d = $sdf(p).x;\n float e = .001;\n \n vec3 n = d - vec3(\n $sdf(p-vec3(e, 0.0, 0.0)).x,\n $sdf(p-vec3(0.0, e, 0.0)).x,\n $sdf(p-vec3(0.0, 0.0, e)).x);\n \n return vec3(-1.0, -1.0, -1.0)*normalize(n);\n}\n\n",
"name": "Raymarching",
"outputs": [
{
"f": "1.0-$(name_uv)_d.x",
"type": "f"
},
{
"rgb": "vec3(0.5)+0.5*normal_$name(vec3($uv-vec2(0.5), 1.0-$(name_uv)_d.x))",
"type": "rgb"
},
{
"f": "$(name_uv)_d.y",
"type": "f"
}
],
"parameters": [
]
},
"type": "shader"
},
{
"connections": [
{
"from": "sdf3d_translate_3_2_2",
"from_port": 0,
"to": "sdf3d_rounded_2",
"to_port": 0
},
{
"from": "sdf3d_rounded_2_2",
"from_port": 0,
"to": "sdf3d_boolean",
"to_port": 0
},
{
"from": "sdf3d_rounded_2",
"from_port": 0,
"to": "sdf3d_boolean",
"to_port": 1
},
{
"from": "sdf3d_torus",
"from_port": 0,
"to": "sdf3d_rounded_2_2",
"to_port": 0
},
{
"from": "sdf3d_torus_2",
"from_port": 0,
"to": "sdf3d_translate_3_2_2",
"to_port": 0
},
{
"from": "sdf3d_capsule",
"from_port": 0,
"to": "sdf3d_repeat",
"to_port": 0
},
{
"from": "sdf3d_repeat",
"from_port": 0,
"to": "sdf3d_boolean_2",
"to_port": 0
},
{
"from": "sdf3d_translate_3_2_2_2",
"from_port": 0,
"to": "sdf3d_boolean_2",
"to_port": 1
},
{
"from": "sdf3d_torus_2",
"from_port": 0,
"to": "sdf3d_translate_3_2_2_2",
"to_port": 0
},
{
"from": "sdf3d_boolean_2",
"from_port": 0,
"to": "sdf3d_rounded_2_3",
"to_port": 0
},
{
"from": "sdf3d_rounded_2_3",
"from_port": 0,
"to": "sdf3d_boolean_3",
"to_port": 1
},
{
"from": "sdf3d_boolean",
"from_port": 0,
"to": "sdf3d_boolean_3",
"to_port": 0
},
{
"from": "sdf3d_boolean_3",
"from_port": 0,
"to": "gen_outputs",
"to_port": 0
}
],
"label": "Donut",
"name": "graph",
"node_position": {
"x": -664.759155,
"y": -18.094296
},
"nodes": [
{
"name": "sdf3d_rounded_2_3",
"node_position": {
"x": -552.595459,
"y": 249.420105
},
"parameters": {
"bevel": 0,
"c": 0.31,
"cx": 0,
"cy": 0,
"h": 0.08,
"k": 0.15,
"op": 0,
"r": 0.15,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3d"
}
],
"instance": "",
"name": "Color",
"outputs": [
{
"sdf3dc": "vec2($in($uv), $c)",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 0,
"label": "",
"max": 1,
"min": 0,
"name": "c",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_boolean_2",
"node_position": {
"x": -557.354126,
"y": 320.541656
},
"parameters": {
"bevel": 0,
"cx": 0,
"cy": 0,
"h": 0.08,
"op": 2,
"r": 0.3,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "vec2 sdf3dc_union(vec2 a, vec2 b) {\n\treturn vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x)));\n}\nvec2 sdf3dc_sub(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, -b.x), a.y);\n}\nvec2 sdf3dc_inter(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x)));\n}\n",
"inputs": [
{
"default": "vec2(0.0)",
"label": "",
"name": "in1",
"type": "sdf3dc"
},
{
"default": "vec2(0.0)",
"label": "",
"name": "in2",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Boolean",
"outputs": [
{
"sdf3dc": "$op($in1($uv), $in2($uv))",
"type": "sdf3dc"
}
],
"parameters": [
{
"default": 2,
"label": "",
"name": "op",
"type": "enum",
"values": [
{
"name": "Union",
"value": "sdf3dc_union"
},
{
"name": "Subtraction",
"value": "sdf3dc_sub"
},
{
"name": "Intersection",
"value": "sdf3dc_inter"
}
]
}
]
},
"type": "shader"
},
{
"name": "sdf3d_translate_3_2_2_2",
"node_position": {
"x": -768.354126,
"y": 429.041656
},
"parameters": {
"x": 0,
"y": 0,
"z": 0.05
},
"type": "sdf3d_translate"
},
{
"name": "sdf3d_repeat",
"node_position": {
"x": -768.854126,
"y": 276.291656
},
"parameters": {
"a": 0,
"r": 0.51,
"rx": 16,
"ry": 16,
"rz": 16,
"s": 0.3,
"x": 0.35,
"y": 0,
"z": 0
},
"shader_model": {
"code": "",
"global": "vec3 sdf3d_repeat(vec3 p, vec3 r, float seed, float randomness) {\n\tvec3 i = floor(p/r+0.5);\n\tvec3 a = rand3(i.xy+i.yz+vec2(seed))*6.28*randomness;\n\tp = mod(p+0.5*r,r)-0.5*r;\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Repeat",
"outputs": [
{
"sdf3dc": "$in(sdf3d_repeat($uv, vec3(1.0/$rx, 1.0/$ry, 1.0/$rz), $seed, $r))",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 4,
"label": "X",
"max": 32,
"min": 1,
"name": "rx",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 4,
"label": "Y",
"max": 32,
"min": 1,
"name": "ry",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 1,
"label": "Z",
"max": 32,
"min": 1,
"name": "rz",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "R",
"max": 1,
"min": 0,
"name": "r",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_capsule",
"node_position": {
"x": -786.854126,
"y": 197.291656
},
"parameters": {
"l": 0.02,
"r": 0.01,
"sx": 0.25,
"sy": 0.25,
"sz": 0.5
},
"type": "sdf3d_capsule"
},
{
"name": "sdf3d_torus_2",
"node_position": {
"x": -768.354126,
"y": -82.208344
},
"parameters": {
"R": 0.3,
"r": 0.14,
"sx": 0.1,
"sy": 0.1,
"sz": 0.02
},
"type": "sdf3d_torus"
},
{
"name": "sdf3d_torus",
"node_position": {
"x": -759.854126,
"y": -236.708344
},
"parameters": {
"R": 0.3,
"r": 0.15,
"sx": 0.1,
"sy": 0.1,
"sz": 0.02
},
"type": "sdf3d_torus"
},
{
"name": "sdf3d_boolean",
"node_position": {
"x": -521.333313,
"y": -3.083344
},
"parameters": {
"bevel": 0,
"cx": 0,
"cy": 0,
"h": 0.08,
"op": 0,
"r": 0.3,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "vec2 sdf3dc_union(vec2 a, vec2 b) {\n\treturn vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x)));\n}\nvec2 sdf3dc_sub(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, -b.x), a.y);\n}\nvec2 sdf3dc_inter(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x)));\n}\n",
"inputs": [
{
"default": "vec2(0.0)",
"label": "",
"name": "in1",
"type": "sdf3dc"
},
{
"default": "vec2(0.0)",
"label": "",
"name": "in2",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Boolean",
"outputs": [
{
"sdf3dc": "$op($in1($uv), $in2($uv))",
"type": "sdf3dc"
}
],
"parameters": [
{
"default": 2,
"label": "",
"name": "op",
"type": "enum",
"values": [
{
"name": "Union",
"value": "sdf3dc_union"
},
{
"name": "Subtraction",
"value": "sdf3dc_sub"
},
{
"name": "Intersection",
"value": "sdf3dc_inter"
}
]
}
]
},
"type": "shader"
},
{
"name": "sdf3d_rounded_2_2",
"node_position": {
"x": -751.833313,
"y": -156.583344
},
"parameters": {
"bevel": 0,
"c": 0.08,
"cx": 0,
"cy": 0,
"h": 0.08,
"k": 0.15,
"op": 0,
"r": 0.15,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3d"
}
],
"instance": "",
"name": "Color",
"outputs": [
{
"sdf3dc": "vec2($in($uv), $c)",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 0,
"label": "",
"max": 1,
"min": 0,
"name": "c",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_translate_3_2_2",
"node_position": {
"x": -774.833313,
"y": 16.666656
},
"parameters": {
"x": 0,
"y": 0,
"z": 0.03
},
"type": "sdf3d_translate"
},
{
"name": "sdf3d_rounded_2",
"node_position": {
"x": -763.333313,
"y": 130.166656
},
"parameters": {
"bevel": 0,
"c": 0.87,
"cx": 0,
"cy": 0,
"h": 0.08,
"k": 0.15,
"op": 0,
"r": 0.15,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3d"
}
],
"instance": "",
"name": "Color",
"outputs": [
{
"sdf3dc": "vec2($in($uv), $c)",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 0,
"label": "",
"max": 1,
"min": 0,
"name": "c",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_boolean_3",
"node_position": {
"x": -526.595459,
"y": 127.920105
},
"parameters": {
"bevel": 0,
"cx": 0,
"cy": 0,
"h": 0.08,
"op": 0,
"r": 0.3,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "vec2 sdf3dc_union(vec2 a, vec2 b) {\n\treturn vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x)));\n}\nvec2 sdf3dc_sub(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, -b.x), a.y);\n}\nvec2 sdf3dc_inter(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x)));\n}\n",
"inputs": [
{
"default": "vec2(0.0)",
"label": "",
"name": "in1",
"type": "sdf3dc"
},
{
"default": "vec2(0.0)",
"label": "",
"name": "in2",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Boolean",
"outputs": [
{
"sdf3dc": "$op($in1($uv), $in2($uv))",
"type": "sdf3dc"
}
],
"parameters": [
{
"default": 2,
"label": "",
"name": "op",
"type": "enum",
"values": [
{
"name": "Union",
"value": "sdf3dc_union"
},
{
"name": "Subtraction",
"value": "sdf3dc_sub"
},
{
"name": "Intersection",
"value": "sdf3dc_inter"
}
]
}
]
},
"type": "shader"
},
{
"name": "gen_inputs",
"node_position": {
"x": -1086.854126,
"y": 105.729713
},
"parameters": {
},
"ports": [
],
"type": "ios"
},
{
"name": "gen_outputs",
"node_position": {
"x": -221.333313,
"y": 105.729713
},
"parameters": {
},
"ports": [
{
"name": "port0",
"type": "sdf3dc"
}
],
"type": "ios"
},
{
"name": "gen_parameters",
"node_position": {
"x": -891.679138,
"y": -536.708374
},
"parameters": {
},
"type": "remote",
"widgets": [
]
}
],
"parameters": {
},
"type": "graph"
},
{
"name": "sdf3d_repeat",
"node_position": {
"x": -482.202179,
"y": -14.881774
},
"parameters": {
"a": 0,
"r": 0.2,
"rx": 3,
"ry": 3,
"s": 0.3,
"x": 0.35,
"y": 0,
"z": 0
},
"shader_model": {
"code": "",
"global": "vec3 repeat(vec3 p, vec3 r, float seed, float randomness) {\n\tvec3 a = (rand3(floor(mod((p.xy+0.5*r.xy)/r.xy, 1.0/r.xy)+vec2(seed)))-0.5)*6.28*randomness;\n\tp = mod(p+0.5*r,r)-0.5*r;\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Repeat",
"outputs": [
{
"sdf3dc": "$in(repeat($uv, vec3(1.0/$rx, 1.0/$ry, 0.0), $seed, $r))",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 4,
"label": "X",
"max": 32,
"min": 1,
"name": "rx",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 4,
"label": "Y",
"max": 32,
"min": 1,
"name": "ry",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "R",
"max": 1,
"min": 0,
"name": "r",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_scale_2",
"node_position": {
"x": -670.842224,
"y": 66.030228
},
"parameters": {
"a": 0,
"s": 0.37,
"x": 0.35,
"y": 0,
"z": 0
},
"shader_model": {
"code": "vec2 $(name_uv)_in = $in(($uv)/$s);",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Scale",
"outputs": [
{
"sdf3dc": "vec2($(name_uv)_in.x*$s, $(name_uv)_in.y)",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "Scale1.x",
"default": 1,
"label": "",
"max": 5,
"min": 0,
"name": "s",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_repeat_2",
"node_position": {
"x": -480.202179,
"y": 110.618225
},
"parameters": {
"a": 0,
"r": 0.21,
"rx": 3,
"ry": 3,
"s": 0.3,
"x": 0.35,
"y": 0,
"z": 0
},
"shader_model": {
"code": "",
"global": "vec3 repeat(vec3 p, vec3 r, float seed, float randomness) {\n\tvec3 a = (rand3(floor(mod((p.xy+0.5*r.xy)/r.xy, 1.0/r.xy)+vec2(seed)))-0.5)*6.28*randomness;\n\tp = mod(p+0.5*r,r)-0.5*r;\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Repeat",
"outputs": [
{
"sdf3dc": "$in(repeat($uv, vec3(1.0/$rx, 1.0/$ry, 0.0), $seed, $r))",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "None",
"default": 4,
"label": "X",
"max": 32,
"min": 1,
"name": "rx",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 4,
"label": "Y",
"max": 32,
"min": 1,
"name": "ry",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "R",
"max": 1,
"min": 0,
"name": "r",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_translate_3_2_2",
"node_position": {
"x": -479.952209,
"y": 213.034912
},
"parameters": {
"x": 0.14,
"y": 0.11,
"z": 0.2
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Translate",
"outputs": [
{
"sdf3dc": "$in($uv-vec3($x, $y, $z))",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "P1.x",
"default": 0,
"label": "X",
"max": 1,
"min": -1,
"name": "x",
"step": 0.01,
"type": "float"
},
{
"control": "P1.y",
"default": 0,
"label": "Y",
"max": 1,
"min": -1,
"name": "y",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 0,
"label": "Z",
"max": 1,
"min": -1,
"name": "z",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"name": "sdf3d_boolean",
"node_position": {
"x": -252.248795,
"y": 76.092621
},
"parameters": {
"bevel": 0,
"cx": 0,
"cy": 0,
"h": 0.08,
"op": 0,
"r": 0.3,
"w": 0.28
},
"shader_model": {
"code": "",
"global": "vec2 sdf3dc_union(vec2 a, vec2 b) {\n\treturn vec2(min(a.x, b.x), mix(b.y, a.y, step(a.x, b.x)));\n}\nvec2 sdf3dc_sub(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, -b.x), a.y);\n}\nvec2 sdf3dc_inter(vec2 a, vec2 b) {\n\treturn vec2(max(a.x, b.x), mix(a.y, b.y, step(a.x, b.x)));\n}\n",
"inputs": [
{
"default": "vec2(0.0)",
"label": "",
"name": "in1",
"type": "sdf3dc"
},
{
"default": "vec2(0.0)",
"label": "",
"name": "in2",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Boolean",
"outputs": [
{
"sdf3dc": "$op($in1($uv), $in2($uv))",
"type": "sdf3dc"
}
],
"parameters": [
{
"default": 2,
"label": "",
"name": "op",
"type": "enum",
"values": [
{
"name": "Union",
"value": "sdf3dc_union"
},
{
"name": "Subtraction",
"value": "sdf3dc_sub"
},
{
"name": "Intersection",
"value": "sdf3dc_inter"
}
]
}
]
},
"type": "shader"
},
{
"name": "sdf3d_translate_3_2_2_2",
"node_position": {
"x": -278.344788,
"y": 149.892624
},
"parameters": {
"x": 0,
"y": 0,
"z": 0.1
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "sdf3dc"
}
],
"instance": "",
"name": "Translate",
"outputs": [
{
"sdf3dc": "$in($uv-vec3($x, $y, $z))",
"type": "sdf3dc"
}
],
"parameters": [
{
"control": "P1.x",
"default": 0,
"label": "X",
"max": 1,
"min": -1,
"name": "x",
"step": 0.01,
"type": "float"
},
{
"control": "P1.y",
"default": 0,
"label": "Y",
"max": 1,
"min": -1,
"name": "y",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 0,
"label": "Z",
"max": 1,
"min": -1,
"name": "z",
"step": 0.01,
"type": "float"
}
]
},
"type": "shader"
},
{
"color": {
"a": 1,
"b": 1,
"g": 0.0625,
"r": 0,
"type": "Color"
},
"name": "comment",
"node_position": {
"x": -681.957275,
"y": -50.802036
},
"parameters": {
"size": 4
},
"size": {
"x": 757.167969,
"y": 382.903992
},
"text": "\n",
"title": "Render donuts with color indexes",
"type": "comment"
},
{
"name": "mwf_create_map",
"node_position": {
"x": 360.571991,
"y": -128.630447
},
"parameters": {
"angle": 0,
"height": 1
},
"type": "mwf_create_map"
},
{
"name": "mwf_create_map_2",
"node_position": {
"x": 369.417175,
"y": 399.369568
},
"parameters": {
"angle": 0,
"height": 1
},
"type": "mwf_create_map"
},
{
"name": "mwf_create_map_3",
"node_position": {
"x": 378.417175,
"y": 137.369568
},
"parameters": {
"angle": 0,
"height": 1
},
"type": "mwf_create_map"
},
{
"name": "mwf_map",
"node_position": {
"x": 652.417175,
"y": -128.630447
},
"parameters": {
},
"type": "mwf_map"
},
{
"name": "mwf_map_2",
"node_position": {
"x": 647.693909,
"y": 136.369553
},
"parameters": {
},
"type": "mwf_map"
},
{
"name": "mwf_map_2_2",
"node_position": {
"x": 651.693909,
"y": 406.119568
},
"parameters": {
},
"type": "mwf_map"
},
{
"name": "uniform",
"node_position": {
"x": 415.193909,
"y": 217.119568
},
"parameters": {
"color": {
"a": 1,
"b": 0,
"g": 0.165865,
"r": 0.280273,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "mwf_mix",
"node_position": {
"x": 853.900879,
"y": 164.927567
},
"parameters": {
},
"type": "mwf_mix"
},
{
"name": "mwf_mix_2",
"node_position": {
"x": 1083.009155,
"y": -87.618446
},
"parameters": {
},
"type": "mwf_mix"
},
{
"connections": [
{
"from": "colorize_3",
"from_port": 0,
"to": "gen_outputs",
"to_port": 6
},
{
"from": "gen_inputs",
"from_port": 0,
"to": "colorize_3",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 0,
"to": "gaussian_blur",
"to_port": 0
},
{
"from": "gaussian_blur",
"from_port": 0,
"to": "gen_outputs",
"to_port": 5
},
{
"from": "gen_inputs",
"from_port": 2,
"to": "decompose",
"to_port": 0
},
{
"from": "decompose",
"from_port": 1,
"to": "gen_outputs",
"to_port": 2
},
{
"from": "decompose",
"from_port": 2,
"to": "gen_outputs",
"to_port": 1
},
{
"from": "blend_2",
"from_port": 0,
"to": "gen_outputs",
"to_port": 4
},
{
"from": "gen_inputs",
"from_port": 1,
"to": "gen_outputs",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 3,
"to": "gen_outputs",
"to_port": 3
},
{
"from": "brightness_contrast",
"from_port": 0,
"to": "blend_2",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 4,
"to": "brightness_contrast",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 0,
"to": "normal_map_2",
"to_port": 0
},
{
"from": "normal_map_2",
"from_port": 0,
"to": "blend_2",
"to_port": 1
}
],
"label": "Output",
"name": "mwf_output",
"node_position": {
"x": 1307.265137,
"y": -74.206451
},
"nodes": [
{
"name": "colorize_3",
"node_position": {
"x": -939.637451,
"y": 871.842407
},
"parameters": {
"gradient": {
"interpolation": 1,
"points": [
{
"a": 1,
"b": 1,
"g": 1,
"pos": 0,
"r": 1
},
{
"a": 1,
"b": 0,
"g": 0,
"pos": 1,
"r": 0
}
],
"type": "Gradient"
}
},
"type": "colorize"
},
{
"connections": [
{
"from": "buffer",
"from_port": 0,
"to": "blurx_convolution",
"to_port": 0
},
{
"from": "buffer_2",
"from_port": 0,
"to": "blurx_convolution_2",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 0,
"to": "buffer",
"to_port": 0
},
{
"from": "blend",
"from_port": 0,
"to": "colorize",
"to_port": 0
},
{
"from": "blurx_convolution",
"from_port": 0,
"to": "buffer_2",
"to_port": 0
},
{
"from": "blurx_convolution_2",
"from_port": 0,
"to": "blend",
"to_port": 1
},
{
"from": "buffer",
"from_port": 0,
"to": "blend",
"to_port": 0
},
{
"from": "colorize",
"from_port": 0,
"to": "_2",
"to_port": 0
},
{
"from": "_2",
"from_port": 0,
"to": "gen_outputs",
"to_port": 0
}
],
"label": "Occlusion",
"name": "gaussian_blur",
"node_position": {
"x": -994.845825,
"y": 786.968262
},
"nodes": [
{
"convolution_params": {
"input_type": "rgba",
"matrix_function": "exp(-0.5*(pow(x/sigma, 2.0)))/(6.28318530718 *sigma*sigma)",
"normalized": true,
"output_type": "rgba",
"parameters": [
{
"max": 50,
"min": 0.05,
"name": "sigma",
"type": "float"
}
],
"x": 50,
"y": 0
},
"name": "blurx_convolution",
"node_position": {
"x": -407.5,
"y": -192.5
},
"parameters": {
"sigma": 50,
"size": 10
},
"type": "convolution"
},
{
"name": "buffer_2",
"node_position": {
"x": -404.875,
"y": -116.625
},
"parameters": {
"lod": 0,
"size": 10
},
"type": "buffer"
},
{
"convolution_params": {
"input_type": "rgba",
"matrix_function": "exp(-0.5*(pow(y/sigma, 2.0)))/(6.28318530718 *sigma*sigma)",
"normalized": true,
"output_type": "rgba",
"parameters": [
{
"max": 50,
"min": 0.05,
"name": "sigma",
"type": "float"
}
],
"x": 0,
"y": 50
},
"name": "blurx_convolution_2",
"node_position": {
"x": -407.125,
"y": -44.375
},
"parameters": {
"sigma": 50,
"size": 10
},
"type": "convolution"
},
{
"name": "buffer",
"node_position": {
"x": -408.25,
"y": -265.75
},
"parameters": {
"lod": 0,
"size": 10
},
"type": "buffer"
},
{
"name": "gen_parameters",
"node_position": {
"x": -447.666626,
"y": -370.666656
},
"parameters": {
"param0": 10,
"param1": 50,
"param2": 4.9
},
"type": "remote",
"widgets": [
{
"label": "Grid size:",
"linked_widgets": [
{
"node": "buffer",
"widget": "size"
},
{
"node": "blurx_convolution",
"widget": "size"
},
{
"node": "buffer_2",
"widget": "size"
},
{
"node": "blurx_convolution_2",
"widget": "size"
}
],
"name": "param0",
"type": "linked_control"
},
{
"label": "Strength",
"linked_widgets": [
{
"node": "_2",
"widget": "g"
}
],
"name": "param2",
"type": "linked_control"
}
]
},
{
"name": "gen_inputs",
"node_position": {
"x": -585.666626,
"y": -112.392853
},
"parameters": {
},
"ports": [
{
"name": "port0",
"type": "rgba"
}
],
"type": "ios"
},
{
"name": "gen_outputs",
"node_position": {
"x": 55.547607,
"y": -133.392853
},
"parameters": {
},
"ports": [
{
"name": "port0",
"type": "rgba"
}
],
"type": "ios"
},
{
"name": "blend",
"node_position": {
"x": -420.79895,
"y": 27.16272
},
"parameters": {
"amount": 1,
"blend_type": 11
},
"type": "blend"
},
{
"name": "colorize",
"node_position": {
"x": -167.79895,
"y": -178.83728
},
"parameters": {
"gradient": {
"interpolation": 1,
"points": [
{
"a": 1,
"b": 1,
"g": 1,
"pos": 0,
"r": 1
},
{
"a": 1,
"b": 0,
"g": 0,
"pos": 1,
"r": 0
}
],
"type": "Gradient"
}
},
"type": "colorize"
},
{
"name": "_2",
"node_position": {
"x": -134.403687,
"y": -110.29187
},
"parameters": {
"g": 4.9
},
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"label": "",
"name": "in",
"type": "f"
}
],
"instance": "",
"name": "",
"outputs": [
{
"f": "pow($in($uv), $g)",
"type": "f"
}
],
"parameters": [
{
"default": 1,
"label": "",
"max": 2,
"min": 0,
"name": "g",
"step": 0.1,
"type": "float"
}
]
},
"type": "shader"
}
],
"parameters": {
"param0": 10,
"param1": 50,
"param2": 4.9
},
"type": "graph"
},
{
"name": "decompose",
"node_position": {
"x": -924.371338,
"y": 570.25
},
"parameters": {
},
"type": "decompose"
},
{
"name": "blend_2",
"node_position": {
"x": -931.305542,
"y": 677.328491
},
"parameters": {
"amount": 0,
"blend_type": 4
},
"type": "blend"
},
{
"name": "gen_inputs",
"node_position": {
"x": -1336.805542,
"y": 597.758606
},
"parameters": {
},
"ports": [
{
"name": "Height",
"type": "f"
},
{
"name": "Albedo",
"type": "rgb"
},
{
"name": "ORM",
"type": "rgb"
},
{
"name": "Emission",
"type": "rgb"
},
{
"name": "Normal",
"type": "rgb"
}
],
"type": "ios"
},
{
"name": "gen_outputs",
"node_position": {
"x": -635.305542,
"y": 597.758606
},
"parameters": {
},
"ports": [
{
"name": "Albedo",
"type": "rgb"
},
{
"name": "Metallic",
"type": "f"
},
{
"name": "Roughness",
"type": "f"
},
{
"name": "Emission",
"type": "rgb"
},
{
"name": "Normal",
"type": "rgb"
},
{
"name": "Occlusion",
"type": "f"
},
{
"name": "Depth",
"type": "f"
}
],
"type": "ios"
},
{
"name": "gen_parameters",
"node_position": {
"x": -1100.881836,
"y": 438.25
},
"parameters": {
"param0": 0,
"param1": 10,
"param2": 4.9
},
"type": "remote",
"widgets": [
{
"label": "Occlusion",
"linked_widgets": [
{
"node": "gaussian_blur",
"widget": "param2"
}
],
"name": "param2",
"type": "linked_control"
},
{
"label": "Mat Normal",
"linked_widgets": [
{
"node": "blend_2",
"widget": "amount"
}
],
"name": "param0",
"type": "linked_control"
}
]
},
{
"name": "brightness_contrast",
"node_position": {
"x": -1177.223877,
"y": 677.062317
},
"parameters": {
"brightness": 0,
"contrast": 1,
"steps": 6
},
"type": "brightness_contrast"
},
{
"name": "normal_map_2",
"node_position": {
"x": -1152.5,
"y": 544.75
},
"parameters": {
"amount": 0.5,
"param0": 10,
"param1": 1.02,
"param2": 0,
"param3": 0,
"param4": 1,
"size": 4
},
"type": "normal_map"
}
],
"parameters": {
"param0": 0,
"param1": 10,
"param2": 4.9
},
"type": "graph"
},
{
"name": "uniform_2",
"node_position": {
"x": 415.732727,
"y": 272.369568
},
"parameters": {
"color": {
"a": 1,
"b": 0,
"g": 0.105882,
"r": 1,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "uniform_2_2",
"node_position": {
"x": 408.002197,
"y": 17.994553
},
"parameters": {
"color": {
"a": 1,
"b": 0,
"g": 1,
"r": 1,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "uniform_3",
"node_position": {
"x": 407.463379,
"y": -37.255447
},
"parameters": {
"color": {
"a": 1,
"b": 0.914063,
"g": 0,
"r": 1,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "uniform_2_3_2",
"node_position": {
"x": 413.800964,
"y": 708.119568
},
"parameters": {
"color": {
"a": 1,
"b": 0,
"g": 0.886275,
"r": 1,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "mwf_mix_3",
"node_position": {
"x": 845.760559,
"y": -242.048431
},
"parameters": {
},
"type": "mwf_mix"
},
{
"name": "uniform_greyscale",
"node_position": {
"x": 398.856934,
"y": -337.380432
},
"parameters": {
"color": 0.05
},
"type": "uniform_greyscale"
},
{
"name": "uniform_4",
"node_position": {
"x": 400.856934,
"y": -273.880432
},
"parameters": {
"color": {
"a": 1,
"b": 1,
"g": 0.415686,
"r": 0,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "uniform_4_2",
"node_position": {
"x": 399.718628,
"y": -217.130432
},
"parameters": {
"color": {
"a": 1,
"b": 0,
"g": 1,
"r": 0,
"type": "Color"
}
},
"type": "uniform"
},
{
"name": "perlin",
"node_position": {
"x": 363.92984,
"y": 499.119568
},
"parameters": {
"iterations": 8,
"persistence": 0.95,
"scale_x": 4,
"scale_y": 4
},
"type": "perlin"
},
{
"name": "colorize",
"node_position": {
"x": 378.92981,
"y": 637.119568
},
"parameters": {
"gradient": {
"interpolation": 0,
"points": [
{
"a": 1,
"b": 0.240099,
"g": 0.613979,
"pos": 0,
"r": 0.869792
},
{
"a": 1,
"b": 0.233941,
"g": 0.553521,
"pos": 1,
"r": 0.802083
}
],
"type": "Gradient"
}
},
"type": "colorize"
},
{
"color": {
"a": 1,
"b": 0,
"g": 1,
"r": 0.9375,
"type": "Color"
},
"name": "comment_2",
"node_position": {
"x": 82.468719,
"y": -50.148132
},
"parameters": {
"size": 4
},
"size": {
"x": 255.271576,
"y": 432.232056
},
"text": "",
"title": "Separate colors",
"type": "comment"
},
{
"color": {
"a": 1,
"b": 0,
"g": 1,
"r": 0.09375,
"type": "Color"
},
"name": "comment_2_2",
"node_position": {
"x": 346.962891,
"y": -373.398132
},
"parameters": {
"size": 4
},
"size": {
"x": 464,
"y": 1149
},
"text": "",
"title": "Create maps and materials and combine them",
"type": "comment"
},
{
"color": {
"a": 1,
"b": 1,
"g": 0,
"r": 0.96875,
"type": "Color"
},
"name": "comment_2_2_2",
"node_position": {
"x": 828.579407,
"y": -289.750183
},
"parameters": {
"size": 4
},
"size": {
"x": 743.688171,
"y": 725.975952
},
"text": "",
"title": "Mix the result and generate output",
"type": "comment"
},
{
"name": "mul_detect",
"node_position": {
"x": 90.234436,
"y": -13.032837
},
"parameters": {
"t": 0.01,
"v": 0.31
},
"type": "mul_detect"
},
{
"name": "mul_detect_2",
"node_position": {
"x": 94.964081,
"y": 132.26152
},
"parameters": {
"t": 0.01,
"v": 0.87
},
"type": "mul_detect"
},
{
"name": "mul_detect_2_2",
"node_position": {
"x": 90.964081,
"y": 288.261536
},
"parameters": {
"t": 0.01,
"v": 0.08
},
"type": "mul_detect"
}
],
"parameters": {
},
"type": "graph"
}