{
"version": 1,
"name": "Graph",
"blend_mode": "OPAQUE",
"cull_mode": "BACK",
"nodes": [
{
"id": 1,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
1340.0,
140.0
],
"properties": {},
"expression": "// Subgraph: Mockup\nout0 = in0;\nout1 = vec4(0.5, 0.5, 0.5, 1.0);\nout2 = vec4(0.5, 0.5, 0.5, 1.0);\nout3 = vec4(0.5, 0.5, 0.5, 1.0);\nout4 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
},
{
"name": "out2",
"type": 5
},
{
"name": "out3",
"type": 5
},
{
"name": "out4",
"type": 5
}
]
},
{
"id": 2,
"type": "TILER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6280.0,
1180.0
],
"properties": {},
"expression": "vec3 o2_instance_uv = vec3(0.0);\nvec4 o2_rch = tiler_o2(UV, vec2(12.000000, 12.000000), int(2.000000), o2_instance_uv, vec2(float(36441482.363450)));\nout0 = o2_rch.a;\nout1 = o2_rch.rgb;\nout2 = o2_instance_uv;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
},
{
"name": "mask",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 4
},
{
"name": "out2",
"type": 4
}
]
},
{
"id": 3,
"type": "SPHERE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6500.0,
1180.0
],
"properties": {},
"expression": "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 4,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6700.0,
1320.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(4.000000, 4.000000), int(0.000000), int(4.000000), 0.500000, 0.000000, 9004590.843450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 5,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6480.0,
1320.0
],
"properties": {},
"expression": "vec3 o5_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.530000))/max(0.0001, 0.000000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o5_true = vec3(1.0)-o5_false;\nout0 = vec4(o5_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 6,
"type": "UNIFORM_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5400.0,
120.0
],
"properties": {},
"expression": "out0 = 0.750000;",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 7,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2700.0,
120.0
],
"properties": {},
"expression": "vec4 o7_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o7_l;\nfloat o7_a;\no7_l = vec4(1.0, UV.y, 1.0, 1.0);\no7_a = 0.500000*1.0;\no7_b = vec4(blend_normal(UV, o7_l.rgb, o7_b.rgb, o7_a*o7_l.a), min(1.0, o7_b.a+o7_a*o7_l.a));\n\nout0 = o7_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 8,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5720.0,
1180.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 9,
"type": "QUANTIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5360.0,
1180.0
],
"properties": {},
"expression": "out0 = vec4(floor(vec4(2.0*vec3(length(UV-vec2(0.5))), 1.0).rgb*7.000000)/7.000000, vec4(2.0*vec3(length(UV-vec2(0.5))), 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 10,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5160.0,
1180.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 11,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4480.0,
1180.0
],
"properties": {},
"expression": "vec4 o11_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o11_l;\nfloat o11_a;\no11_l = vec4(1.0, UV.y, 1.0, 1.0);\no11_a = 0.500000*1.0;\no11_b = vec4(blend_normal(UV, o11_l.rgb, o11_b.rgb, o11_a*o11_l.a), min(1.0, o11_b.a+o11_a*o11_l.a));\n\nout0 = o11_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 12,
"type": "MATH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4720.0,
1340.0
],
"properties": {},
"expression": "float o12_clamp_false = 0.000000+0.000000;\nfloat o12_clamp_true = clamp(o12_clamp_false, 0.0, 1.0);\n\nout0 = o12_clamp_true;",
"expression_inputs": [
{
"name": "in1",
"type": 0
},
{
"name": "in2",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 13,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4760.0,
1180.0
],
"properties": {},
"expression": "// Subgraph: Bilateral Filter\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 14,
"type": "GROUP_SMOOTH_CURVATURE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5160.0,
1040.0
],
"properties": {},
"expression": "// Subgraph: smooth_curvature\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 15,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4940.0,
1040.0
],
"properties": {},
"expression": "vec3 o15_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.500000))/max(0.0001, 0.040000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o15_true = vec3(1.0)-o15_false;\nout0 = vec4(o15_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 16,
"type": "GROUP_HBAO",
"godot_class": "VisualShaderNodeExpression",
"position": [
1340.0,
360.0
],
"properties": {},
"expression": "// Subgraph: hbao\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 17,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5720.0,
1000.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 18,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5500.0,
800.0
],
"properties": {},
"expression": "vec3 o18_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.050000))/max(0.0001, 0.030000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o18_true = vec3(1.0)-o18_false;\nout0 = vec4(o18_true, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 19,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3160.0,
120.0
],
"properties": {},
"expression": "vec4 o19_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o19_l;\nfloat o19_a;\no19_l = vec4(1.0, UV.y, 1.0, 1.0);\no19_a = 0.500000*1.0;\no19_b = vec4(blend_normal(UV, o19_l.rgb, o19_b.rgb, o19_a*o19_l.a), min(1.0, o19_b.a+o19_a*o19_l.a));\n\nout0 = o19_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 20,
"type": "GROUP_CRYSTAL",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5500.0,
700.0
],
"properties": {},
"expression": "// Subgraph: crystal\nout0 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 21,
"type": "WARP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5300.0,
740.0
],
"properties": {},
"expression": "vec2 o21_slope = o21_slope(UV, 0.100000);\nvec2 o21_warp = o21_slope;\nout0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_d",
"type": 0
},
{
"name": "strength_map",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 22,
"type": "UNIFORM",
"godot_class": "VisualShaderNodeExpression",
"position": [
-100.0,
-1640.0
],
"properties": {},
"expression": "out0 = vec4(0.295654, 0.314493, 0.437500, 1.000000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 23,
"type": "GROUP_SMOOTH_CURVATURE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-480.0,
-40.0
],
"properties": {},
"expression": "// Subgraph: smooth_curvature\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 24,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-220.0,
-40.0
],
"properties": {},
"expression": "// Subgraph: SmoothCurvatureSplit\nout0 = in0;\nout1 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 25,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
680.0,
-1500.0
],
"properties": {},
"expression": "vec4 o25_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o25_l;\nfloat o25_a;\no25_l = vec4(1.0, UV.y, 1.0, 1.0);\no25_a = 0.500000*1.0;\no25_b = vec4(blend_normal(UV, o25_l.rgb, o25_b.rgb, o25_a*o25_l.a), min(1.0, o25_b.a+o25_a*o25_l.a));\n\nout0 = o25_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 26,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5120.0,
740.0
],
"properties": {},
"expression": "out0 = o26_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 27,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1840.0,
-1480.0
],
"properties": {},
"expression": "vec4 o27_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o27_l;\nfloat o27_a;\no27_l = vec4(1.0, UV.y, 1.0, 1.0);\no27_a = 0.500000*1.0;\no27_b = vec4(blend_dodge(UV, o27_l.rgb, o27_b.rgb, o27_a*o27_l.a), min(1.0, o27_b.a+o27_a*o27_l.a));\no27_l = vec4(1.0, UV.y, 1.0, 1.0);\no27_a = 0.370000*1.0;\no27_b = vec4(blend_burn(UV, o27_l.rgb, o27_b.rgb, o27_a*o27_l.a), min(1.0, o27_b.a+o27_a*o27_l.a));\n\nout0 = o27_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l0",
"type": 5
},
{
"name": "p_l1",
"type": 5
},
{
"name": "p_a0",
"type": 0
},
{
"name": "p_a1",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 28,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-520.0,
-1400.0
],
"properties": {},
"expression": "out0 = o28_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 29,
"type": "MATH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4740.0,
720.0
],
"properties": {},
"expression": "float o29_clamp_false = (1.0-step(0.010000,0.000000));\nfloat o29_clamp_true = clamp(o29_clamp_false, 0.0, 1.0);\n\nout0 = o29_clamp_false;",
"expression_inputs": [
{
"name": "in1",
"type": 0
},
{
"name": "in2",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 30,
"type": "TRANSFORM2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5860.0,
-620.0
],
"properties": {},
"expression": "out0 = vec4(UV, 0.0, 1.0);",
"expression_inputs": [
{
"name": "p_i",
"type": 5
},
{
"name": "p_tx",
"type": 0
},
{
"name": "p_ty",
"type": 0
},
{
"name": "p_r",
"type": 0
},
{
"name": "p_sx",
"type": 0
},
{
"name": "p_sy",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 31,
"type": "WARP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5640.0,
-520.0
],
"properties": {},
"expression": "vec2 o31_slope = o31_slope(UV, 0.100000);\nvec2 o31_warp = o31_slope;\nout0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_d",
"type": 0
},
{
"name": "strength_map",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 32,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5420.0,
-500.0
],
"properties": {},
"expression": "vec4 o32_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o32_l;\nfloat o32_a;\no32_l = vec4(1.0, UV.y, 1.0, 1.0);\no32_a = 0.500000*1.0;\no32_b = vec4(blend_normal(UV, o32_l.rgb, o32_b.rgb, o32_a*o32_l.a), min(1.0, o32_b.a+o32_a*o32_l.a));\n\nout0 = o32_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 33,
"type": "GRADIENT",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5620.0,
-380.0
],
"properties": {},
"expression": "float o33_r = 0.5+(cos((-90.000000)*0.01745329251)*(UV.x-0.5)+sin((-90.000000)*0.01745329251)*(UV.y-0.5))/(cos(abs(mod((-90.000000), 90.0)-45.0)*0.01745329251)*1.41421356237);\nout0 = o33_gradient_gradient_fct(false ? 2.0*(0.5-abs(fract(o33_r*1.000000)-0.5)) : fract(o33_r*1.000000));",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 34,
"type": "SHAPE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6020.0,
-620.0
],
"properties": {},
"expression": "out0 = shape_polygon(UV, 10.000000+1.0e-5, 0.940000*1.0, 0.610000*1.0);",
"expression_inputs": [
{
"name": "radius_map",
"type": 0
},
{
"name": "edge_map",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 35,
"type": "GROUP_CRYSTAL",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5800.0,
-360.0
],
"properties": {},
"expression": "// Subgraph: crystal\nout0 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 36,
"type": "TILER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5180.0,
-500.0
],
"properties": {},
"expression": "vec3 o36_instance_uv = vec3(0.0);\nvec4 o36_rch = tiler_o36(UV, vec2(12.000000, 12.000000), int(4.000000), o36_instance_uv, vec2(float(26399828.603450)));\nout0 = o36_rch.a;\nout1 = o36_rch.rgb;\nout2 = o36_instance_uv;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
},
{
"name": "mask",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 4
},
{
"name": "out2",
"type": 4
}
]
},
{
"id": 37,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4280.0,
120.0
],
"properties": {},
"expression": "vec4 o37_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o37_l;\nfloat o37_a;\no37_l = vec4(1.0, UV.y, 1.0, 1.0);\no37_a = 0.500000*1.0;\no37_b = vec4(blend_normal(UV, o37_l.rgb, o37_b.rgb, o37_a*o37_l.a), min(1.0, o37_b.a+o37_a*o37_l.a));\n\nout0 = o37_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 38,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3520.0,
120.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 39,
"type": "GROUP_CRYSTAL",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5140.0,
-600.0
],
"properties": {},
"expression": "// Subgraph: crystal\nout0 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 40,
"type": "WARP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4920.0,
-520.0
],
"properties": {},
"expression": "vec2 o40_slope = o40_slope(UV, 0.100000);\nvec2 o40_warp = o40_slope;\nout0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_d",
"type": 0
},
{
"name": "strength_map",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 41,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1020.0,
120.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 42,
"type": "TILER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2480.0,
-420.0
],
"properties": {},
"expression": "vec3 o42_instance_uv = vec3(0.0);\nvec4 o42_rch = tiler_o42(UV, vec2(8.000000, 8.000000), int(2.000000), o42_instance_uv, vec2(float(0.123450)));\nout0 = o42_rch.a;\nout1 = o42_rch.rgb;\nout2 = o42_instance_uv;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
},
{
"name": "mask",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 4
},
{
"name": "out2",
"type": 4
}
]
},
{
"id": 43,
"type": "SPHERE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2680.0,
-420.0
],
"properties": {},
"expression": "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 44,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1960.0,
120.0
],
"properties": {},
"expression": "vec4 o44_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o44_l;\nfloat o44_a;\no44_l = vec4(1.0, UV.y, 1.0, 1.0);\no44_a = 0.500000*1.0;\no44_b = vec4(blend_normal(UV, o44_l.rgb, o44_b.rgb, o44_a*o44_l.a), min(1.0, o44_b.a+o44_a*o44_l.a));\n\nout0 = o44_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 45,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2640.0,
-280.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 46,
"type": "SPHERE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2240.0,
1980.0
],
"properties": {},
"expression": "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 47,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2520.0,
1800.0
],
"properties": {},
"expression": "vec3 o47_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.490000))/max(0.0001, 0.000000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o47_true = vec3(1.0)-o47_false;\nout0 = vec4(o47_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 48,
"type": "TILER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2040.0,
1900.0
],
"properties": {},
"expression": "vec3 o48_instance_uv = vec3(0.0);\nvec4 o48_rch = tiler_o48(UV, vec2(12.000000, 12.000000), int(2.000000), o48_instance_uv, vec2(float(36441482.383450)));\nout0 = o48_rch.a;\nout1 = o48_rch.rgb;\nout2 = o48_instance_uv;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
},
{
"name": "mask",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 4
},
{
"name": "out2",
"type": 4
}
]
},
{
"id": 49,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1440.0,
120.0
],
"properties": {},
"expression": "// Subgraph: Lighten\nout0 = in0;\nout1 = in1;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 50,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-2300.0,
1820.0
],
"properties": {},
"expression": "vec4 o50_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o50_l;\nfloat o50_a;\no50_l = vec4(1.0, UV.y, 1.0, 1.0);\no50_a = 0.500000*1.0;\no50_b = vec4(blend_normal(UV, o50_l.rgb, o50_b.rgb, o50_a*o50_l.a), min(1.0, o50_b.a+o50_a*o50_l.a));\n\nout0 = o50_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 51,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1280.0,
-1500.0
],
"properties": {},
"expression": "vec4 o51_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o51_l;\nfloat o51_a;\no51_l = vec4(1.0, UV.y, 1.0, 1.0);\no51_a = 0.500000*1.0;\no51_b = vec4(blend_normal(UV, o51_l.rgb, o51_b.rgb, o51_a*o51_l.a), min(1.0, o51_b.a+o51_a*o51_l.a));\n\nout0 = o51_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 52,
"type": "CUSTOM_UV",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1600.0,
1980.0
],
"properties": {},
"expression": "vec3 o52_map = vec3(1.0);\nfloat o52_rnd = float(0.123450)+o52_map.z;\n\nout0 = vec4(1.0), 0.000000*0.01745329251, 0.000000, vec2(o52_map.z, float(0.123450)))), false ? o52_rnd : 0.0);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "map",
"type": 4
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 53,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
860.0,
-1360.0
],
"properties": {},
"expression": "out0 = o53_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 54,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
-340.0,
-1960.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 55,
"type": "VARIATIONS_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-540.0,
-2020.0
],
"properties": {},
"expression": "out0 = 1.0;\nout1 = 1.0;\nout2 = 1.0;\nout3 = 1.0;\nout4 = 1.0;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 0
},
{
"name": "out2",
"type": 0
},
{
"name": "out3",
"type": 0
},
{
"name": "out4",
"type": 0
}
]
},
{
"id": 56,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-980.0,
-2020.0
],
"properties": {},
"expression": "vec4 o56_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o56_l;\nfloat o56_a;\no56_l = vec4(1.0, UV.y, 1.0, 1.0);\no56_a = 0.500000*1.0;\no56_b = vec4(blend_normal(UV, o56_l.rgb, o56_b.rgb, o56_a*o56_l.a), min(1.0, o56_b.a+o56_a*o56_l.a));\n\nout0 = o56_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 57,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-720.0,
-2020.0
],
"properties": {},
"expression": "vec3 o57_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.360000))/max(0.0001, 0.130000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o57_true = vec3(1.0)-o57_false;\nout0 = vec4(o57_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 58,
"type": "GROUP_DIRT",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1180.0,
-2040.0
],
"properties": {},
"expression": "// Subgraph: dirt\nout0 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 59,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1240.0,
-1900.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 12838328.443450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 60,
"type": "GROUP_ANISOTROPIC_KUWAHARA",
"godot_class": "VisualShaderNodeExpression",
"position": [
-500.0,
-1820.0
],
"properties": {},
"expression": "// Subgraph: anisotropic_kuwahara\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 61,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-720.0,
-1820.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 62,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-940.0,
-1820.0
],
"properties": {},
"expression": "// Subgraph: Plain Grunge\nout0 = vec4(0.5, 0.5, 0.5, 1.0);\nout1 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 63,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-180.0,
-1840.0
],
"properties": {},
"expression": "vec4 o63_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o63_l;\nfloat o63_a;\no63_l = vec4(1.0, UV.y, 1.0, 1.0);\no63_a = 0.760000*1.0;\no63_b = vec4(blend_screen(UV, o63_l.rgb, o63_b.rgb, o63_a*o63_l.a), min(1.0, o63_b.a+o63_a*o63_l.a));\no63_l = vec4(1.0, UV.y, 1.0, 1.0);\no63_a = 0.710000*1.0;\no63_b = vec4(blend_multiply(UV, o63_l.rgb, o63_b.rgb, o63_a*o63_l.a), min(1.0, o63_b.a+o63_a*o63_l.a));\n\nout0 = o63_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l0",
"type": 5
},
{
"name": "p_l1",
"type": 5
},
{
"name": "p_a0",
"type": 0
},
{
"name": "p_a1",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 64,
"type": "ALTER_HSV",
"godot_class": "VisualShaderNodeExpression",
"position": [
160.0,
-1660.0
],
"properties": {},
"expression": "vec4 o64_rbga = vec4(UV.x, UV.y, 0.0, 1.0);\nvec3 o64_hsv = rgb_to_hsv(o64_rbga.rgb);\no64_hsv.x = fract(o64_hsv.x+0.150000*1.000000*(0.5-0.5));\no64_hsv.y = clamp(o64_hsv.y+0.050000*1.000000*(0.5-0.5), 0.0, 1.0);\no64_hsv.z = clamp(o64_hsv.z+0.090000*1.000000*(0.5-0.5), 0.0, 1.0);\n\t\nout0 = vec4(hsv_to_rgb(o64_hsv), o64_rbga.a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "hmap",
"type": 0
},
{
"name": "vmap",
"type": 0
},
{
"name": "smap",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 65,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-220.0,
-160.0
],
"properties": {},
"expression": "// Subgraph: SmoothCurvatureSplit\nout0 = in0;\nout1 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 66,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
400.0,
-1600.0
],
"properties": {},
"expression": "vec4 o66_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o66_l;\nfloat o66_a;\no66_l = vec4(1.0, UV.y, 1.0, 1.0);\no66_a = 0.500000*1.0;\no66_b = vec4(blend_normal(UV, o66_l.rgb, o66_b.rgb, o66_a*o66_l.a), min(1.0, o66_b.a+o66_a*o66_l.a));\n\nout0 = o66_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 67,
"type": "GROUP_SMOOTH_CURVATURE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-480.0,
-160.0
],
"properties": {},
"expression": "// Subgraph: smooth_curvature\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 68,
"type": "UNIFORM_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
1200.0,
-940.0
],
"properties": {},
"expression": "out0 = 0.870000;",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 69,
"type": "UNIFORM_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
820.0,
-880.0
],
"properties": {},
"expression": "out0 = 0.700000;",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 70,
"type": "UNIFORM_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
1080.0,
-660.0
],
"properties": {},
"expression": "out0 = 0.160000;",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 71,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1380.0,
-720.0
],
"properties": {},
"expression": "vec4 o71_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o71_l;\nfloat o71_a;\no71_l = vec4(1.0, UV.y, 1.0, 1.0);\no71_a = 1.000000*1.0;\no71_b = vec4(blend_normal(UV, o71_l.rgb, o71_b.rgb, o71_a*o71_l.a), min(1.0, o71_b.a+o71_a*o71_l.a));\no71_l = vec4(1.0, UV.y, 1.0, 1.0);\no71_a = 1.000000*1.0;\no71_b = vec4(blend_normal(UV, o71_l.rgb, o71_b.rgb, o71_a*o71_l.a), min(1.0, o71_b.a+o71_a*o71_l.a));\no71_l = vec4(1.0, UV.y, 1.0, 1.0);\no71_a = 0.320000*1.0;\no71_b = vec4(blend_overlay(UV, o71_l.rgb, o71_b.rgb, o71_a*o71_l.a), min(1.0, o71_b.a+o71_a*o71_l.a));\no71_l = vec4(1.0, UV.y, 1.0, 1.0);\no71_a = 0.230000*1.0;\no71_b = vec4(blend_overlay(UV, o71_l.rgb, o71_b.rgb, o71_a*o71_l.a), min(1.0, o71_b.a+o71_a*o71_l.a));\n\nout0 = o71_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l0",
"type": 5
},
{
"name": "p_l1",
"type": 5
},
{
"name": "p_l2",
"type": 5
},
{
"name": "p_l3",
"type": 5
},
{
"name": "p_a0",
"type": 0
},
{
"name": "p_a1",
"type": 0
},
{
"name": "p_a2",
"type": 0
},
{
"name": "p_a3",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 72,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
300.0,
-500.0
],
"properties": {},
"expression": "// Subgraph: Plain Grunge\nout0 = vec4(0.5, 0.5, 0.5, 1.0);\nout1 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 73,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
520.0,
-500.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 74,
"type": "GROUP_ANISOTROPIC_KUWAHARA",
"godot_class": "VisualShaderNodeExpression",
"position": [
740.0,
-500.0
],
"properties": {},
"expression": "// Subgraph: anisotropic_kuwahara\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 75,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
0.0,
-580.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 10546592.123450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 76,
"type": "GROUP_DIRT",
"godot_class": "VisualShaderNodeExpression",
"position": [
60.0,
-720.0
],
"properties": {},
"expression": "// Subgraph: dirt\nout0 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 77,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
260.0,
-700.0
],
"properties": {},
"expression": "vec4 o77_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o77_l;\nfloat o77_a;\no77_l = vec4(1.0, UV.y, 1.0, 1.0);\no77_a = 0.500000*1.0;\no77_b = vec4(blend_normal(UV, o77_l.rgb, o77_b.rgb, o77_a*o77_l.a), min(1.0, o77_b.a+o77_a*o77_l.a));\n\nout0 = o77_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 78,
"type": "VARIATIONS_GREYSCALE",
"godot_class": "VisualShaderNodeExpression",
"position": [
700.0,
-700.0
],
"properties": {},
"expression": "out0 = 1.0;\nout1 = 1.0;\nout2 = 1.0;\nout3 = 1.0;\nout4 = 1.0;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 0
},
{
"name": "out2",
"type": 0
},
{
"name": "out3",
"type": 0
},
{
"name": "out4",
"type": 0
}
]
},
{
"id": 79,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
520.0,
-700.0
],
"properties": {},
"expression": "vec3 o79_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.360000))/max(0.0001, 0.130000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o79_true = vec3(1.0)-o79_false;\nout0 = vec4(o79_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 80,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
900.0,
-640.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 81,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1060.0,
-520.0
],
"properties": {},
"expression": "vec4 o81_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o81_l;\nfloat o81_a;\no81_l = vec4(1.0, UV.y, 1.0, 1.0);\no81_a = 0.760000*1.0;\no81_b = vec4(blend_screen(UV, o81_l.rgb, o81_b.rgb, o81_a*o81_l.a), min(1.0, o81_b.a+o81_a*o81_l.a));\no81_l = vec4(1.0, UV.y, 1.0, 1.0);\no81_a = 0.710000*1.0;\no81_b = vec4(blend_multiply(UV, o81_l.rgb, o81_b.rgb, o81_a*o81_l.a), min(1.0, o81_b.a+o81_a*o81_l.a));\n\nout0 = o81_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l0",
"type": 5
},
{
"name": "p_l1",
"type": 5
},
{
"name": "p_a0",
"type": 0
},
{
"name": "p_a1",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 82,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1540.0,
-60.0
],
"properties": {},
"expression": "vec4 o82_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o82_l;\nfloat o82_a;\no82_l = vec4(1.0, UV.y, 1.0, 1.0);\no82_a = 0.500000*1.0;\no82_b = vec4(blend_normal(UV, o82_l.rgb, o82_b.rgb, o82_a*o82_l.a), min(1.0, o82_b.a+o82_a*o82_l.a));\n\nout0 = o82_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 83,
"type": "TRANSFORM2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4700.0,
-760.0
],
"properties": {},
"expression": "out0 = vec4(UV, 0.0, 1.0);",
"expression_inputs": [
{
"name": "p_i",
"type": 5
},
{
"name": "p_tx",
"type": 0
},
{
"name": "p_ty",
"type": 0
},
{
"name": "p_r",
"type": 0
},
{
"name": "p_sx",
"type": 0
},
{
"name": "p_sy",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 84,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4000.0,
120.0
],
"properties": {},
"expression": "vec4 o84_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o84_l;\nfloat o84_a;\no84_l = vec4(1.0, UV.y, 1.0, 1.0);\no84_a = 0.500000*1.0;\no84_b = vec4(blend_normal(UV, o84_l.rgb, o84_b.rgb, o84_a*o84_l.a), min(1.0, o84_b.a+o84_a*o84_l.a));\n\nout0 = o84_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 85,
"type": "SHARPEN",
"godot_class": "VisualShaderNodeExpression",
"position": [
1840.0,
-700.0
],
"properties": {},
"expression": "out0 = o85_fct(UV);",
"expression_inputs": [
{
"name": "p_in",
"type": 4
}
],
"expression_outputs": [
{
"name": "out0",
"type": 4
}
]
},
{
"id": 86,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
1640.0,
-700.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 87,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5360.0,
1400.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 88,
"type": "GROUP_MULTI_WARP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5080.0,
1340.0
],
"properties": {},
"expression": "// Subgraph: multi_warp\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 89,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3980.0,
960.0
],
"properties": {},
"expression": "// Subgraph: SmoothCurvatureSplit\nout0 = in0;\nout1 = vec4(0.5, 0.5, 0.5, 1.0);",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
},
{
"name": "out1",
"type": 5
}
]
},
{
"id": 90,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3680.0,
1060.0
],
"properties": {},
"expression": "vec4 o90_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o90_l;\nfloat o90_a;\no90_l = vec4(1.0, UV.y, 1.0, 1.0);\no90_a = 0.500000*1.0;\no90_b = vec4(blend_normal(UV, o90_l.rgb, o90_b.rgb, o90_a*o90_l.a), min(1.0, o90_b.a+o90_a*o90_l.a));\n\nout0 = o90_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 91,
"type": "GROUP_SMOOTH_CURVATURE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4200.0,
960.0
],
"properties": {},
"expression": "// Subgraph: smooth_curvature\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 92,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4100.0,
1140.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 0.123450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 93,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3880.0,
1140.0
],
"properties": {},
"expression": "vec3 o93_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.500000))/max(0.0001, 0.100000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o93_true = vec3(1.0)-o93_false;\nout0 = vec4(o93_false, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 94,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
980.0,
-1500.0
],
"properties": {},
"expression": "vec4 o94_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o94_l;\nfloat o94_a;\no94_l = vec4(1.0, UV.y, 1.0, 1.0);\no94_a = 0.500000*1.0;\no94_b = vec4(blend_normal(UV, o94_l.rgb, o94_b.rgb, o94_a*o94_l.a), min(1.0, o94_b.a+o94_a*o94_l.a));\n\nout0 = o94_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 95,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
720.0,
-1200.0
],
"properties": {},
"expression": "out0 = o95_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 96,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
1680.0,
-1300.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 97,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6300.0,
940.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(16.000000, 16.000000), int(0.000000), int(1.000000), 0.500000, 0.000000, 0.123450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 98,
"type": "WARP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-6000.0,
1200.0
],
"properties": {},
"expression": "vec2 o98_slope = o98_slope(UV, 0.100000);\nvec2 o98_warp = o98_slope;\nout0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_d",
"type": 0
},
{
"name": "strength_map",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 99,
"type": "FBM3",
"godot_class": "VisualShaderNodeExpression",
"position": [
-5120.0,
1540.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 100,
"type": "REMAP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4880.0,
1540.0
],
"properties": {},
"expression": "float o100_x = 0.0*((-0.150000)-(-0.020000));\nout0 = (-0.020000)+o100_x-mod(o100_x, max(0.000000, 0.00000001));",
"expression_inputs": [
{
"name": "p_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 101,
"type": "TILER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3620.0,
1440.0
],
"properties": {},
"expression": "vec3 o101_instance_uv = vec3(0.0);\nvec4 o101_rch = tiler_o101(UV, vec2(20.000000, 20.000000), int(2.000000), o101_instance_uv, vec2(float(9962693.243450)));\nout0 = o101_rch.a;\nout1 = o101_rch.rgb;\nout2 = o101_instance_uv;",
"expression_inputs": [
{
"name": "p_in",
"type": 0
},
{
"name": "mask",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
},
{
"name": "out1",
"type": 4
},
{
"name": "out2",
"type": 4
}
]
},
{
"id": 102,
"type": "TONES_STEP",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4260.0,
1620.0
],
"properties": {},
"expression": "vec3 o102_false = clamp((vec4(0.5 ,0.5, 0.5, 1.0).rgb-vec3(0.950000))/max(0.0001, 0.000000)+vec3(0.5), vec3(0.0), vec3(1.0));\nvec3 o102_true = vec3(1.0)-o102_false;\nout0 = vec4(o102_true, vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 103,
"type": "SPHERE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3920.0,
1600.0
],
"properties": {},
"expression": "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 104,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3420.0,
1080.0
],
"properties": {},
"expression": "vec4 o104_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o104_l;\nfloat o104_a;\no104_l = vec4(1.0, UV.y, 1.0, 1.0);\no104_a = 0.500000*1.0;\no104_b = vec4(blend_normal(UV, o104_l.rgb, o104_b.rgb, o104_a*o104_l.a), min(1.0, o104_b.a+o104_a*o104_l.a));\n\nout0 = o104_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 105,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3960.0,
1440.0
],
"properties": {},
"expression": "vec4 o105_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o105_l;\nfloat o105_a;\no105_l = vec4(1.0, UV.y, 1.0, 1.0);\no105_a = 0.500000*1.0;\no105_b = vec4(blend_normal(UV, o105_l.rgb, o105_b.rgb, o105_a*o105_l.a), min(1.0, o105_b.a+o105_a*o105_l.a));\n\nout0 = o105_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 106,
"type": "MATH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4260.0,
1440.0
],
"properties": {},
"expression": "float o106_clamp_false = 0.000000+0.050000;\nfloat o106_clamp_true = clamp(o106_clamp_false, 0.0, 1.0);\n\nout0 = o106_clamp_true;",
"expression_inputs": [
{
"name": "in1",
"type": 0
},
{
"name": "in2",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 107,
"type": "FBM2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-800.0,
1520.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(2.000000, 2.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 18860313.723450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 108,
"type": "GROUP_NORMAL_MAP2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-540.0,
1520.0
],
"properties": {},
"expression": "// Subgraph: normal_map2\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 109,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-460.0,
1440.0
],
"properties": {},
"expression": "out0 = rot2Dnm(0.0, 90.000000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 110,
"type": "FBM2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1260.0,
1440.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(3.000000, 3.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 31919142.523450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 111,
"type": "FBM2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1340.0,
1180.0
],
"properties": {},
"expression": "out0 = old_fbm_2d_perlin(UV, vec2(5.000000, 5.000000), int(0.000000), int(5.000000), 0.500000, 0.000000, 20966927.483450);",
"expression_inputs": [
{
"name": "offset_in",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 112,
"type": "GROUP_NORMAL_MAP2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1020.0,
1460.0
],
"properties": {},
"expression": "// Subgraph: normal_map2\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 113,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-940.0,
1360.0
],
"properties": {},
"expression": "out0 = rot2Dnm(0.0, 90.000000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 114,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
480.0,
1240.0
],
"properties": {},
"expression": "out0 = o114_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 115,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-840.0,
1180.0
],
"properties": {},
"expression": "out0 = o115_func(UV, 4.000000, 0.230000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_nm",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 116,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-440.0,
1240.0
],
"properties": {},
"expression": "out0 = o116_func(UV, 3.000000, 0.894000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_nm",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 117,
"type": "GROUP_DENOISER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-120.0,
1220.0
],
"properties": {},
"expression": "// Subgraph: denoiser\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 118,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
180.0,
1240.0
],
"properties": {},
"expression": "out0 = o118_func(UV, 3.000000, 0.072000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
},
{
"name": "p_nm",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 119,
"type": "SHADER",
"godot_class": "VisualShaderNodeExpression",
"position": [
80.0,
1500.0
],
"properties": {},
"expression": "out0 = rot2Dnm(0.0, 111.900000);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 120,
"type": "GROUP_NORMAL_MAP2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-100.0,
1600.0
],
"properties": {},
"expression": "// Subgraph: normal_map2\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 121,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-380.0,
1780.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 122,
"type": "GROUP_AUTO_TONES",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1760.0,
1860.0
],
"properties": {},
"expression": "// Subgraph: auto_tones\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 123,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1540.0,
-1500.0
],
"properties": {},
"expression": "vec4 o123_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o123_l;\nfloat o123_a;\no123_l = vec4(1.0, UV.y, 1.0, 1.0);\no123_a = 0.500000*1.0;\no123_b = vec4(blend_normal(UV, o123_l.rgb, o123_b.rgb, o123_a*o123_l.a), min(1.0, o123_b.a+o123_a*o123_l.a));\n\nout0 = o123_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 124,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-280.0,
460.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 125,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
1080.0,
-840.0
],
"properties": {},
"expression": "vec4 o125_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o125_l;\nfloat o125_a;\no125_l = vec4(1.0, UV.y, 1.0, 1.0);\no125_a = 0.500000*1.0;\no125_b = vec4(blend_normal(UV, o125_l.rgb, o125_b.rgb, o125_a*o125_l.a), min(1.0, o125_b.a+o125_a*o125_l.a));\n\nout0 = o125_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 126,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
-3120.0,
1080.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 127,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
1160.0,
-340.0
],
"properties": {},
"expression": "out0 = o127_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 128,
"type": "BRIGHTNESS_CONTRAST",
"godot_class": "VisualShaderNodeExpression",
"position": [
-200.0,
80.0
],
"properties": {},
"expression": "out0 = vec4(clamp(vec4(0.5 ,0.5, 0.5, 1.0).rgb*1.790000+vec3(0.000000)+0.5-1.790000*0.5, vec3(0.0), vec3(1.0)), vec4(0.5 ,0.5, 0.5, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 129,
"type": "INVERT",
"godot_class": "VisualShaderNodeExpression",
"position": [
60.0,
80.0
],
"properties": {},
"expression": "out0 = vec4(vec3(1.0)-vec4(1.0, 1.0, 1.0, 1.0).rgb, vec4(1.0, 1.0, 1.0, 1.0).a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 130,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4320.0,
720.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 131,
"type": "COLORIZE",
"godot_class": "VisualShaderNodeExpression",
"position": [
-520.0,
-1300.0
],
"properties": {},
"expression": "out0 = o131_gradient_gradient_fct(UV.x);",
"expression_inputs": [
{
"name": "input",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 132,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
-320.0,
-1400.0
],
"properties": {},
"expression": "vec4 o132_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o132_l;\nfloat o132_a;\no132_l = vec4(1.0, UV.y, 1.0, 1.0);\no132_a = 0.500000*1.0;\no132_b = vec4(blend_normal(UV, o132_l.rgb, o132_b.rgb, o132_a*o132_l.a), min(1.0, o132_b.a+o132_a*o132_l.a));\n\nout0 = o132_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 133,
"type": "MATH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-4080.0,
720.0
],
"properties": {},
"expression": "float o133_clamp_false = pow(0.000000,2.000000);\nfloat o133_clamp_true = clamp(o133_clamp_false, 0.0, 1.0);\n\nout0 = o133_clamp_true;",
"expression_inputs": [
{
"name": "in1",
"type": 0
},
{
"name": "in2",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 0
}
]
},
{
"id": 134,
"type": "ADJUST_HSV",
"godot_class": "VisualShaderNodeExpression",
"position": [
-80.0,
-1400.0
],
"properties": {},
"expression": "vec4 o134_rbga = vec4(UV.x, UV.y, 0.0, 1.0);\nvec3 o134_hsv = rgb_to_hsv(o134_rbga.rgb);\no134_hsv.x += (-0.007816);\no134_hsv.y = clamp(o134_hsv.y*1.000000, 0.0, 1.0);\no134_hsv.z = clamp(o134_hsv.z*1.000000, 0.0, 1.0);\n\t\nout0 = vec4(hsv_to_rgb(o134_hsv), o134_rbga.a);",
"expression_inputs": [
{
"name": "p_in",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 135,
"type": "BLEND2",
"godot_class": "VisualShaderNodeExpression",
"position": [
220.0,
-1400.0
],
"properties": {},
"expression": "vec4 o135_b = vec4(UV.x, 1.0, 1.0, 1.0);\nvec4 o135_l;\nfloat o135_a;\no135_l = vec4(1.0, UV.y, 1.0, 1.0);\no135_a = 0.500000*1.0;\no135_b = vec4(blend_normal(UV, o135_l.rgb, o135_b.rgb, o135_a*o135_l.a), min(1.0, o135_b.a+o135_a*o135_l.a));\n\nout0 = o135_b;",
"expression_inputs": [
{
"name": "p_b",
"type": 5
},
{
"name": "p_l",
"type": 5
},
{
"name": "p_a",
"type": 0
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 136,
"type": "GROUP_GRAPH",
"godot_class": "VisualShaderNodeExpression",
"position": [
-280.0,
-1120.0
],
"properties": {},
"expression": "// Subgraph: Gaussian Blur HQ\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
},
{
"name": "in1",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 137,
"type": "GROUP_AUTO_TONES",
"godot_class": "VisualShaderNodeExpression",
"position": [
-40.0,
-1120.0
],
"properties": {},
"expression": "// Subgraph: auto_tones\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 138,
"type": "UNIFORM",
"godot_class": "VisualShaderNodeExpression",
"position": [
-60.2273597717285,
-1212.27893066406
],
"properties": {},
"expression": "out0 = vec4(0.154129, 0.270299, 0.433594, 1.000000);",
"expression_inputs": [],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 139,
"type": "BUFFER",
"godot_class": "VisualShaderNodeExpression",
"position": [
-1720.0,
120.0
],
"properties": {},
"expression": "// Buffer pass-through\nout0 = in0;",
"expression_inputs": [
{
"name": "in0",
"type": 5
}
],
"expression_outputs": [
{
"name": "out0",
"type": 5
}
]
},
{
"id": 140,
"type": "MM_GLOBALS",
"godot_class": "VisualShaderNodeGlobalExpression",
"position": [
-1000,
-500
],
"properties": {},
"expression": "float rand(vec2 x) {\n return fract(cos(mod(dot(x, vec2(13.9898, 8.141)), 3.14)) * 43758.5453);\n}\nvec2 rand2(vec2 x) {\n return fract(cos(mod(vec2(dot(x, vec2(13.9898, 8.141)),\n dot(x, vec2(3.4562, 17.398))), vec2(3.14))) * 43758.5453);\n}\nvec3 rand3(vec2 x) {\n return fract(cos(mod(vec3(dot(x, vec2(13.9898, 8.141)),\n dot(x, vec2(3.4562, 17.398)),\n dot(x, vec2(13.254, 8.976))), vec3(3.14))) * 43758.5453);\n}\n\n\nvec2 get_from_tileset(float count, float seed, vec2 uv) {\n\treturn clamp((uv+floor(rand2(vec2(seed))*count))/count, vec2(0.0), vec2(1.0));\n}\n\nvec2 old_custom_uv_transform(vec2 uv, vec2 cst_scale, float rnd_rotate, float rnd_scale, vec2 seed) {\n\tseed = rand2(seed);\n\tuv -= vec2(0.5);\n\tfloat angle = (seed.x * 2.0 - 1.0) * rnd_rotate;\n\tfloat ca = cos(angle);\n\tfloat sa = sin(angle);\n\tuv = vec2(ca*uv.x+sa*uv.y, -sa*uv.x+ca*uv.y);\n\tuv *= (seed.y-0.5)*2.0*rnd_scale+1.0;\n\tuv /= cst_scale;\n\tuv += vec2(0.5);\n\treturn uv;\n}\n\n\nvec4 tiler_o2(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\trc1 = rand3(seed);\n\t\t\tvec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));\n\t\t\tpos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;\n\t\t\tfloat mask = 1.0;\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*0.560000+1.0;\n\t\t\t\tpv /= vec2(0.080000, 0.080000);\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tvec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\tif (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 full_uv = pv;\n\t\t\t\tpv = get_from_tileset( 1.0, seed.x, pv);\n\t\t\t\tfloat c1 = 0.0*mask*(1.0-1.000000*seed.x);\n\t\t\t\tc = max(c, c1);\n\t\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t\t\tinstance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n\nfloat sphere(vec2 uv, vec2 c, float r) {\n\tuv -= c;\n\tuv /= r;\n\treturn 2.0*r*sqrt(max(0.0, 1.0-dot(uv, uv)));\n}\n\n\nfloat old_value_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat p00 = rand(mod(o, size));\n\tfloat p01 = rand(mod(o + vec2(0.0, 1.0), size));\n\tfloat p10 = rand(mod(o + vec2(1.0, 0.0), size));\n\tfloat p11 = rand(mod(o + vec2(1.0, 1.0), size));\n\tp00 = sin(p00 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;\n\tp01 = sin(p01 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;\n\tp10 = sin(p10 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;\n\tp11 = sin(p11 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;\n\tvec2 t = f * f * f * (f * (f * 6.0 - 15.0) + 10.0);\n\treturn mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);\n}\n\nfloat old_fbm_2d_value(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_value_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_perlin_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat a00 = rand(mod(o, size)) * 6.28318530718 + offset * 6.28318530718;\n\tfloat a01 = rand(mod(o + vec2(0.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;\n\tfloat a10 = rand(mod(o + vec2(1.0, 0.0), size)) * 6.28318530718 + offset * 6.28318530718;\n\tfloat a11 = rand(mod(o + vec2(1.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;\n\tvec2 v00 = vec2(cos(a00), sin(a00));\n\tvec2 v01 = vec2(cos(a01), sin(a01));\n\tvec2 v10 = vec2(cos(a10), sin(a10));\n\tvec2 v11 = vec2(cos(a11), sin(a11));\n\tfloat p00 = dot(v00, f);\n\tfloat p01 = dot(v01, f - vec2(0.0, 1.0));\n\tfloat p10 = dot(v10, f - vec2(1.0, 0.0));\n\tfloat p11 = dot(v11, f - vec2(1.0, 1.0));\n\tvec2 t = f * f * f * (f * (f * 6.0 - 15.0) + 10.0);\n\treturn 0.5 + mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);\n}\n\nfloat old_fbm_2d_perlin(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_perlin_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_perlinabs_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\treturn abs(2.0*old_perlin_noise_2d(coord, size, offset, seed)-1.0);\n}\n\nfloat old_fbm_2d_perlinabs(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_perlinabs_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_fbm_2d_mod289(float x) {\n\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nfloat old_fbm_2d_permute(float x) {\n\treturn old_fbm_2d_mod289(((x * 34.0) + 1.0) * x);\n}\n\nvec2 old_fbm_2d_rgrad2(vec2 p, float rot, float seed) {\n\tfloat u = old_fbm_2d_permute(old_fbm_2d_permute(p.x) + p.y) * 0.0243902439 + rot; // Rotate by shift\n\tu = fract(u+seed) * 6.28318530718; // 2*pi\n\treturn vec2(cos(u), sin(u));\n}\n\nfloat old_simplex_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tcoord *= 2.0; // needed for it to tile\n\tcoord += rand2(vec2(seed, 1.0-seed)) + size;\n\tsize *= 2.0; // needed for it to tile\n\tcoord.y += 0.001;\n\tvec2 uv = vec2(coord.x + coord.y*0.5, coord.y);\n\tvec2 i0 = floor(uv);\n\tvec2 f0 = fract(uv);\n\tvec2 i1 = (f0.x > f0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n\tvec2 p0 = vec2(i0.x - i0.y * 0.5, i0.y);\n\tvec2 p1 = vec2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y);\n\tvec2 p2 = vec2(p0.x + 0.5, p0.y + 1.0);\n\ti1 = i0 + i1;\n\tvec2 i2 = i0 + vec2(1.0, 1.0);\n\tvec2 d0 = coord - p0;\n\tvec2 d1 = coord - p1;\n\tvec2 d2 = coord - p2;\n\tvec3 xw = mod(vec3(p0.x, p1.x, p2.x), size.x);\n\tvec3 yw = mod(vec3(p0.y, p1.y, p2.y), size.y);\n\tvec3 iuw = xw + 0.5 * yw;\n\tvec3 ivw = yw;\n\tvec2 g0 = old_fbm_2d_rgrad2(vec2(iuw.x, ivw.x), offset, seed);\n\tvec2 g1 = old_fbm_2d_rgrad2(vec2(iuw.y, ivw.y), offset, seed);\n\tvec2 g2 = old_fbm_2d_rgrad2(vec2(iuw.z, ivw.z), offset, seed);\n\tvec3 w = vec3(dot(g0, d0), dot(g1, d1), dot(g2, d2));\n\tvec3 t = 0.8 - vec3(dot(d0, d0), dot(d1, d1), dot(d2, d2));\n\tt = max(t, vec3(0.0));\n\tvec3 t2 = t * t;\n\tvec3 t4 = t2 * t2;\n\tfloat n = dot(t4, w);\n\treturn 0.5 + 5.5 * n;\n}\n\nfloat old_fbm_2d_simplex(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_simplex_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718 * node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = length(diff);\n\t\t\tmin_dist = min(min_dist, dist);\n\t\t}\n\t}\n\treturn min_dist;\n}\n\nfloat old_fbm_2d_cellular(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular2_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist1 = 2.0;\n\tfloat min_dist2 = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = length(diff);\n\t\t\tif (min_dist1 > dist) {\n\t\t\t\tmin_dist2 = min_dist1;\n\t\t\t\tmin_dist1 = dist;\n\t\t\t} else if (min_dist2 > dist) {\n\t\t\t\tmin_dist2 = dist;\n\t\t\t}\n\t\t}\n\t}\n\treturn min_dist2-min_dist1;\n}\n\nfloat old_fbm_2d_cellular2(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular2_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular3_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = abs((diff).x) + abs((diff).y);\n\t\t\tmin_dist = min(min_dist, dist);\n\t\t}\n\t}\n\treturn min_dist;\n}\n\nfloat old_fbm_2d_cellular3(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular3_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular4_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist1 = 2.0;\n\tfloat min_dist2 = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = abs((diff).x) + abs((diff).y);\n\t\t\tif (min_dist1 > dist) {\n\t\t\t\tmin_dist2 = min_dist1;\n\t\t\t\tmin_dist1 = dist;\n\t\t\t} else if (min_dist2 > dist) {\n\t\t\t\tmin_dist2 = dist;\n\t\t\t}\n\t\t}\n\t}\n\treturn min_dist2-min_dist1;\n}\n\nfloat old_fbm_2d_cellular4(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular4_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular5_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.5 * sin(offset * 6.28318530718 + 6.28318530718*node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = max(abs((diff).x), abs((diff).y));\n\t\t\tmin_dist = min(min_dist, dist);\n\t\t}\n\t}\n\treturn min_dist;\n}\n\nfloat old_fbm_2d_cellular5(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular5_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat old_cellular6_noise_2d(vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;\n\tvec2 f = fract(coord);\n\tfloat min_dist1 = 2.0;\n\tfloat min_dist2 = 2.0;\n\tfor(float x = -1.0; x <= 1.0; x++) {\n\t\tfor(float y = -1.0; y <= 1.0; y++) {\n\t\t\tvec2 neighbor = vec2(float(x),float(y));\n\t\t\tvec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);\n\t\t\tnode = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);\n\t\t\tvec2 diff = neighbor + node - f;\n\t\t\tfloat dist = max(abs((diff).x), abs((diff).y));\n\t\t\tif (min_dist1 > dist) {\n\t\t\t\tmin_dist2 = min_dist1;\n\t\t\t\tmin_dist1 = dist;\n\t\t\t} else if (min_dist2 > dist) {\n\t\t\t\tmin_dist2 = dist;\n\t\t\t}\n\t\t}\n\t}\n\treturn min_dist2-min_dist1;\n}\n\nfloat old_fbm_2d_cellular6(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_cellular6_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\n// MIT License Inigo Quilez - https://www.shadertoy.com/view/Xd23Dh\nfloat old_voronoise_noise_2d( vec2 coord, vec2 size, float offset, float seed) {\n\tvec2 i = floor(coord) + rand2(vec2(seed, 1.0-seed)) + size;\n\tvec2 f = fract(coord);\n\t\n\tvec2 a = vec2(0.0);\n\t\n\tfor( int y=-2; y<=2; y++ ) {\n\t\tfor( int x=-2; x<=2; x++ ) {\n\t\t\tvec2 g = vec2( float(x), float(y) );\n\t\t\tvec3 o = rand3( mod(i + g, size) + vec2(seed) );\n\t\t\to.xy += 0.25 * sin(offset * 6.28318530718 + 6.28318530718*o.xy);\n\t\t\tvec2 d = g - f + o.xy;\n\t\t\tfloat w = pow( 1.0-smoothstep(0.0, 1.414, length(d)), 1.0 );\n\t\t\ta += vec2(o.z*w,w);\n\t\t}\n\t}\n\t\n\treturn a.x/a.y;\n}\n\nfloat old_fbm_2d_voronoise(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfor (int i = 0; i < octaves; i++) {\n\t\tfloat noise = old_voronoise_noise_2d(coord*size, size, offset, seed+float(i));\n\t\tfor (int f = 0; f < folds; ++f) {\n\t\t\tnoise = abs(2.0*noise-1.0);\n\t\t}\n\t\tvalue += noise * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\n\nvec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1 + (1.0-opacity)*c2;\n}\n\nvec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tif (rand(uv) < opacity) {\n\t\treturn c1;\n\t} else {\n\t\treturn c2;\n\t}\n}\n\nvec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1*c2 + (1.0-opacity)*c2;\n}\n\nvec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n}\n\nfloat blend_overlay_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n}\n\nvec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_overlay_f(c1.x, c2.x), blend_overlay_f(c1.y, c2.y), blend_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;\n}\n\nfloat blend_soft_light_f(float c1, float c2) {\n\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n}\n\nvec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_soft_light_f(c1.x, c2.x), blend_soft_light_f(c1.y, c2.y), blend_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_burn_f(float c1, float c2) {\n\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n}\n\nvec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_burn_f(c1.x, c2.x), blend_burn_f(c1.y, c2.y), blend_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_dodge_f(float c1, float c2) {\n\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n}\n\nvec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_dodge_f(c1.x, c2.x), blend_dodge_f(c1.y, c2.y), blend_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_additive(vec2 uv, vec3 c1, vec3 c2, float oppacity) {\n\treturn c2 + c1 * oppacity;\n}\n\nvec3 blend_addsub(vec2 uv, vec3 c1, vec3 c2, float oppacity) {\n\treturn c2 + (c1 - .5) * 2.0 * oppacity;\n}\n\nvec3 rgb_to_hsv(vec3 c) {\n\tvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n\tvec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\n\tvec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\n\n\tfloat d = q.x - min(q.w, q.y);\n\tfloat e = 1.0e-10;\n\treturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n\nvec3 hsv_to_rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\nfloat blend_linear_light_f(float c1, float c2) {\n\treturn (c1 + 2.0 * c2) - 1.0;\n}\n\nvec3 blend_linear_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\nreturn opacity*vec3(blend_linear_light_f(c1.x, c2.x), blend_linear_light_f(c1.y, c2.y), blend_linear_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_vivid_light_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? 1.0 - (1.0 - c2) / (2.0 * c1) : c2 / (2.0 * (1.0 - c1));\n}\n\nvec3 blend_vivid_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_vivid_light_f(c1.x, c2.x), blend_vivid_light_f(c1.y, c2.y), blend_vivid_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_pin_light_f( float c1, float c2) {\n\treturn (2.0 * c1 - 1.0 > c2) ? 2.0 * c1 - 1.0 : ((c1 < 0.5 * c2) ? 2.0 * c1 : c2);\n}\n\nvec3 blend_pin_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_pin_light_f(c1.x, c2.x), blend_pin_light_f(c1.y, c2.y), blend_pin_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_hard_mix_f(float c1, float c2) {\n\treturn floor(c1 + c2);\n}\n\nvec3 blend_hard_mix(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\t\treturn opacity*vec3(blend_hard_mix_f(c1.x, c2.x), blend_hard_mix_f(c1.y, c2.y), blend_hard_mix_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_exclusion_f(float c1, float c2) {\n\treturn c1 + c2 - 2.0 * c1 * c2;\n}\n\nvec3 blend_exclusion(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_exclusion_f(c1.x, c2.x), blend_exclusion_f(c1.y, c2.y), blend_exclusion_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_hue(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tvec3 outcol = c2;\n\n\tvec3 hsv, hsv2, tmp;\n\thsv2 = rgb_to_hsv(c1);\n\n\tif (hsv2.y != 0.0) {\n\t\thsv = rgb_to_hsv(outcol);\n\t\thsv.x = hsv2.x;\n\t\ttmp = hsv_to_rgb(hsv);\n\t\toutcol = mix(outcol, tmp, opacity);\n\t}\n\treturn outcol;\n}\n\nvec3 blend_saturation(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tfloat facm = 1.0 - opacity;\n\n\tvec3 outcol = c2;\n\tvec3 hsv, hsv2;\n\n\thsv = rgb_to_hsv(outcol);\n\n\tif (hsv.y != 0.0) {\n\t\thsv2 = rgb_to_hsv(c1);\n\n\t\thsv.y = facm * hsv.y + opacity * hsv2.y;\n\t\toutcol = hsv_to_rgb(hsv);\n\t}\n\treturn outcol;\n}\n\nvec3 blend_color(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tfloat facm = 1.0 - opacity;\n\n\tvec3 outcol = c2;\n\n\tvec3 hsv, hsv2, tmp;\n\thsv2 = rgb_to_hsv(c1);\n\n\tif (hsv2.y != 0.0) {\n\t\thsv = rgb_to_hsv(outcol);\n\t\thsv.x = hsv2.x;\n\t\thsv.y = hsv2.y;\n\t\ttmp = hsv_to_rgb(hsv);\n\n\t\toutcol = mix(outcol, tmp, opacity);\n\t}\n\treturn outcol;\n}\n\nvec3 blend_value(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tfloat facm = 1.0 - opacity;\n\n\tvec3 hsv, hsv2;\n\thsv = rgb_to_hsv(c2);\n\thsv2 = rgb_to_hsv(c1);\n\n\thsv.z = facm * hsv.z + opacity * hsv2.z;\n\treturn hsv_to_rgb(hsv);\n}\n\nfloat pingpong(float a, float b)\n{\n return (b != 0.0) ? abs(fract((a - b) / (b * 2.0)) * b * 2.0 - b) : 0.0;\n}\n\nvec2 o21_slope(vec2 uv, float epsilon) {\n\treturn vec2(0.0-0.0, 0.0-0.0);\n}\n\nvec4 o26_gradient_gradient_fct(float x) {\n if (x < 0.000000000) {\n return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);\n } else if (x < 0.302719325) {\n return mix(vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000), vec4(0.613281250, 0.613281250, 0.613281250, 1.000000000), (x - 0.000000000) / (0.302719325 - 0.000000000));\n } else if (x < 1.000000000) {\n return mix(vec4(0.613281250, 0.613281250, 0.613281250, 1.000000000), vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000), (x - 0.302719325) / (1.000000000 - 0.302719325));\n }\n return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);\n}\n\n\nvec4 o28_gradient_gradient_fct(float x) {\n if (x < 0.000000000) {\n return vec4(0.309326172, 0.222656250, 0.500000000, 1.000000000);\n } else if (x < 0.826773866) {\n return mix(vec4(0.309326172, 0.222656250, 0.500000000, 1.000000000), vec4(0.409725666, 0.319152832, 0.492187500, 1.000000000), (x - 0.000000000) / (0.826773866 - 0.000000000));\n }\n return vec4(0.409725666, 0.319152832, 0.492187500, 1.000000000);\n}\n\n\nvec2 transform2_clamp(vec2 uv) {\n\treturn clamp(uv, vec2(0.0), vec2(1.0));\n}\n\nvec2 transform2(vec2 uv, vec2 translate, float rotate, vec2 scale) {\n \tvec2 rv;\n\tuv -= translate;\n\tuv -= vec2(0.5);\n\trv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;\n\trv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;\n\trv /= scale;\n\trv += vec2(0.5);\n\treturn rv;\t\n}\n\nvec2 o31_slope(vec2 uv, float epsilon) {\n\treturn vec2(0.0-0.0, 0.0-0.0);\n}\n\nvec4 o33_gradient_gradient_fct(float x) {\n if (x < 0.130474854) {\n return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);\n } else if (x < 1.000000000) {\n return mix(vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000), vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000), (x - 0.130474854) / (1.000000000 - 0.130474854));\n }\n return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);\n}\n\n\nfloat shape_circle(vec2 uv, float sides, float size, float edge) {\n\tuv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n\tfloat distance = length(uv);\n\treturn clamp((1.0-distance/size)/edge, 0.0, 1.0);\n}\n\nfloat shape_polygon(vec2 uv, float sides, float size, float edge) {\n\tuv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n\tfloat angle = atan(uv.x, uv.y)+3.14159265359;\n\tfloat slice = 6.28318530718/sides;\n\treturn clamp((1.0-(cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/size)/edge, 0.0, 1.0);\n}\n\nfloat shape_star(vec2 uv, float sides, float size, float edge) {\n\tuv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n\tfloat angle = atan(uv.x, uv.y);\n\tfloat slice = 6.28318530718/sides;\n\treturn clamp((1.0-(cos(floor(angle*sides/6.28318530718-0.5+2.0*step(fract(angle*sides/6.28318530718), 0.5))*slice-angle)*length(uv))/size)/edge, 0.0, 1.0);\n}\n\nfloat shape_curved_star(vec2 uv, float sides, float size, float edge) {\n\tuv = 2.0*uv-1.0;\n\tedge = max(edge, 1.0e-8);\n\tfloat angle = 2.0*(atan(uv.x, uv.y)+3.14159265359);\n\tfloat slice = 6.28318530718/sides;\n\treturn clamp((1.0-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv)/size)/edge, 0.0, 1.0);\n}\n\nfloat shape_rays(vec2 uv, float sides, float size, float edge) {\n\tuv = 2.0*uv-1.0;\n\tedge = 0.5*max(edge, 1.0e-8)*size;\n\tfloat slice = 6.28318530718/sides;\n\tfloat angle = mod(atan(uv.x, uv.y)+3.14159265359, slice)/slice;\n\treturn clamp(min((size-angle)/edge, angle/edge), 0.0, 1.0);\n}\n\n\n\nvec4 tiler_o36(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\trc1 = rand3(seed);\n\t\t\tvec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));\n\t\t\tpos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;\n\t\t\tfloat mask = 1.0;\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * 118.100000 * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*0.510000+1.0;\n\t\t\t\tpv /= vec2(0.390000, 0.390000);\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tvec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\tif (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 full_uv = pv;\n\t\t\t\tpv = get_from_tileset( 1.0, seed.x, pv);\n\t\t\t\tfloat c1 = 0.0*mask*(1.0-1.000000*seed.x);\n\t\t\t\tc = max(c, c1);\n\t\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t\t\tinstance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n\nvec2 o40_slope(vec2 uv, float epsilon) {\n\treturn vec2(0.0-0.0, 0.0-0.0);\n}\n\nvec4 tiler_o42(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\trc1 = rand3(seed);\n\t\t\tvec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));\n\t\t\tpos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;\n\t\t\tfloat mask = 1.0;\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*0.520000+1.0;\n\t\t\t\tpv /= vec2(0.007000, 0.006000);\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tvec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\tif (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 full_uv = pv;\n\t\t\t\tpv = get_from_tileset( 1.0, seed.x, pv);\n\t\t\t\tfloat c1 = 0.0*mask*(1.0-1.000000*seed.x);\n\t\t\t\tc = max(c, c1);\n\t\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t\t\tinstance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n\nvec4 tiler_o48(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\trc1 = rand3(seed);\n\t\t\tvec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));\n\t\t\tpos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;\n\t\t\tfloat mask = 1.0;\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*0.250000+1.0;\n\t\t\t\tpv /= vec2(0.060000, 0.060000);\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tvec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\tif (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 full_uv = pv;\n\t\t\t\tpv = get_from_tileset( 1.0, seed.x, pv);\n\t\t\t\tfloat c1 = 0.0*mask*(1.0-0.000000*seed.x);\n\t\t\t\tc = max(c, c1);\n\t\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t\t\tinstance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n\nvec4 o53_gradient_gradient_fct(float x) {\n if (x < 0.477490569) {\n return vec4(0.566558838, 0.646175146, 0.917968750, 1.000000000);\n } else if (x < 0.890109964) {\n return mix(vec4(0.566558838, 0.646175146, 0.917968750, 1.000000000), vec4(0.237335205, 0.328392029, 0.601562500, 1.000000000), (x - 0.477490569) / (0.890109964 - 0.477490569));\n }\n return vec4(0.237335205, 0.328392029, 0.601562500, 1.000000000);\n}\n\n\nvec3 o85_fct(vec2 uv) {\n\tvec2 e = vec2(1.0/2048.0, 0.0);\n\tvec3 rv = 5.0*vec3(0.0);\n\trv -= vec3(0.0);\n\trv -= vec3(0.0);\n\trv -= vec3(0.0);\n\trv -= vec3(0.0);\n\treturn rv;\n}\n\nvec4 o95_gradient_gradient_fct(float x) {\n if (x < 0.000000000) {\n return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);\n } else if (x < 0.606387622) {\n return mix(vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000), vec4(0.664062500, 0.352783203, 0.564355850, 1.000000000), (x - 0.000000000) / (0.606387622 - 0.000000000));\n }\n return vec4(0.664062500, 0.352783203, 0.564355850, 1.000000000);\n}\n\n\nvec2 o98_slope(vec2 uv, float epsilon) {\n\treturn vec2(0.0-0.0, 0.0-0.0);\n}\n\nvec4 tiler_o101(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {\n\tfloat c = 0.0;\n\tvec3 rc = vec3(0.0);\n\tvec3 rc1;\n\tfor (int dx = -overlap; dx <= overlap; ++dx) {\n\t\tfor (int dy = -overlap; dy <= overlap; ++dy) {\n\t\t\tvec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);\n\t\t\tvec2 seed = rand2(pos+_seed);\n\t\t\trc1 = rand3(seed);\n\t\t\tvec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));\n\t\t\tpos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;\n\t\t\tfloat mask = 1.0;\n\t\t\tif (mask > 0.01) {\n\t\t\t\tvec2 pv = fract(uv - pos)-vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tfloat angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;\n\t\t\t\tfloat ca = cos(angle);\n\t\t\t\tfloat sa = sin(angle);\n\t\t\t\tpv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);\n\t\t\t\tpv *= (seed.y-0.5)*2.0*0.350000+1.0;\n\t\t\t\tpv /= vec2(0.020000, 0.020000);\n\t\t\t\tpv += vec2(0.5);\n\t\t\t\tseed = rand2(seed);\n\t\t\t\tvec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));\n\t\t\t\tif (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvec2 full_uv = pv;\n\t\t\t\tpv = get_from_tileset( 1.0, seed.x, pv);\n\t\t\t\tfloat c1 = 0.0*mask*(1.0-0.310000*seed.x);\n\t\t\t\tc = max(c, c1);\n\t\t\t\trc = mix(rc, rc1, step(c, c1));\n\t\t\t\tinstance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));\n\t\t\t}\n\t\t}\n\t}\n\treturn vec4(rc, c);\n}\n\nvec4 o114_gradient_gradient_fct(float x) {\n if (x < 0.499287435) {\n return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);\n } else if (x < 0.725315251) {\n return mix(vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000), vec4(0.316009998, 0.742187977, 0.582370996, 1.000000000), (x - 0.499287435) / (0.725315251 - 0.499287435));\n } else if (x < 0.932951993) {\n return mix(vec4(0.316009998, 0.742187977, 0.582370996, 1.000000000), vec4(0.363281012, 1.000000000, 0.985077024, 1.000000000), (x - 0.725315251) / (0.932951993 - 0.725315251));\n }\n return vec4(0.363281012, 1.000000000, 0.985077024, 1.000000000);\n}\n\n\nvec4 o127_gradient_gradient_fct(float x) {\n if (x < 0.000000000) {\n return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);\n } else if (x < 1.000000000) {\n return mix(vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000), vec4(0.433593750, 0.433593750, 0.433593750, 1.000000000), (x - 0.000000000) / (1.000000000 - 0.000000000));\n }\n return vec4(0.433593750, 0.433593750, 0.433593750, 1.000000000);\n}\n\n\nvec4 o131_gradient_gradient_fct(float x) {\n if (x < 0.280668076) {\n return vec4(0.763210058, 0.754547119, 0.839843750, 1.000000000);\n } else if (x < 0.717816078) {\n return mix(vec4(0.763210058, 0.754547119, 0.839843750, 1.000000000), vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000), (x - 0.280668076) / (0.717816078 - 0.280668076));\n }\n return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);\n}\n",
"expression_inputs": [],
"expression_outputs": []
}
],
"connections": [
{
"from_node": 1,
"from_port": 2,
"to_node": 0,
"to_port": 9
},
{
"from_node": 4,
"from_port": 0,
"to_node": 5,
"to_port": 0
},
{
"from_node": 3,
"from_port": 0,
"to_node": 2,
"to_port": 0
},
{
"from_node": 5,
"from_port": 0,
"to_node": 2,
"to_port": 1
},
{
"from_node": 9,
"from_port": 0,
"to_node": 10,
"to_port": 0
},
{
"from_node": 12,
"from_port": 0,
"to_node": 11,
"to_port": 1
},
{
"from_node": 10,
"from_port": 0,
"to_node": 13,
"to_port": 0
},
{
"from_node": 13,
"from_port": 0,
"to_node": 11,
"to_port": 0
},
{
"from_node": 9,
"from_port": 0,
"to_node": 14,
"to_port": 0
},
{
"from_node": 14,
"from_port": 0,
"to_node": 15,
"to_port": 0
},
{
"from_node": 15,
"from_port": 0,
"to_node": 13,
"to_port": 1
},
{
"from_node": 16,
"from_port": 0,
"to_node": 0,
"to_port": 6
},
{
"from_node": 17,
"from_port": 0,
"to_node": 18,
"to_port": 0
},
{
"from_node": 19,
"from_port": 0,
"to_node": 7,
"to_port": 0
},
{
"from_node": 20,
"from_port": 0,
"to_node": 21,
"to_port": 1
},
{
"from_node": 18,
"from_port": 0,
"to_node": 21,
"to_port": 0
},
{
"from_node": 21,
"from_port": 0,
"to_node": 26,
"to_port": 0
},
{
"from_node": 23,
"from_port": 0,
"to_node": 24,
"to_port": 0
},
{
"from_node": 24,
"from_port": 0,
"to_node": 27,
"to_port": 1
},
{
"from_node": 24,
"from_port": 1,
"to_node": 27,
"to_port": 3
},
{
"from_node": 27,
"from_port": 0,
"to_node": 0,
"to_port": 0
},
{
"from_node": 35,
"from_port": 0,
"to_node": 31,
"to_port": 1
},
{
"from_node": 31,
"from_port": 0,
"to_node": 32,
"to_port": 0
},
{
"from_node": 33,
"from_port": 0,
"to_node": 32,
"to_port": 1
},
{
"from_node": 32,
"from_port": 0,
"to_node": 36,
"to_port": 0
},
{
"from_node": 34,
"from_port": 0,
"to_node": 30,
"to_port": 0
},
{
"from_node": 30,
"from_port": 0,
"to_node": 31,
"to_port": 0
},
{
"from_node": 6,
"from_port": 0,
"to_node": 37,
"to_port": 0
},
{
"from_node": 29,
"from_port": 0,
"to_node": 38,
"to_port": 1
},
{
"from_node": 36,
"from_port": 0,
"to_node": 40,
"to_port": 0
},
{
"from_node": 39,
"from_port": 0,
"to_node": 40,
"to_port": 1
},
{
"from_node": 40,
"from_port": 0,
"to_node": 37,
"to_port": 1
},
{
"from_node": 38,
"from_port": 0,
"to_node": 19,
"to_port": 0
},
{
"from_node": 41,
"from_port": 0,
"to_node": 23,
"to_port": 0
},
{
"from_node": 41,
"from_port": 0,
"to_node": 28,
"to_port": 0
},
{
"from_node": 43,
"from_port": 0,
"to_node": 42,
"to_port": 0
},
{
"from_node": 7,
"from_port": 0,
"to_node": 44,
"to_port": 0
},
{
"from_node": 42,
"from_port": 0,
"to_node": 44,
"to_port": 1
},
{
"from_node": 29,
"from_port": 0,
"to_node": 45,
"to_port": 0
},
{
"from_node": 45,
"from_port": 0,
"to_node": 42,
"to_port": 1
},
{
"from_node": 46,
"from_port": 0,
"to_node": 48,
"to_port": 0
},
{
"from_node": 49,
"from_port": 0,
"to_node": 41,
"to_port": 0
},
{
"from_node": 48,
"from_port": 0,
"to_node": 49,
"to_port": 1
},
{
"from_node": 47,
"from_port": 0,
"to_node": 50,
"to_port": 0
},
{
"from_node": 7,
"from_port": 0,
"to_node": 50,
"to_port": 1
},
{
"from_node": 50,
"from_port": 0,
"to_node": 48,
"to_port": 1
},
{
"from_node": 48,
"from_port": 2,
"to_node": 52,
"to_port": 1
},
{
"from_node": 46,
"from_port": 0,
"to_node": 52,
"to_port": 0
},
{
"from_node": 52,
"from_port": 0,
"to_node": 53,
"to_port": 0
},
{
"from_node": 53,
"from_port": 0,
"to_node": 51,
"to_port": 1
},
{
"from_node": 62,
"from_port": 0,
"to_node": 61,
"to_port": 0
},
{
"from_node": 61,
"from_port": 0,
"to_node": 60,
"to_port": 0
},
{
"from_node": 58,
"from_port": 0,
"to_node": 56,
"to_port": 0
},
{
"from_node": 59,
"from_port": 0,
"to_node": 56,
"to_port": 1
},
{
"from_node": 60,
"from_port": 0,
"to_node": 63,
"to_port": 0
},
{
"from_node": 56,
"from_port": 0,
"to_node": 57,
"to_port": 0
},
{
"from_node": 57,
"from_port": 0,
"to_node": 55,
"to_port": 0
},
{
"from_node": 55,
"from_port": 0,
"to_node": 63,
"to_port": 1
},
{
"from_node": 55,
"from_port": 1,
"to_node": 54,
"to_port": 0
},
{
"from_node": 54,
"from_port": 0,
"to_node": 63,
"to_port": 3
},
{
"from_node": 63,
"from_port": 0,
"to_node": 64,
"to_port": 1
},
{
"from_node": 63,
"from_port": 0,
"to_node": 64,
"to_port": 2
},
{
"from_node": 63,
"from_port": 0,
"to_node": 64,
"to_port": 3
},
{
"from_node": 22,
"from_port": 0,
"to_node": 64,
"to_port": 0
},
{
"from_node": 64,
"from_port": 0,
"to_node": 66,
"to_port": 0
},
{
"from_node": 65,
"from_port": 0,
"to_node": 66,
"to_port": 1
},
{
"from_node": 66,
"from_port": 0,
"to_node": 25,
"to_port": 0
},
{
"from_node": 40,
"from_port": 0,
"to_node": 67,
"to_port": 0
},
{
"from_node": 67,
"from_port": 0,
"to_node": 65,
"to_port": 0
},
{
"from_node": 72,
"from_port": 0,
"to_node": 73,
"to_port": 0
},
{
"from_node": 73,
"from_port": 0,
"to_node": 74,
"to_port": 0
},
{
"from_node": 76,
"from_port": 0,
"to_node": 77,
"to_port": 0
},
{
"from_node": 75,
"from_port": 0,
"to_node": 77,
"to_port": 1
},
{
"from_node": 74,
"from_port": 0,
"to_node": 81,
"to_port": 0
},
{
"from_node": 77,
"from_port": 0,
"to_node": 79,
"to_port": 0
},
{
"from_node": 79,
"from_port": 0,
"to_node": 78,
"to_port": 0
},
{
"from_node": 78,
"from_port": 0,
"to_node": 81,
"to_port": 1
},
{
"from_node": 78,
"from_port": 1,
"to_node": 80,
"to_port": 0
},
{
"from_node": 80,
"from_port": 0,
"to_node": 81,
"to_port": 3
},
{
"from_node": 68,
"from_port": 0,
"to_node": 71,
"to_port": 0
},
{
"from_node": 70,
"from_port": 0,
"to_node": 71,
"to_port": 3
},
{
"from_node": 81,
"from_port": 0,
"to_node": 71,
"to_port": 5
},
{
"from_node": 27,
"from_port": 0,
"to_node": 82,
"to_port": 1
},
{
"from_node": 82,
"from_port": 0,
"to_node": 0,
"to_port": 5
},
{
"from_node": 49,
"from_port": 1,
"to_node": 51,
"to_port": 2
},
{
"from_node": 40,
"from_port": 0,
"to_node": 83,
"to_port": 0
},
{
"from_node": 37,
"from_port": 0,
"to_node": 84,
"to_port": 0
},
{
"from_node": 83,
"from_port": 0,
"to_node": 84,
"to_port": 1
},
{
"from_node": 84,
"from_port": 0,
"to_node": 38,
"to_port": 0
},
{
"from_node": 86,
"from_port": 0,
"to_node": 85,
"to_port": 0
},
{
"from_node": 85,
"from_port": 0,
"to_node": 0,
"to_port": 3
},
{
"from_node": 87,
"from_port": 0,
"to_node": 88,
"to_port": 1
},
{
"from_node": 91,
"from_port": 0,
"to_node": 89,
"to_port": 0
},
{
"from_node": 89,
"from_port": 1,
"to_node": 90,
"to_port": 1
},
{
"from_node": 92,
"from_port": 0,
"to_node": 93,
"to_port": 0
},
{
"from_node": 93,
"from_port": 0,
"to_node": 90,
"to_port": 2
},
{
"from_node": 29,
"from_port": 0,
"to_node": 25,
"to_port": 2
},
{
"from_node": 24,
"from_port": 0,
"to_node": 95,
"to_port": 0
},
{
"from_node": 95,
"from_port": 0,
"to_node": 94,
"to_port": 1
},
{
"from_node": 96,
"from_port": 0,
"to_node": 27,
"to_port": 2
},
{
"from_node": 88,
"from_port": 0,
"to_node": 12,
"to_port": 0
},
{
"from_node": 97,
"from_port": 0,
"to_node": 98,
"to_port": 1
},
{
"from_node": 2,
"from_port": 0,
"to_node": 98,
"to_port": 0
},
{
"from_node": 8,
"from_port": 0,
"to_node": 9,
"to_port": 0
},
{
"from_node": 8,
"from_port": 0,
"to_node": 88,
"to_port": 0
},
{
"from_node": 98,
"from_port": 0,
"to_node": 17,
"to_port": 0
},
{
"from_node": 98,
"from_port": 0,
"to_node": 8,
"to_port": 0
},
{
"from_node": 99,
"from_port": 0,
"to_node": 100,
"to_port": 0
},
{
"from_node": 100,
"from_port": 0,
"to_node": 12,
"to_port": 1
},
{
"from_node": 11,
"from_port": 0,
"to_node": 91,
"to_port": 0
},
{
"from_node": 11,
"from_port": 0,
"to_node": 90,
"to_port": 0
},
{
"from_node": 11,
"from_port": 0,
"to_node": 47,
"to_port": 0
},
{
"from_node": 89,
"from_port": 1,
"to_node": 102,
"to_port": 0
},
{
"from_node": 90,
"from_port": 0,
"to_node": 104,
"to_port": 0
},
{
"from_node": 101,
"from_port": 0,
"to_node": 104,
"to_port": 1
},
{
"from_node": 104,
"from_port": 0,
"to_node": 7,
"to_port": 1
},
{
"from_node": 102,
"from_port": 0,
"to_node": 105,
"to_port": 1
},
{
"from_node": 103,
"from_port": 0,
"to_node": 101,
"to_port": 0
},
{
"from_node": 90,
"from_port": 0,
"to_node": 106,
"to_port": 0
},
{
"from_node": 106,
"from_port": 0,
"to_node": 105,
"to_port": 0
},
{
"from_node": 105,
"from_port": 0,
"to_node": 101,
"to_port": 1
},
{
"from_node": 29,
"from_port": 0,
"to_node": 7,
"to_port": 2
},
{
"from_node": 26,
"from_port": 0,
"to_node": 19,
"to_port": 1
},
{
"from_node": 26,
"from_port": 0,
"to_node": 29,
"to_port": 0
},
{
"from_node": 110,
"from_port": 0,
"to_node": 112,
"to_port": 0
},
{
"from_node": 112,
"from_port": 0,
"to_node": 113,
"to_port": 0
},
{
"from_node": 113,
"from_port": 0,
"to_node": 115,
"to_port": 1
},
{
"from_node": 111,
"from_port": 0,
"to_node": 115,
"to_port": 0
},
{
"from_node": 107,
"from_port": 0,
"to_node": 108,
"to_port": 0
},
{
"from_node": 108,
"from_port": 0,
"to_node": 109,
"to_port": 0
},
{
"from_node": 109,
"from_port": 0,
"to_node": 116,
"to_port": 1
},
{
"from_node": 115,
"from_port": 0,
"to_node": 116,
"to_port": 0
},
{
"from_node": 116,
"from_port": 0,
"to_node": 117,
"to_port": 0
},
{
"from_node": 120,
"from_port": 0,
"to_node": 119,
"to_port": 0
},
{
"from_node": 117,
"from_port": 0,
"to_node": 118,
"to_port": 0
},
{
"from_node": 119,
"from_port": 0,
"to_node": 118,
"to_port": 1
},
{
"from_node": 122,
"from_port": 0,
"to_node": 121,
"to_port": 0
},
{
"from_node": 121,
"from_port": 0,
"to_node": 120,
"to_port": 0
},
{
"from_node": 118,
"from_port": 0,
"to_node": 114,
"to_port": 0
},
{
"from_node": 48,
"from_port": 0,
"to_node": 122,
"to_port": 0
},
{
"from_node": 51,
"from_port": 0,
"to_node": 123,
"to_port": 0
},
{
"from_node": 49,
"from_port": 1,
"to_node": 123,
"to_port": 2
},
{
"from_node": 114,
"from_port": 0,
"to_node": 123,
"to_port": 1
},
{
"from_node": 49,
"from_port": 1,
"to_node": 124,
"to_port": 0
},
{
"from_node": 69,
"from_port": 0,
"to_node": 125,
"to_port": 0
},
{
"from_node": 104,
"from_port": 0,
"to_node": 126,
"to_port": 0
},
{
"from_node": 126,
"from_port": 0,
"to_node": 125,
"to_port": 1
},
{
"from_node": 125,
"from_port": 0,
"to_node": 71,
"to_port": 1
},
{
"from_node": 29,
"from_port": 0,
"to_node": 71,
"to_port": 2
},
{
"from_node": 29,
"from_port": 0,
"to_node": 127,
"to_port": 0
},
{
"from_node": 127,
"from_port": 0,
"to_node": 71,
"to_port": 6
},
{
"from_node": 23,
"from_port": 0,
"to_node": 128,
"to_port": 0
},
{
"from_node": 128,
"from_port": 0,
"to_node": 129,
"to_port": 0
},
{
"from_node": 71,
"from_port": 0,
"to_node": 86,
"to_port": 0
},
{
"from_node": 129,
"from_port": 0,
"to_node": 71,
"to_port": 7
},
{
"from_node": 29,
"from_port": 0,
"to_node": 130,
"to_port": 0
},
{
"from_node": 28,
"from_port": 0,
"to_node": 132,
"to_port": 0
},
{
"from_node": 131,
"from_port": 0,
"to_node": 132,
"to_port": 1
},
{
"from_node": 25,
"from_port": 0,
"to_node": 94,
"to_port": 0
},
{
"from_node": 123,
"from_port": 0,
"to_node": 27,
"to_port": 0
},
{
"from_node": 94,
"from_port": 0,
"to_node": 51,
"to_port": 0
},
{
"from_node": 133,
"from_port": 0,
"to_node": 131,
"to_port": 0
},
{
"from_node": 130,
"from_port": 0,
"to_node": 133,
"to_port": 0
},
{
"from_node": 132,
"from_port": 0,
"to_node": 134,
"to_port": 0
},
{
"from_node": 134,
"from_port": 0,
"to_node": 135,
"to_port": 0
},
{
"from_node": 135,
"from_port": 0,
"to_node": 25,
"to_port": 1
},
{
"from_node": 49,
"from_port": 1,
"to_node": 136,
"to_port": 0
},
{
"from_node": 136,
"from_port": 0,
"to_node": 137,
"to_port": 0
},
{
"from_node": 137,
"from_port": 0,
"to_node": 135,
"to_port": 2
},
{
"from_node": 138,
"from_port": 0,
"to_node": 135,
"to_port": 1
},
{
"from_node": 44,
"from_port": 0,
"to_node": 139,
"to_port": 0
},
{
"from_node": 139,
"from_port": 0,
"to_node": 49,
"to_port": 0
},
{
"from_node": 29,
"from_port": 0,
"to_node": 94,
"to_port": 2
},
{
"from_node": 29,
"from_port": 0,
"to_node": 96,
"to_port": 0
},
{
"from_node": 49,
"from_port": 1,
"to_node": 82,
"to_port": 0
},
{
"from_node": 49,
"from_port": 1,
"to_node": 71,
"to_port": 4
},
{
"from_node": 41,
"from_port": 0,
"to_node": 1,
"to_port": 0
},
{
"from_node": 41,
"from_port": 0,
"to_node": 16,
"to_port": 0
}
],
"output_mapping": {
"Normal": 9,
"AO": 6,
"Base Color": 0,
"Emission Color": 5,
"Roughness": 3
},
"output_defaults": {
"0": [
1.0,
1.0,
1.0
],
"2": 0.0,
"3": 1.0,
"5": 0.2
},
"images": {},
"node_groups": {}
}