OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-tps / materials / infected_rock.tres

3982 lines · tres ref:
[gd_resource type="ShaderMaterial" format=3 uid="uid://bqhpqbiuws21d"]

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_dlkfh"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_d5jlj"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_sypkh"]
expression = "float o100_x = 0.0*((-0.150000)-(-0.020000));
out0 = (-0.020000)+o100_x-mod(o100_x, max(0.000000, 0.00000001));"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_yub2l"]
expression = "vec3 o101_instance_uv = vec3(0.0);
vec4 o101_rch = tiler_o101(UV, vec2(20.000000, 20.000000), int(2.000000), o101_instance_uv, vec2(float(9962693.243450)));
out0 = o101_rch.a;
out1 = o101_rch.rgb;
out2 = o101_instance_uv;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_tpolr"]
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));
vec3 o102_true = vec3(1.0)-o102_false;
out0 = vec4(o102_true, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_81c6q"]
expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_2vqal"]
expression = "vec4 o104_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o104_l;
float o104_a;
o104_l = vec4(1.0, UV.y, 1.0, 1.0);
o104_a = 0.500000*1.0;
o104_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));

out0 = o104_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ipvtl"]
expression = "vec4 o105_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o105_l;
float o105_a;
o105_l = vec4(1.0, UV.y, 1.0, 1.0);
o105_a = 0.500000*1.0;
o105_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));

out0 = o105_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_nrs2s"]
expression = "float o106_clamp_false = 0.000000+0.050000;
float o106_clamp_true = clamp(o106_clamp_false, 0.0, 1.0);

out0 = o106_clamp_true;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_xsmsg"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(2.000000, 2.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 18860313.723450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_3sbnf"]
expression = "// Subgraph: normal_map2
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_tdoj1"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_du8ya"]
expression = "out0 = rot2Dnm(0.0, 90.000000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_imn8q"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(3.000000, 3.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 31919142.523450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_im5r3"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(5.000000, 5.000000), int(0.000000), int(5.000000), 0.500000, 0.000000, 20966927.483450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_3vtvw"]
expression = "// Subgraph: normal_map2
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_jpvrh"]
expression = "out0 = rot2Dnm(0.0, 90.000000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_l53wr"]
expression = "out0 = o114_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5c8ff"]
expression = "out0 = o115_func(UV, 4.000000, 0.230000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ibjnm"]
expression = "out0 = o116_func(UV, 3.000000, 0.894000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_3oef2"]
expression = "// Subgraph: denoiser
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_kpp7i"]
expression = "out0 = o118_func(UV, 3.000000, 0.072000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_xitfv"]
expression = "vec4 o11_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o11_l;
float o11_a;
o11_l = vec4(1.0, UV.y, 1.0, 1.0);
o11_a = 0.500000*1.0;
o11_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));

out0 = o11_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5213t"]
expression = "out0 = rot2Dnm(0.0, 111.900000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_p1ccc"]
expression = "// Subgraph: normal_map2
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_bxcso"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6ph8k"]
expression = "// Subgraph: auto_tones
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_e7m0w"]
expression = "vec4 o123_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o123_l;
float o123_a;
o123_l = vec4(1.0, UV.y, 1.0, 1.0);
o123_a = 0.500000*1.0;
o123_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));

out0 = o123_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_hmubd"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_4kj7t"]
expression = "vec4 o125_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o125_l;
float o125_a;
o125_l = vec4(1.0, UV.y, 1.0, 1.0);
o125_a = 0.500000*1.0;
o125_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));

out0 = o125_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_vwi2u"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_q20hv"]
expression = "out0 = o127_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_c1lbb"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_yanf6"]
expression = "float o12_clamp_false = 0.000000+0.000000;
float o12_clamp_true = clamp(o12_clamp_false, 0.0, 1.0);

out0 = o12_clamp_true;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_lgbjq"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_yrghc"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_dpwim"]
expression = "out0 = o131_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_dmiji"]
expression = "vec4 o132_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o132_l;
float o132_a;
o132_l = vec4(1.0, UV.y, 1.0, 1.0);
o132_a = 0.500000*1.0;
o132_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));

out0 = o132_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_lpls0"]
expression = "float o133_clamp_false = pow(0.000000,2.000000);
float o133_clamp_true = clamp(o133_clamp_false, 0.0, 1.0);

out0 = o133_clamp_true;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_g74rd"]
expression = "vec4 o134_rbga = vec4(UV.x, UV.y, 0.0, 1.0);
vec3 o134_hsv = rgb_to_hsv(o134_rbga.rgb);
o134_hsv.x += (-0.007816);
o134_hsv.y = clamp(o134_hsv.y*1.000000, 0.0, 1.0);
o134_hsv.z = clamp(o134_hsv.z*1.000000, 0.0, 1.0);
	
out0 = vec4(hsv_to_rgb(o134_hsv), o134_rbga.a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_pnw38"]
expression = "vec4 o135_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o135_l;
float o135_a;
o135_l = vec4(1.0, UV.y, 1.0, 1.0);
o135_a = 0.500000*1.0;
o135_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));

out0 = o135_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_aag3n"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5lt7j"]
expression = "// Subgraph: auto_tones
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_febhn"]
expression = "out0 = vec4(0.154129, 0.270299, 0.433594, 1.000000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_vrvp1"]
expression = "// Subgraph: Bilateral Filter
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_lanyr"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeGlobalExpression" id="VisualShaderNodeGlobalExpression_lc8i5"]
expression = "float rand(vec2 x) {
    return fract(cos(mod(dot(x, vec2(13.9898, 8.141)), 3.14)) * 43758.5453);
}
vec2 rand2(vec2 x) {
    return fract(cos(mod(vec2(dot(x, vec2(13.9898, 8.141)),
        dot(x, vec2(3.4562, 17.398))), vec2(3.14))) * 43758.5453);
}
vec3 rand3(vec2 x) {
    return fract(cos(mod(vec3(dot(x, vec2(13.9898, 8.141)),
        dot(x, vec2(3.4562, 17.398)),
        dot(x, vec2(13.254, 8.976))), vec3(3.14))) * 43758.5453);
}


vec2 get_from_tileset(float count, float seed, vec2 uv) {
	return clamp((uv+floor(rand2(vec2(seed))*count))/count, vec2(0.0), vec2(1.0));
}

vec2 old_custom_uv_transform(vec2 uv, vec2 cst_scale, float rnd_rotate, float rnd_scale, vec2 seed) {
	seed = rand2(seed);
	uv -= vec2(0.5);
	float angle = (seed.x * 2.0 - 1.0) * rnd_rotate;
	float ca = cos(angle);
	float sa = sin(angle);
	uv = vec2(ca*uv.x+sa*uv.y, -sa*uv.x+ca*uv.y);
	uv *= (seed.y-0.5)*2.0*rnd_scale+1.0;
	uv /= cst_scale;
	uv += vec2(0.5);
	return uv;
}


vec4 tiler_o2(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.560000+1.0;
				pv /= vec2(0.080000, 0.080000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

float sphere(vec2 uv, vec2 c, float r) {
	uv -= c;
	uv /= r;
	return 2.0*r*sqrt(max(0.0, 1.0-dot(uv, uv)));
}


float old_value_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float p00 = rand(mod(o, size));
	float p01 = rand(mod(o + vec2(0.0, 1.0), size));
	float p10 = rand(mod(o + vec2(1.0, 0.0), size));
	float p11 = rand(mod(o + vec2(1.0, 1.0), size));
	p00 = sin(p00 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p01 = sin(p01 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p10 = sin(p10 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p11 = sin(p11 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	vec2 t =  f * f * f * (f * (f * 6.0 - 15.0) + 10.0);
	return mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);
}

float old_fbm_2d_value(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_value_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_perlin_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float a00 = rand(mod(o, size)) * 6.28318530718 + offset * 6.28318530718;
	float a01 = rand(mod(o + vec2(0.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;
	float a10 = rand(mod(o + vec2(1.0, 0.0), size)) * 6.28318530718 + offset * 6.28318530718;
	float a11 = rand(mod(o + vec2(1.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;
	vec2 v00 = vec2(cos(a00), sin(a00));
	vec2 v01 = vec2(cos(a01), sin(a01));
	vec2 v10 = vec2(cos(a10), sin(a10));
	vec2 v11 = vec2(cos(a11), sin(a11));
	float p00 = dot(v00, f);
	float p01 = dot(v01, f - vec2(0.0, 1.0));
	float p10 = dot(v10, f - vec2(1.0, 0.0));
	float p11 = dot(v11, f - vec2(1.0, 1.0));
	vec2 t =  f * f * f * (f * (f * 6.0 - 15.0) + 10.0);
	return 0.5 + mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);
}

float old_fbm_2d_perlin(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_perlin_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_perlinabs_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	return abs(2.0*old_perlin_noise_2d(coord, size, offset, seed)-1.0);
}

float old_fbm_2d_perlinabs(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_perlinabs_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_fbm_2d_mod289(float x) {
	return x - floor(x * (1.0 / 289.0)) * 289.0;
}

float old_fbm_2d_permute(float x) {
	return old_fbm_2d_mod289(((x * 34.0) + 1.0) * x);
}

vec2 old_fbm_2d_rgrad2(vec2 p, float rot, float seed) {
	float u = old_fbm_2d_permute(old_fbm_2d_permute(p.x) + p.y) * 0.0243902439 + rot; // Rotate by shift
	u = fract(u+seed) * 6.28318530718; // 2*pi
	return vec2(cos(u), sin(u));
}

float old_simplex_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	coord *= 2.0; // needed for it to tile
	coord += rand2(vec2(seed, 1.0-seed)) + size;
	size *= 2.0; // needed for it to tile
	coord.y += 0.001;
	vec2 uv = vec2(coord.x + coord.y*0.5, coord.y);
	vec2 i0 = floor(uv);
	vec2 f0 = fract(uv);
	vec2 i1 = (f0.x > f0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
	vec2 p0 = vec2(i0.x - i0.y * 0.5, i0.y);
	vec2 p1 = vec2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y);
	vec2 p2 = vec2(p0.x + 0.5, p0.y + 1.0);
	i1 = i0 + i1;
	vec2 i2 = i0 + vec2(1.0, 1.0);
	vec2 d0 = coord - p0;
	vec2 d1 = coord - p1;
	vec2 d2 = coord - p2;
	vec3 xw = mod(vec3(p0.x, p1.x, p2.x), size.x);
	vec3 yw = mod(vec3(p0.y, p1.y, p2.y), size.y);
	vec3 iuw = xw + 0.5 * yw;
	vec3 ivw = yw;
	vec2 g0 = old_fbm_2d_rgrad2(vec2(iuw.x, ivw.x), offset, seed);
	vec2 g1 = old_fbm_2d_rgrad2(vec2(iuw.y, ivw.y), offset, seed);
	vec2 g2 = old_fbm_2d_rgrad2(vec2(iuw.z, ivw.z), offset, seed);
	vec3 w = vec3(dot(g0, d0), dot(g1, d1), dot(g2, d2));
	vec3 t = 0.8 - vec3(dot(d0, d0), dot(d1, d1), dot(d2, d2));
	t = max(t, vec3(0.0));
	vec3 t2 = t * t;
	vec3 t4 = t2 * t2;
	float n = dot(t4, w);
	return 0.5 + 5.5 * n;
}

float old_fbm_2d_simplex(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_simplex_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node =  0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718 * node);
			vec2 diff = neighbor + node - f;
			float dist = length(diff);
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular2_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = length(diff);
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular2(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular2_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular3_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = abs((diff).x) + abs((diff).y);
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular3(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular3_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular4_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = abs((diff).x) + abs((diff).y);
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular4(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular4_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular5_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.5 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = max(abs((diff).x), abs((diff).y));
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular5(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular5_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular6_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = max(abs((diff).x), abs((diff).y));
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular6(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular6_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

// MIT License Inigo Quilez - https://www.shadertoy.com/view/Xd23Dh
float old_voronoise_noise_2d( vec2 coord, vec2 size, float offset, float seed) {
	vec2 i = floor(coord) + rand2(vec2(seed, 1.0-seed)) + size;
	vec2 f = fract(coord);
	
	vec2 a = vec2(0.0);
	
	for( int y=-2; y<=2; y++ ) {
		for( int x=-2; x<=2; x++ ) {
			vec2  g = vec2( float(x), float(y) );
			vec3  o = rand3( mod(i + g, size) + vec2(seed) );
			o.xy += 0.25 * sin(offset * 6.28318530718 + 6.28318530718*o.xy);
			vec2  d = g - f + o.xy;
			float w = pow( 1.0-smoothstep(0.0, 1.414, length(d)), 1.0 );
			a += vec2(o.z*w,w);
		}
	}
	
	return a.x/a.y;
}

float old_fbm_2d_voronoise(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_voronoise_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}


vec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*c1 + (1.0-opacity)*c2;
}

vec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	if (rand(uv) < opacity) {
		return c1;
	} else {
		return c2;
	}
}

vec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*c1*c2 + (1.0-opacity)*c2;
}

vec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;
}

float blend_overlay_f(float c1, float c2) {
	return (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));
}

vec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;
}

float blend_soft_light_f(float c1, float c2) {
	return (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);
}

vec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_burn_f(float c1, float c2) {
	return (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);
}

vec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_dodge_f(float c1, float c2) {
	return (c1==1.0)?c1:min(c2/(1.0-c1),1.0);
}

vec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*max(c1, c2) + (1.0-opacity)*c2;
}

vec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*min(c1, c2) + (1.0-opacity)*c2;
}

vec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;
}

vec3 blend_additive(vec2 uv, vec3 c1, vec3 c2, float oppacity) {
	return c2 + c1 * oppacity;
}

vec3 blend_addsub(vec2 uv, vec3 c1, vec3 c2, float oppacity) {
	return c2 + (c1 - .5) * 2.0 * oppacity;
}

vec3 rgb_to_hsv(vec3 c) {
	vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
	vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);
	vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);

	float d = q.x - min(q.w, q.y);
	float e = 1.0e-10;
	return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}

vec3 hsv_to_rgb(vec3 c) {
	vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
	vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
	return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}


float blend_linear_light_f(float c1, float c2) {
	return (c1 + 2.0 * c2) - 1.0;
}

vec3 blend_linear_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
return 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;
}

float blend_vivid_light_f(float c1, float c2) {
	return (c1 < 0.5) ? 1.0 - (1.0 - c2) / (2.0 * c1) : c2 / (2.0 * (1.0 - c1));
}

vec3 blend_vivid_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_pin_light_f( float c1, float c2) {
	return (2.0 * c1 - 1.0 > c2) ? 2.0 * c1 - 1.0 : ((c1 < 0.5 * c2) ? 2.0 * c1 : c2);
}

vec3 blend_pin_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_hard_mix_f(float c1, float c2) {
	return floor(c1 + c2);
}

vec3 blend_hard_mix(vec2 uv, vec3 c1, vec3 c2, float opacity) {
		return 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;
}

float blend_exclusion_f(float c1, float c2) {
	return c1 + c2 - 2.0 * c1 * c2;
}

vec3 blend_exclusion(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_hue(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	vec3 outcol = c2;

	vec3 hsv, hsv2, tmp;
	hsv2 = rgb_to_hsv(c1);

	if (hsv2.y != 0.0) {
		hsv = rgb_to_hsv(outcol);
		hsv.x = hsv2.x;
		tmp = hsv_to_rgb(hsv);
		outcol = mix(outcol, tmp, opacity);
	}
	return outcol;
}

vec3 blend_saturation(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 outcol = c2;
	vec3 hsv, hsv2;

	hsv = rgb_to_hsv(outcol);

	if (hsv.y != 0.0) {
		hsv2 = rgb_to_hsv(c1);

		hsv.y = facm * hsv.y + opacity * hsv2.y;
		outcol = hsv_to_rgb(hsv);
	}
	return outcol;
}

vec3 blend_color(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 outcol = c2;

	vec3 hsv, hsv2, tmp;
	hsv2 = rgb_to_hsv(c1);

	if (hsv2.y != 0.0) {
		hsv = rgb_to_hsv(outcol);
		hsv.x = hsv2.x;
		hsv.y = hsv2.y;
		tmp = hsv_to_rgb(hsv);

		outcol = mix(outcol, tmp, opacity);
	}
	return outcol;
}

vec3 blend_value(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 hsv, hsv2;
	hsv = rgb_to_hsv(c2);
	hsv2 = rgb_to_hsv(c1);

	hsv.z = facm * hsv.z + opacity * hsv2.z;
	return hsv_to_rgb(hsv);
}

float pingpong(float a, float b)
{
  return (b != 0.0) ? abs(fract((a - b) / (b * 2.0)) * b * 2.0 - b) : 0.0;
}

vec2 o21_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 o26_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.302719325) {
    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));
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}


vec4 o28_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.309326172, 0.222656250, 0.500000000, 1.000000000);
  } else if (x < 0.826773866) {
    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));
  }
  return vec4(0.409725666, 0.319152832, 0.492187500, 1.000000000);
}


vec2 transform2_clamp(vec2 uv) {
	return clamp(uv, vec2(0.0), vec2(1.0));
}

vec2 transform2(vec2 uv, vec2 translate, float rotate, vec2 scale) {
 	vec2 rv;
	uv -= translate;
	uv -= vec2(0.5);
	rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;
	rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;
	rv /= scale;
	rv += vec2(0.5);
	return rv;	
}

vec2 o31_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 o33_gradient_gradient_fct(float x) {
  if (x < 0.130474854) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}


float shape_circle(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float distance = length(uv);
	return clamp((1.0-distance/size)/edge, 0.0, 1.0);
}

float shape_polygon(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = atan(uv.x, uv.y)+3.14159265359;
	float slice = 6.28318530718/sides;
	return clamp((1.0-(cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/size)/edge, 0.0, 1.0);
}

float shape_star(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = atan(uv.x, uv.y);
	float slice = 6.28318530718/sides;
	return 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);
}

float shape_curved_star(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = 2.0*(atan(uv.x, uv.y)+3.14159265359);
	float slice = 6.28318530718/sides;
	return clamp((1.0-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv)/size)/edge, 0.0, 1.0);
}

float shape_rays(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = 0.5*max(edge, 1.0e-8)*size;
	float slice = 6.28318530718/sides;
	float angle = mod(atan(uv.x, uv.y)+3.14159265359, slice)/slice;
	return clamp(min((size-angle)/edge, angle/edge), 0.0, 1.0);
}



vec4 tiler_o36(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 118.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.510000+1.0;
				pv /= vec2(0.390000, 0.390000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec2 o40_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 tiler_o42(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.520000+1.0;
				pv /= vec2(0.007000, 0.006000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 tiler_o48(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.250000+1.0;
				pv /= vec2(0.060000, 0.060000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-0.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 o53_gradient_gradient_fct(float x) {
  if (x < 0.477490569) {
    return vec4(0.566558838, 0.646175146, 0.917968750, 1.000000000);
  } else if (x < 0.890109964) {
    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));
  }
  return vec4(0.237335205, 0.328392029, 0.601562500, 1.000000000);
}


vec3 o85_fct(vec2 uv) {
	vec2 e = vec2(1.0/2048.0, 0.0);
	vec3 rv = 5.0*vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	return rv;
}

vec4 o95_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.606387622) {
    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));
  }
  return vec4(0.664062500, 0.352783203, 0.564355850, 1.000000000);
}


vec2 o98_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 tiler_o101(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.350000+1.0;
				pv /= vec2(0.020000, 0.020000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-0.310000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 o114_gradient_gradient_fct(float x) {
  if (x < 0.499287435) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.725315251) {
    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));
  } else if (x < 0.932951993) {
    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));
  }
  return vec4(0.363281012, 1.000000000, 0.985077024, 1.000000000);
}


vec4 o127_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(0.433593750, 0.433593750, 0.433593750, 1.000000000);
}


vec4 o131_gradient_gradient_fct(float x) {
  if (x < 0.280668076) {
    return vec4(0.763210058, 0.754547119, 0.839843750, 1.000000000);
  } else if (x < 0.717816078) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}
"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_xaai3"]
expression = "// Subgraph: smooth_curvature
out0 = in0;"

[sub_resource type="VisualShaderNodeVec3Constant" id="VisualShaderNodeVec3Constant_0lehy"]
constant = Vector3(1, 1, 1)

[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_edn5s"]

[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_5tyo0"]
constant = 1.0

[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_081ib"]
constant = 0.2

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5cfjx"]
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));
vec3 o15_true = vec3(1.0)-o15_false;
out0 = vec4(o15_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_s8fb1"]
expression = "// Subgraph: hbao
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_b8ro2"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_7otnc"]
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));
vec3 o18_true = vec3(1.0)-o18_false;
out0 = vec4(o18_true, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_s2776"]
expression = "// Subgraph: Mockup
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);
out2 = vec4(0.5, 0.5, 0.5, 1.0);
out3 = vec4(0.5, 0.5, 0.5, 1.0);
out4 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ek0we"]
expression = "vec4 o19_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o19_l;
float o19_a;
o19_l = vec4(1.0, UV.y, 1.0, 1.0);
o19_a = 0.500000*1.0;
o19_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));

out0 = o19_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5sf33"]
expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_se5ph"]
expression = "vec2 o21_slope = o21_slope(UV, 0.100000);
vec2 o21_warp = o21_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_48omn"]
expression = "out0 = vec4(0.295654, 0.314493, 0.437500, 1.000000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_kky0x"]
expression = "// Subgraph: smooth_curvature
out0 = in0;"

[sub_resource type="VisualShaderNodeClamp" id="VisualShaderNodeClamp_op5ly"]

[sub_resource type="VisualShaderNodeClamp" id="VisualShaderNodeClamp_wwfgv"]

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_trc0n"]
expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_g5iwm"]
expression = "vec4 o25_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o25_l;
float o25_a;
o25_l = vec4(1.0, UV.y, 1.0, 1.0);
o25_a = 0.500000*1.0;
o25_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));

out0 = o25_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_sbvdr"]
expression = "out0 = o26_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_fiefc"]
expression = "vec4 o27_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o27_l;
float o27_a;
o27_l = vec4(1.0, UV.y, 1.0, 1.0);
o27_a = 0.500000*1.0;
o27_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));
o27_l = vec4(1.0, UV.y, 1.0, 1.0);
o27_a = 0.370000*1.0;
o27_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));

out0 = o27_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6j85g"]
expression = "out0 = o28_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_lldom"]
expression = "vec3 o2_instance_uv = vec3(0.0);
vec4 o2_rch = tiler_o2(UV, vec2(12.000000, 12.000000), int(2.000000), o2_instance_uv, vec2(float(36441482.363450)));
out0 = o2_rch.a;
out1 = o2_rch.rgb;
out2 = o2_instance_uv;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ukduq"]
expression = "float o29_clamp_false = (1.0-step(0.010000,0.000000));
float o29_clamp_true = clamp(o29_clamp_false, 0.0, 1.0);

out0 = o29_clamp_false;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_kp34d"]
expression = "out0 = vec4(UV, 0.0, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_s4pnd"]
expression = "vec2 o31_slope = o31_slope(UV, 0.100000);
vec2 o31_warp = o31_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_rixkc"]
expression = "vec4 o32_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o32_l;
float o32_a;
o32_l = vec4(1.0, UV.y, 1.0, 1.0);
o32_a = 0.500000*1.0;
o32_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));

out0 = o32_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_qik36"]
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);
out0 = o33_gradient_gradient_fct(false ? 2.0*(0.5-abs(fract(o33_r*1.000000)-0.5)) : fract(o33_r*1.000000));"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_kd1yt"]
expression = "out0 = shape_polygon(UV, 10.000000+1.0e-5, 0.940000*1.0, 0.610000*1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_mqnek"]
expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_g0ybb"]
expression = "vec3 o36_instance_uv = vec3(0.0);
vec4 o36_rch = tiler_o36(UV, vec2(12.000000, 12.000000), int(4.000000), o36_instance_uv, vec2(float(26399828.603450)));
out0 = o36_rch.a;
out1 = o36_rch.rgb;
out2 = o36_instance_uv;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_4ctnn"]
expression = "vec4 o37_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o37_l;
float o37_a;
o37_l = vec4(1.0, UV.y, 1.0, 1.0);
o37_a = 0.500000*1.0;
o37_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));

out0 = o37_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_gn1tk"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_4rhxd"]
expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_86g3g"]
expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_rvegi"]
expression = "vec2 o40_slope = o40_slope(UV, 0.100000);
vec2 o40_warp = o40_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_0t0rf"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_8l4w3"]
expression = "vec3 o42_instance_uv = vec3(0.0);
vec4 o42_rch = tiler_o42(UV, vec2(8.000000, 8.000000), int(2.000000), o42_instance_uv, vec2(float(0.123450)));
out0 = o42_rch.a;
out1 = o42_rch.rgb;
out2 = o42_instance_uv;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ytvc5"]
expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_cdbcd"]
expression = "vec4 o44_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o44_l;
float o44_a;
o44_l = vec4(1.0, UV.y, 1.0, 1.0);
o44_a = 0.500000*1.0;
o44_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));

out0 = o44_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6ae5p"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_dhb13"]
expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_4wxba"]
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));
vec3 o47_true = vec3(1.0)-o47_false;
out0 = vec4(o47_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_2pqb4"]
expression = "vec3 o48_instance_uv = vec3(0.0);
vec4 o48_rch = tiler_o48(UV, vec2(12.000000, 12.000000), int(2.000000), o48_instance_uv, vec2(float(36441482.383450)));
out0 = o48_rch.a;
out1 = o48_rch.rgb;
out2 = o48_instance_uv;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_pi7ow"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(4.000000, 4.000000), int(0.000000), int(4.000000), 0.500000, 0.000000, 9004590.843450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_rl16u"]
expression = "// Subgraph: Lighten
out0 = in0;
out1 = in1;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_3q4jo"]
expression = "vec4 o50_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o50_l;
float o50_a;
o50_l = vec4(1.0, UV.y, 1.0, 1.0);
o50_a = 0.500000*1.0;
o50_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));

out0 = o50_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_7tb3d"]
expression = "vec4 o51_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o51_l;
float o51_a;
o51_l = vec4(1.0, UV.y, 1.0, 1.0);
o51_a = 0.500000*1.0;
o51_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));

out0 = o51_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ebfw4"]
expression = "vec3 o52_map = vec3(1.0);
float o52_rnd =  float(0.123450)+o52_map.z;

out0 = vec4(1.0), 0.000000*0.01745329251, 0.000000, vec2(o52_map.z, float(0.123450)))), false ? o52_rnd : 0.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_0mt7d"]
expression = "out0 = o53_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_0fi46"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_4p81n"]
expression = "out0 = 1.0;
out1 = 1.0;
out2 = 1.0;
out3 = 1.0;
out4 = 1.0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_hx40o"]
expression = "vec4 o56_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o56_l;
float o56_a;
o56_l = vec4(1.0, UV.y, 1.0, 1.0);
o56_a = 0.500000*1.0;
o56_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));

out0 = o56_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_kwgc5"]
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));
vec3 o57_true = vec3(1.0)-o57_false;
out0 = vec4(o57_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6vi1q"]
expression = "// Subgraph: dirt
out0 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_am6hy"]
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));
vec3 o5_true = vec3(1.0)-o5_false;
out0 = vec4(o5_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_k184d"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 12838328.443450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ll26u"]
expression = "// Subgraph: anisotropic_kuwahara
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_7l81n"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_tgx67"]
expression = "// Subgraph: Plain Grunge
out0 = vec4(0.5, 0.5, 0.5, 1.0);
out1 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_jey1l"]
expression = "vec4 o63_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o63_l;
float o63_a;
o63_l = vec4(1.0, UV.y, 1.0, 1.0);
o63_a = 0.760000*1.0;
o63_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));
o63_l = vec4(1.0, UV.y, 1.0, 1.0);
o63_a = 0.710000*1.0;
o63_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));

out0 = o63_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_v0yk2"]
expression = "vec4 o64_rbga = vec4(UV.x, UV.y, 0.0, 1.0);
vec3 o64_hsv = rgb_to_hsv(o64_rbga.rgb);
o64_hsv.x = fract(o64_hsv.x+0.150000*1.000000*(0.5-0.5));
o64_hsv.y = clamp(o64_hsv.y+0.050000*1.000000*(0.5-0.5), 0.0, 1.0);
o64_hsv.z = clamp(o64_hsv.z+0.090000*1.000000*(0.5-0.5), 0.0, 1.0);
	
out0 = vec4(hsv_to_rgb(o64_hsv), o64_rbga.a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_bd4at"]
expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_5ttaa"]
expression = "vec4 o66_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o66_l;
float o66_a;
o66_l = vec4(1.0, UV.y, 1.0, 1.0);
o66_a = 0.500000*1.0;
o66_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));

out0 = o66_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_aktgl"]
expression = "// Subgraph: smooth_curvature
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_h2mrv"]
expression = "out0 = 0.870000;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_lckp5"]
expression = "out0 = 0.750000;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_8620c"]
expression = "out0 = 0.700000;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_eebn8"]
expression = "out0 = 0.160000;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_xv5ei"]
expression = "vec4 o71_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o71_l;
float o71_a;
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 1.000000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 1.000000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 0.320000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 0.230000*1.0;
o71_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));

out0 = o71_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_cpoxe"]
expression = "// Subgraph: Plain Grunge
out0 = vec4(0.5, 0.5, 0.5, 1.0);
out1 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_66pkj"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6dypj"]
expression = "// Subgraph: anisotropic_kuwahara
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_q2p33"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 10546592.123450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_6u5fx"]
expression = "// Subgraph: dirt
out0 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_qceso"]
expression = "vec4 o77_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o77_l;
float o77_a;
o77_l = vec4(1.0, UV.y, 1.0, 1.0);
o77_a = 0.500000*1.0;
o77_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));

out0 = o77_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_vt8ji"]
expression = "out0 = 1.0;
out1 = 1.0;
out2 = 1.0;
out3 = 1.0;
out4 = 1.0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_2he1j"]
expression = "vec4 o7_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o7_l;
float o7_a;
o7_l = vec4(1.0, UV.y, 1.0, 1.0);
o7_a = 0.500000*1.0;
o7_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));

out0 = o7_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_k5j1y"]
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));
vec3 o79_true = vec3(1.0)-o79_false;
out0 = vec4(o79_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_v3x6y"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_b8pue"]
expression = "vec4 o81_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o81_l;
float o81_a;
o81_l = vec4(1.0, UV.y, 1.0, 1.0);
o81_a = 0.760000*1.0;
o81_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));
o81_l = vec4(1.0, UV.y, 1.0, 1.0);
o81_a = 0.710000*1.0;
o81_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));

out0 = o81_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_dpp86"]
expression = "vec4 o82_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o82_l;
float o82_a;
o82_l = vec4(1.0, UV.y, 1.0, 1.0);
o82_a = 0.500000*1.0;
o82_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));

out0 = o82_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_3reae"]
expression = "out0 = vec4(UV, 0.0, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_cq1w4"]
expression = "vec4 o84_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o84_l;
float o84_a;
o84_l = vec4(1.0, UV.y, 1.0, 1.0);
o84_a = 0.500000*1.0;
o84_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));

out0 = o84_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_xb8k0"]
expression = "out0 = o85_fct(UV);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_60d07"]
expression = "// Buffer pass-through
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_wfuth"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_sd2c1"]
expression = "// Subgraph: multi_warp
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_557hr"]
expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_y7n8i"]
expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_k67vb"]
expression = "vec4 o90_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o90_l;
float o90_a;
o90_l = vec4(1.0, UV.y, 1.0, 1.0);
o90_a = 0.500000*1.0;
o90_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));

out0 = o90_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_jq86f"]
expression = "// Subgraph: smooth_curvature
out0 = in0;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_yd3nu"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 0.123450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_teuj2"]
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));
vec3 o93_true = vec3(1.0)-o93_false;
out0 = vec4(o93_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_sj1el"]
expression = "vec4 o94_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o94_l;
float o94_a;
o94_l = vec4(1.0, UV.y, 1.0, 1.0);
o94_a = 0.500000*1.0;
o94_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));

out0 = o94_b;"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_gvso1"]
expression = "out0 = o95_gradient_gradient_fct(UV.x);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_0y0vv"]
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);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_boewj"]
expression = "out0 = old_fbm_2d_perlin(UV, vec2(16.000000, 16.000000), int(0.000000), int(1.000000), 0.500000, 0.000000, 0.123450);"

[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_bpidm"]
expression = "vec2 o98_slope = o98_slope(UV, 0.100000);
vec2 o98_warp = o98_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"

[sub_resource type="VisualShader" id="VisualShader_n073q"]
nodes/fragment/2/node = SubResource("VisualShaderNodeExpression_s2776")
nodes/fragment/2/position = Vector2(1340, 140)
nodes/fragment/2/size = Vector2(0, 0)
nodes/fragment/2/input_ports = "0,5,in0"
nodes/fragment/2/output_ports = "0,5,out0;1,5,out1;2,5,out2;3,5,out3;4,5,out4"
nodes/fragment/2/expression = "// Subgraph: Mockup
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);
out2 = vec4(0.5, 0.5, 0.5, 1.0);
out3 = vec4(0.5, 0.5, 0.5, 1.0);
out4 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/3/node = SubResource("VisualShaderNodeExpression_lldom")
nodes/fragment/3/position = Vector2(-6280, 1180)
nodes/fragment/3/size = Vector2(0, 0)
nodes/fragment/3/input_ports = "0,0,p_in;1,0,mask"
nodes/fragment/3/output_ports = "0,0,out0;1,4,out1;2,4,out2"
nodes/fragment/3/expression = "vec3 o2_instance_uv = vec3(0.0);
vec4 o2_rch = tiler_o2(UV, vec2(12.000000, 12.000000), int(2.000000), o2_instance_uv, vec2(float(36441482.363450)));
out0 = o2_rch.a;
out1 = o2_rch.rgb;
out2 = o2_instance_uv;"
nodes/fragment/4/node = SubResource("VisualShaderNodeExpression_4rhxd")
nodes/fragment/4/position = Vector2(-6500, 1180)
nodes/fragment/4/size = Vector2(0, 0)
nodes/fragment/4/input_ports = ""
nodes/fragment/4/output_ports = "0,0,out0"
nodes/fragment/4/expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"
nodes/fragment/5/node = SubResource("VisualShaderNodeExpression_pi7ow")
nodes/fragment/5/position = Vector2(-6700, 1320)
nodes/fragment/5/size = Vector2(0, 0)
nodes/fragment/5/input_ports = "0,0,offset_in"
nodes/fragment/5/output_ports = "0,0,out0"
nodes/fragment/5/expression = "out0 = old_fbm_2d_perlin(UV, vec2(4.000000, 4.000000), int(0.000000), int(4.000000), 0.500000, 0.000000, 9004590.843450);"
nodes/fragment/6/node = SubResource("VisualShaderNodeExpression_am6hy")
nodes/fragment/6/position = Vector2(-6480, 1320)
nodes/fragment/6/size = Vector2(0, 0)
nodes/fragment/6/input_ports = "0,5,p_in"
nodes/fragment/6/output_ports = "0,5,out0"
nodes/fragment/6/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));
vec3 o5_true = vec3(1.0)-o5_false;
out0 = vec4(o5_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/7/node = SubResource("VisualShaderNodeExpression_lckp5")
nodes/fragment/7/position = Vector2(-5400, 120)
nodes/fragment/7/size = Vector2(0, 0)
nodes/fragment/7/input_ports = ""
nodes/fragment/7/output_ports = "0,0,out0"
nodes/fragment/7/expression = "out0 = 0.750000;"
nodes/fragment/8/node = SubResource("VisualShaderNodeExpression_2he1j")
nodes/fragment/8/position = Vector2(-2700, 120)
nodes/fragment/8/size = Vector2(0, 0)
nodes/fragment/8/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/8/output_ports = "0,5,out0"
nodes/fragment/8/expression = "vec4 o7_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o7_l;
float o7_a;
o7_l = vec4(1.0, UV.y, 1.0, 1.0);
o7_a = 0.500000*1.0;
o7_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));

out0 = o7_b;"
nodes/fragment/9/node = SubResource("VisualShaderNodeExpression_557hr")
nodes/fragment/9/position = Vector2(-5720, 1180)
nodes/fragment/9/size = Vector2(0, 0)
nodes/fragment/9/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/9/output_ports = "0,5,out0"
nodes/fragment/9/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/10/node = SubResource("VisualShaderNodeExpression_dlkfh")
nodes/fragment/10/position = Vector2(-5360, 1180)
nodes/fragment/10/size = Vector2(0, 0)
nodes/fragment/10/input_ports = "0,5,p_in"
nodes/fragment/10/output_ports = "0,5,out0"
nodes/fragment/10/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);"
nodes/fragment/11/node = SubResource("VisualShaderNodeExpression_tdoj1")
nodes/fragment/11/position = Vector2(-5160, 1180)
nodes/fragment/11/size = Vector2(0, 0)
nodes/fragment/11/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/11/output_ports = "0,5,out0"
nodes/fragment/11/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/12/node = SubResource("VisualShaderNodeExpression_xitfv")
nodes/fragment/12/position = Vector2(-4480, 1180)
nodes/fragment/12/size = Vector2(0, 0)
nodes/fragment/12/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/12/output_ports = "0,5,out0"
nodes/fragment/12/expression = "vec4 o11_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o11_l;
float o11_a;
o11_l = vec4(1.0, UV.y, 1.0, 1.0);
o11_a = 0.500000*1.0;
o11_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));

out0 = o11_b;"
nodes/fragment/13/node = SubResource("VisualShaderNodeExpression_yanf6")
nodes/fragment/13/position = Vector2(-4720, 1340)
nodes/fragment/13/size = Vector2(0, 0)
nodes/fragment/13/input_ports = "0,0,in1;1,0,in2"
nodes/fragment/13/output_ports = "0,0,out0"
nodes/fragment/13/expression = "float o12_clamp_false = 0.000000+0.000000;
float o12_clamp_true = clamp(o12_clamp_false, 0.0, 1.0);

out0 = o12_clamp_true;"
nodes/fragment/14/node = SubResource("VisualShaderNodeExpression_vrvp1")
nodes/fragment/14/position = Vector2(-4760, 1180)
nodes/fragment/14/size = Vector2(0, 0)
nodes/fragment/14/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/14/output_ports = "0,5,out0"
nodes/fragment/14/expression = "// Subgraph: Bilateral Filter
out0 = in0;"
nodes/fragment/15/node = SubResource("VisualShaderNodeExpression_xaai3")
nodes/fragment/15/position = Vector2(-5160, 1040)
nodes/fragment/15/size = Vector2(0, 0)
nodes/fragment/15/input_ports = "0,5,in0"
nodes/fragment/15/output_ports = "0,5,out0"
nodes/fragment/15/expression = "// Subgraph: smooth_curvature
out0 = in0;"
nodes/fragment/16/node = SubResource("VisualShaderNodeExpression_5cfjx")
nodes/fragment/16/position = Vector2(-4940, 1040)
nodes/fragment/16/size = Vector2(0, 0)
nodes/fragment/16/input_ports = "0,5,p_in"
nodes/fragment/16/output_ports = "0,5,out0"
nodes/fragment/16/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));
vec3 o15_true = vec3(1.0)-o15_false;
out0 = vec4(o15_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/17/node = SubResource("VisualShaderNodeExpression_s8fb1")
nodes/fragment/17/position = Vector2(1340, 360)
nodes/fragment/17/size = Vector2(0, 0)
nodes/fragment/17/input_ports = "0,5,in0"
nodes/fragment/17/output_ports = "0,5,out0"
nodes/fragment/17/expression = "// Subgraph: hbao
out0 = in0;"
nodes/fragment/18/node = SubResource("VisualShaderNodeExpression_b8ro2")
nodes/fragment/18/position = Vector2(-5720, 1000)
nodes/fragment/18/size = Vector2(0, 0)
nodes/fragment/18/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/18/output_ports = "0,5,out0"
nodes/fragment/18/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/19/node = SubResource("VisualShaderNodeExpression_7otnc")
nodes/fragment/19/position = Vector2(-5500, 800)
nodes/fragment/19/size = Vector2(0, 0)
nodes/fragment/19/input_ports = "0,5,p_in"
nodes/fragment/19/output_ports = "0,5,out0"
nodes/fragment/19/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));
vec3 o18_true = vec3(1.0)-o18_false;
out0 = vec4(o18_true, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/20/node = SubResource("VisualShaderNodeExpression_ek0we")
nodes/fragment/20/position = Vector2(-3160, 120)
nodes/fragment/20/size = Vector2(0, 0)
nodes/fragment/20/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/20/output_ports = "0,5,out0"
nodes/fragment/20/expression = "vec4 o19_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o19_l;
float o19_a;
o19_l = vec4(1.0, UV.y, 1.0, 1.0);
o19_a = 0.500000*1.0;
o19_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));

out0 = o19_b;"
nodes/fragment/21/node = SubResource("VisualShaderNodeExpression_5sf33")
nodes/fragment/21/position = Vector2(-5500, 700)
nodes/fragment/21/size = Vector2(0, 0)
nodes/fragment/21/input_ports = "0,5,in0"
nodes/fragment/21/output_ports = "0,5,out0"
nodes/fragment/21/expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/22/node = SubResource("VisualShaderNodeExpression_se5ph")
nodes/fragment/22/position = Vector2(-5300, 740)
nodes/fragment/22/size = Vector2(0, 0)
nodes/fragment/22/input_ports = "0,5,p_in;1,0,p_d;2,0,strength_map"
nodes/fragment/22/output_ports = "0,5,out0"
nodes/fragment/22/expression = "vec2 o21_slope = o21_slope(UV, 0.100000);
vec2 o21_warp = o21_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"
nodes/fragment/23/node = SubResource("VisualShaderNodeExpression_48omn")
nodes/fragment/23/position = Vector2(-100, -1640)
nodes/fragment/23/size = Vector2(0, 0)
nodes/fragment/23/input_ports = ""
nodes/fragment/23/output_ports = "0,5,out0"
nodes/fragment/23/expression = "out0 = vec4(0.295654, 0.314493, 0.437500, 1.000000);"
nodes/fragment/24/node = SubResource("VisualShaderNodeExpression_kky0x")
nodes/fragment/24/position = Vector2(-480, -40)
nodes/fragment/24/size = Vector2(0, 0)
nodes/fragment/24/input_ports = "0,5,in0"
nodes/fragment/24/output_ports = "0,5,out0"
nodes/fragment/24/expression = "// Subgraph: smooth_curvature
out0 = in0;"
nodes/fragment/25/node = SubResource("VisualShaderNodeExpression_trc0n")
nodes/fragment/25/position = Vector2(-220, -40)
nodes/fragment/25/size = Vector2(0, 0)
nodes/fragment/25/input_ports = "0,5,in0"
nodes/fragment/25/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/25/expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/26/node = SubResource("VisualShaderNodeExpression_g5iwm")
nodes/fragment/26/position = Vector2(680, -1500)
nodes/fragment/26/size = Vector2(0, 0)
nodes/fragment/26/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/26/output_ports = "0,5,out0"
nodes/fragment/26/expression = "vec4 o25_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o25_l;
float o25_a;
o25_l = vec4(1.0, UV.y, 1.0, 1.0);
o25_a = 0.500000*1.0;
o25_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));

out0 = o25_b;"
nodes/fragment/27/node = SubResource("VisualShaderNodeExpression_sbvdr")
nodes/fragment/27/position = Vector2(-5120, 740)
nodes/fragment/27/size = Vector2(0, 0)
nodes/fragment/27/input_ports = "0,0,input"
nodes/fragment/27/output_ports = "0,5,out0"
nodes/fragment/27/expression = "out0 = o26_gradient_gradient_fct(UV.x);"
nodes/fragment/28/node = SubResource("VisualShaderNodeExpression_fiefc")
nodes/fragment/28/position = Vector2(1840, -1480)
nodes/fragment/28/size = Vector2(0, 0)
nodes/fragment/28/input_ports = "0,5,p_b;1,5,p_l0;2,5,p_l1;3,0,p_a0;4,0,p_a1"
nodes/fragment/28/output_ports = "0,5,out0"
nodes/fragment/28/expression = "vec4 o27_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o27_l;
float o27_a;
o27_l = vec4(1.0, UV.y, 1.0, 1.0);
o27_a = 0.500000*1.0;
o27_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));
o27_l = vec4(1.0, UV.y, 1.0, 1.0);
o27_a = 0.370000*1.0;
o27_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));

out0 = o27_b;"
nodes/fragment/29/node = SubResource("VisualShaderNodeExpression_6j85g")
nodes/fragment/29/position = Vector2(-520, -1400)
nodes/fragment/29/size = Vector2(0, 0)
nodes/fragment/29/input_ports = "0,0,input"
nodes/fragment/29/output_ports = "0,5,out0"
nodes/fragment/29/expression = "out0 = o28_gradient_gradient_fct(UV.x);"
nodes/fragment/30/node = SubResource("VisualShaderNodeExpression_ukduq")
nodes/fragment/30/position = Vector2(-4740, 720)
nodes/fragment/30/size = Vector2(0, 0)
nodes/fragment/30/input_ports = "0,0,in1;1,0,in2"
nodes/fragment/30/output_ports = "0,0,out0"
nodes/fragment/30/expression = "float o29_clamp_false = (1.0-step(0.010000,0.000000));
float o29_clamp_true = clamp(o29_clamp_false, 0.0, 1.0);

out0 = o29_clamp_false;"
nodes/fragment/31/node = SubResource("VisualShaderNodeExpression_kp34d")
nodes/fragment/31/position = Vector2(-5860, -620)
nodes/fragment/31/size = Vector2(0, 0)
nodes/fragment/31/input_ports = "0,5,p_i;1,0,p_tx;2,0,p_ty;3,0,p_r;4,0,p_sx;5,0,p_sy"
nodes/fragment/31/output_ports = "0,5,out0"
nodes/fragment/31/expression = "out0 = vec4(UV, 0.0, 1.0);"
nodes/fragment/32/node = SubResource("VisualShaderNodeExpression_s4pnd")
nodes/fragment/32/position = Vector2(-5640, -520)
nodes/fragment/32/size = Vector2(0, 0)
nodes/fragment/32/input_ports = "0,5,p_in;1,0,p_d;2,0,strength_map"
nodes/fragment/32/output_ports = "0,5,out0"
nodes/fragment/32/expression = "vec2 o31_slope = o31_slope(UV, 0.100000);
vec2 o31_warp = o31_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"
nodes/fragment/33/node = SubResource("VisualShaderNodeExpression_rixkc")
nodes/fragment/33/position = Vector2(-5420, -500)
nodes/fragment/33/size = Vector2(0, 0)
nodes/fragment/33/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/33/output_ports = "0,5,out0"
nodes/fragment/33/expression = "vec4 o32_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o32_l;
float o32_a;
o32_l = vec4(1.0, UV.y, 1.0, 1.0);
o32_a = 0.500000*1.0;
o32_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));

out0 = o32_b;"
nodes/fragment/34/node = SubResource("VisualShaderNodeExpression_qik36")
nodes/fragment/34/position = Vector2(-5620, -380)
nodes/fragment/34/size = Vector2(0, 0)
nodes/fragment/34/input_ports = ""
nodes/fragment/34/output_ports = "0,5,out0"
nodes/fragment/34/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);
out0 = o33_gradient_gradient_fct(false ? 2.0*(0.5-abs(fract(o33_r*1.000000)-0.5)) : fract(o33_r*1.000000));"
nodes/fragment/35/node = SubResource("VisualShaderNodeExpression_kd1yt")
nodes/fragment/35/position = Vector2(-6020, -620)
nodes/fragment/35/size = Vector2(0, 0)
nodes/fragment/35/input_ports = "0,0,radius_map;1,0,edge_map"
nodes/fragment/35/output_ports = "0,0,out0"
nodes/fragment/35/expression = "out0 = shape_polygon(UV, 10.000000+1.0e-5, 0.940000*1.0, 0.610000*1.0);"
nodes/fragment/36/node = SubResource("VisualShaderNodeExpression_mqnek")
nodes/fragment/36/position = Vector2(-5800, -360)
nodes/fragment/36/size = Vector2(0, 0)
nodes/fragment/36/input_ports = "0,5,in0"
nodes/fragment/36/output_ports = "0,5,out0"
nodes/fragment/36/expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/37/node = SubResource("VisualShaderNodeExpression_g0ybb")
nodes/fragment/37/position = Vector2(-5180, -500)
nodes/fragment/37/size = Vector2(0, 0)
nodes/fragment/37/input_ports = "0,0,p_in;1,0,mask"
nodes/fragment/37/output_ports = "0,0,out0;1,4,out1;2,4,out2"
nodes/fragment/37/expression = "vec3 o36_instance_uv = vec3(0.0);
vec4 o36_rch = tiler_o36(UV, vec2(12.000000, 12.000000), int(4.000000), o36_instance_uv, vec2(float(26399828.603450)));
out0 = o36_rch.a;
out1 = o36_rch.rgb;
out2 = o36_instance_uv;"
nodes/fragment/38/node = SubResource("VisualShaderNodeExpression_4ctnn")
nodes/fragment/38/position = Vector2(-4280, 120)
nodes/fragment/38/size = Vector2(0, 0)
nodes/fragment/38/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/38/output_ports = "0,5,out0"
nodes/fragment/38/expression = "vec4 o37_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o37_l;
float o37_a;
o37_l = vec4(1.0, UV.y, 1.0, 1.0);
o37_a = 0.500000*1.0;
o37_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));

out0 = o37_b;"
nodes/fragment/39/node = SubResource("VisualShaderNodeExpression_gn1tk")
nodes/fragment/39/position = Vector2(-3520, 120)
nodes/fragment/39/size = Vector2(0, 0)
nodes/fragment/39/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/39/output_ports = "0,5,out0"
nodes/fragment/39/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/40/node = SubResource("VisualShaderNodeExpression_86g3g")
nodes/fragment/40/position = Vector2(-5140, -600)
nodes/fragment/40/size = Vector2(0, 0)
nodes/fragment/40/input_ports = "0,5,in0"
nodes/fragment/40/output_ports = "0,5,out0"
nodes/fragment/40/expression = "// Subgraph: crystal
out0 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/41/node = SubResource("VisualShaderNodeExpression_rvegi")
nodes/fragment/41/position = Vector2(-4920, -520)
nodes/fragment/41/size = Vector2(0, 0)
nodes/fragment/41/input_ports = "0,5,p_in;1,0,p_d;2,0,strength_map"
nodes/fragment/41/output_ports = "0,5,out0"
nodes/fragment/41/expression = "vec2 o40_slope = o40_slope(UV, 0.100000);
vec2 o40_warp = o40_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"
nodes/fragment/42/node = SubResource("VisualShaderNodeExpression_0t0rf")
nodes/fragment/42/position = Vector2(-1020, 120)
nodes/fragment/42/size = Vector2(0, 0)
nodes/fragment/42/input_ports = "0,5,in0"
nodes/fragment/42/output_ports = "0,5,out0"
nodes/fragment/42/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/43/node = SubResource("VisualShaderNodeExpression_8l4w3")
nodes/fragment/43/position = Vector2(-2480, -420)
nodes/fragment/43/size = Vector2(0, 0)
nodes/fragment/43/input_ports = "0,0,p_in;1,0,mask"
nodes/fragment/43/output_ports = "0,0,out0;1,4,out1;2,4,out2"
nodes/fragment/43/expression = "vec3 o42_instance_uv = vec3(0.0);
vec4 o42_rch = tiler_o42(UV, vec2(8.000000, 8.000000), int(2.000000), o42_instance_uv, vec2(float(0.123450)));
out0 = o42_rch.a;
out1 = o42_rch.rgb;
out2 = o42_instance_uv;"
nodes/fragment/44/node = SubResource("VisualShaderNodeExpression_ytvc5")
nodes/fragment/44/position = Vector2(-2680, -420)
nodes/fragment/44/size = Vector2(0, 0)
nodes/fragment/44/input_ports = ""
nodes/fragment/44/output_ports = "0,0,out0"
nodes/fragment/44/expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"
nodes/fragment/45/node = SubResource("VisualShaderNodeExpression_cdbcd")
nodes/fragment/45/position = Vector2(-1960, 120)
nodes/fragment/45/size = Vector2(0, 0)
nodes/fragment/45/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/45/output_ports = "0,5,out0"
nodes/fragment/45/expression = "vec4 o44_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o44_l;
float o44_a;
o44_l = vec4(1.0, UV.y, 1.0, 1.0);
o44_a = 0.500000*1.0;
o44_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));

out0 = o44_b;"
nodes/fragment/46/node = SubResource("VisualShaderNodeExpression_6ae5p")
nodes/fragment/46/position = Vector2(-2640, -280)
nodes/fragment/46/size = Vector2(0, 0)
nodes/fragment/46/input_ports = "0,5,p_in"
nodes/fragment/46/output_ports = "0,5,out0"
nodes/fragment/46/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);"
nodes/fragment/47/node = SubResource("VisualShaderNodeExpression_dhb13")
nodes/fragment/47/position = Vector2(-2240, 1980)
nodes/fragment/47/size = Vector2(0, 0)
nodes/fragment/47/input_ports = ""
nodes/fragment/47/output_ports = "0,0,out0"
nodes/fragment/47/expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"
nodes/fragment/48/node = SubResource("VisualShaderNodeExpression_4wxba")
nodes/fragment/48/position = Vector2(-2520, 1800)
nodes/fragment/48/size = Vector2(0, 0)
nodes/fragment/48/input_ports = "0,5,p_in"
nodes/fragment/48/output_ports = "0,5,out0"
nodes/fragment/48/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));
vec3 o47_true = vec3(1.0)-o47_false;
out0 = vec4(o47_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/49/node = SubResource("VisualShaderNodeExpression_2pqb4")
nodes/fragment/49/position = Vector2(-2040, 1900)
nodes/fragment/49/size = Vector2(0, 0)
nodes/fragment/49/input_ports = "0,0,p_in;1,0,mask"
nodes/fragment/49/output_ports = "0,0,out0;1,4,out1;2,4,out2"
nodes/fragment/49/expression = "vec3 o48_instance_uv = vec3(0.0);
vec4 o48_rch = tiler_o48(UV, vec2(12.000000, 12.000000), int(2.000000), o48_instance_uv, vec2(float(36441482.383450)));
out0 = o48_rch.a;
out1 = o48_rch.rgb;
out2 = o48_instance_uv;"
nodes/fragment/50/node = SubResource("VisualShaderNodeExpression_rl16u")
nodes/fragment/50/position = Vector2(-1440, 120)
nodes/fragment/50/size = Vector2(0, 0)
nodes/fragment/50/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/50/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/50/expression = "// Subgraph: Lighten
out0 = in0;
out1 = in1;"
nodes/fragment/51/node = SubResource("VisualShaderNodeExpression_3q4jo")
nodes/fragment/51/position = Vector2(-2300, 1820)
nodes/fragment/51/size = Vector2(0, 0)
nodes/fragment/51/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/51/output_ports = "0,5,out0"
nodes/fragment/51/expression = "vec4 o50_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o50_l;
float o50_a;
o50_l = vec4(1.0, UV.y, 1.0, 1.0);
o50_a = 0.500000*1.0;
o50_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));

out0 = o50_b;"
nodes/fragment/52/node = SubResource("VisualShaderNodeExpression_7tb3d")
nodes/fragment/52/position = Vector2(1280, -1500)
nodes/fragment/52/size = Vector2(0, 0)
nodes/fragment/52/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/52/output_ports = "0,5,out0"
nodes/fragment/52/expression = "vec4 o51_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o51_l;
float o51_a;
o51_l = vec4(1.0, UV.y, 1.0, 1.0);
o51_a = 0.500000*1.0;
o51_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));

out0 = o51_b;"
nodes/fragment/53/node = SubResource("VisualShaderNodeExpression_ebfw4")
nodes/fragment/53/position = Vector2(-1600, 1980)
nodes/fragment/53/size = Vector2(0, 0)
nodes/fragment/53/input_ports = "0,5,p_in;1,4,map"
nodes/fragment/53/output_ports = "0,5,out0"
nodes/fragment/53/expression = "vec3 o52_map = vec3(1.0);
float o52_rnd =  float(0.123450)+o52_map.z;

out0 = vec4(1.0), 0.000000*0.01745329251, 0.000000, vec2(o52_map.z, float(0.123450)))), false ? o52_rnd : 0.0);"
nodes/fragment/54/node = SubResource("VisualShaderNodeExpression_0mt7d")
nodes/fragment/54/position = Vector2(860, -1360)
nodes/fragment/54/size = Vector2(0, 0)
nodes/fragment/54/input_ports = "0,0,input"
nodes/fragment/54/output_ports = "0,5,out0"
nodes/fragment/54/expression = "out0 = o53_gradient_gradient_fct(UV.x);"
nodes/fragment/55/node = SubResource("VisualShaderNodeExpression_0fi46")
nodes/fragment/55/position = Vector2(-340, -1960)
nodes/fragment/55/size = Vector2(0, 0)
nodes/fragment/55/input_ports = "0,5,p_in"
nodes/fragment/55/output_ports = "0,5,out0"
nodes/fragment/55/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);"
nodes/fragment/56/node = SubResource("VisualShaderNodeExpression_4p81n")
nodes/fragment/56/position = Vector2(-540, -2020)
nodes/fragment/56/size = Vector2(0, 0)
nodes/fragment/56/input_ports = "0,0,p_in"
nodes/fragment/56/output_ports = "0,0,out0;1,0,out1;2,0,out2;3,0,out3;4,0,out4"
nodes/fragment/56/expression = "out0 = 1.0;
out1 = 1.0;
out2 = 1.0;
out3 = 1.0;
out4 = 1.0;"
nodes/fragment/57/node = SubResource("VisualShaderNodeExpression_hx40o")
nodes/fragment/57/position = Vector2(-980, -2020)
nodes/fragment/57/size = Vector2(0, 0)
nodes/fragment/57/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/57/output_ports = "0,5,out0"
nodes/fragment/57/expression = "vec4 o56_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o56_l;
float o56_a;
o56_l = vec4(1.0, UV.y, 1.0, 1.0);
o56_a = 0.500000*1.0;
o56_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));

out0 = o56_b;"
nodes/fragment/58/node = SubResource("VisualShaderNodeExpression_kwgc5")
nodes/fragment/58/position = Vector2(-720, -2020)
nodes/fragment/58/size = Vector2(0, 0)
nodes/fragment/58/input_ports = "0,5,p_in"
nodes/fragment/58/output_ports = "0,5,out0"
nodes/fragment/58/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));
vec3 o57_true = vec3(1.0)-o57_false;
out0 = vec4(o57_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/59/node = SubResource("VisualShaderNodeExpression_6vi1q")
nodes/fragment/59/position = Vector2(-1180, -2040)
nodes/fragment/59/size = Vector2(0, 0)
nodes/fragment/59/input_ports = "0,5,in0"
nodes/fragment/59/output_ports = "0,5,out0"
nodes/fragment/59/expression = "// Subgraph: dirt
out0 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/60/node = SubResource("VisualShaderNodeExpression_k184d")
nodes/fragment/60/position = Vector2(-1240, -1900)
nodes/fragment/60/size = Vector2(0, 0)
nodes/fragment/60/input_ports = "0,0,offset_in"
nodes/fragment/60/output_ports = "0,0,out0"
nodes/fragment/60/expression = "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 12838328.443450);"
nodes/fragment/61/node = SubResource("VisualShaderNodeExpression_ll26u")
nodes/fragment/61/position = Vector2(-500, -1820)
nodes/fragment/61/size = Vector2(0, 0)
nodes/fragment/61/input_ports = "0,5,in0"
nodes/fragment/61/output_ports = "0,5,out0"
nodes/fragment/61/expression = "// Subgraph: anisotropic_kuwahara
out0 = in0;"
nodes/fragment/62/node = SubResource("VisualShaderNodeExpression_7l81n")
nodes/fragment/62/position = Vector2(-720, -1820)
nodes/fragment/62/size = Vector2(0, 0)
nodes/fragment/62/input_ports = "0,5,in0"
nodes/fragment/62/output_ports = "0,5,out0"
nodes/fragment/62/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/63/node = SubResource("VisualShaderNodeExpression_tgx67")
nodes/fragment/63/position = Vector2(-940, -1820)
nodes/fragment/63/size = Vector2(0, 0)
nodes/fragment/63/input_ports = "0,5,in0"
nodes/fragment/63/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/63/expression = "// Subgraph: Plain Grunge
out0 = vec4(0.5, 0.5, 0.5, 1.0);
out1 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/64/node = SubResource("VisualShaderNodeExpression_jey1l")
nodes/fragment/64/position = Vector2(-180, -1840)
nodes/fragment/64/size = Vector2(0, 0)
nodes/fragment/64/input_ports = "0,5,p_b;1,5,p_l0;2,5,p_l1;3,0,p_a0;4,0,p_a1"
nodes/fragment/64/output_ports = "0,5,out0"
nodes/fragment/64/expression = "vec4 o63_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o63_l;
float o63_a;
o63_l = vec4(1.0, UV.y, 1.0, 1.0);
o63_a = 0.760000*1.0;
o63_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));
o63_l = vec4(1.0, UV.y, 1.0, 1.0);
o63_a = 0.710000*1.0;
o63_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));

out0 = o63_b;"
nodes/fragment/65/node = SubResource("VisualShaderNodeExpression_v0yk2")
nodes/fragment/65/position = Vector2(160, -1660)
nodes/fragment/65/size = Vector2(0, 0)
nodes/fragment/65/input_ports = "0,5,p_in;1,0,hmap;2,0,vmap;3,0,smap"
nodes/fragment/65/output_ports = "0,5,out0"
nodes/fragment/65/expression = "vec4 o64_rbga = vec4(UV.x, UV.y, 0.0, 1.0);
vec3 o64_hsv = rgb_to_hsv(o64_rbga.rgb);
o64_hsv.x = fract(o64_hsv.x+0.150000*1.000000*(0.5-0.5));
o64_hsv.y = clamp(o64_hsv.y+0.050000*1.000000*(0.5-0.5), 0.0, 1.0);
o64_hsv.z = clamp(o64_hsv.z+0.090000*1.000000*(0.5-0.5), 0.0, 1.0);
	
out0 = vec4(hsv_to_rgb(o64_hsv), o64_rbga.a);"
nodes/fragment/66/node = SubResource("VisualShaderNodeExpression_bd4at")
nodes/fragment/66/position = Vector2(-220, -160)
nodes/fragment/66/size = Vector2(0, 0)
nodes/fragment/66/input_ports = "0,5,in0"
nodes/fragment/66/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/66/expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/67/node = SubResource("VisualShaderNodeExpression_5ttaa")
nodes/fragment/67/position = Vector2(400, -1600)
nodes/fragment/67/size = Vector2(0, 0)
nodes/fragment/67/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/67/output_ports = "0,5,out0"
nodes/fragment/67/expression = "vec4 o66_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o66_l;
float o66_a;
o66_l = vec4(1.0, UV.y, 1.0, 1.0);
o66_a = 0.500000*1.0;
o66_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));

out0 = o66_b;"
nodes/fragment/68/node = SubResource("VisualShaderNodeExpression_aktgl")
nodes/fragment/68/position = Vector2(-480, -160)
nodes/fragment/68/size = Vector2(0, 0)
nodes/fragment/68/input_ports = "0,5,in0"
nodes/fragment/68/output_ports = "0,5,out0"
nodes/fragment/68/expression = "// Subgraph: smooth_curvature
out0 = in0;"
nodes/fragment/69/node = SubResource("VisualShaderNodeExpression_h2mrv")
nodes/fragment/69/position = Vector2(1200, -940)
nodes/fragment/69/size = Vector2(0, 0)
nodes/fragment/69/input_ports = ""
nodes/fragment/69/output_ports = "0,0,out0"
nodes/fragment/69/expression = "out0 = 0.870000;"
nodes/fragment/70/node = SubResource("VisualShaderNodeExpression_8620c")
nodes/fragment/70/position = Vector2(820, -880)
nodes/fragment/70/size = Vector2(0, 0)
nodes/fragment/70/input_ports = ""
nodes/fragment/70/output_ports = "0,0,out0"
nodes/fragment/70/expression = "out0 = 0.700000;"
nodes/fragment/71/node = SubResource("VisualShaderNodeExpression_eebn8")
nodes/fragment/71/position = Vector2(1080, -660)
nodes/fragment/71/size = Vector2(0, 0)
nodes/fragment/71/input_ports = ""
nodes/fragment/71/output_ports = "0,0,out0"
nodes/fragment/71/expression = "out0 = 0.160000;"
nodes/fragment/72/node = SubResource("VisualShaderNodeExpression_xv5ei")
nodes/fragment/72/position = Vector2(1380, -720)
nodes/fragment/72/size = Vector2(0, 0)
nodes/fragment/72/input_ports = "0,5,p_b;1,5,p_l0;2,5,p_l1;3,5,p_l2;4,5,p_l3;5,0,p_a0;6,0,p_a1;7,0,p_a2;8,0,p_a3"
nodes/fragment/72/output_ports = "0,5,out0"
nodes/fragment/72/expression = "vec4 o71_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o71_l;
float o71_a;
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 1.000000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 1.000000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 0.320000*1.0;
o71_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));
o71_l = vec4(1.0, UV.y, 1.0, 1.0);
o71_a = 0.230000*1.0;
o71_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));

out0 = o71_b;"
nodes/fragment/73/node = SubResource("VisualShaderNodeExpression_cpoxe")
nodes/fragment/73/position = Vector2(300, -500)
nodes/fragment/73/size = Vector2(0, 0)
nodes/fragment/73/input_ports = "0,5,in0"
nodes/fragment/73/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/73/expression = "// Subgraph: Plain Grunge
out0 = vec4(0.5, 0.5, 0.5, 1.0);
out1 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/74/node = SubResource("VisualShaderNodeExpression_66pkj")
nodes/fragment/74/position = Vector2(520, -500)
nodes/fragment/74/size = Vector2(0, 0)
nodes/fragment/74/input_ports = "0,5,in0"
nodes/fragment/74/output_ports = "0,5,out0"
nodes/fragment/74/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/75/node = SubResource("VisualShaderNodeExpression_6dypj")
nodes/fragment/75/position = Vector2(740, -500)
nodes/fragment/75/size = Vector2(0, 0)
nodes/fragment/75/input_ports = "0,5,in0"
nodes/fragment/75/output_ports = "0,5,out0"
nodes/fragment/75/expression = "// Subgraph: anisotropic_kuwahara
out0 = in0;"
nodes/fragment/76/node = SubResource("VisualShaderNodeExpression_q2p33")
nodes/fragment/76/position = Vector2(0, -580)
nodes/fragment/76/size = Vector2(0, 0)
nodes/fragment/76/input_ports = "0,0,offset_in"
nodes/fragment/76/output_ports = "0,0,out0"
nodes/fragment/76/expression = "out0 = old_fbm_2d_perlin(UV, vec2(6.000000, 6.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 10546592.123450);"
nodes/fragment/77/node = SubResource("VisualShaderNodeExpression_6u5fx")
nodes/fragment/77/position = Vector2(60, -720)
nodes/fragment/77/size = Vector2(0, 0)
nodes/fragment/77/input_ports = "0,5,in0"
nodes/fragment/77/output_ports = "0,5,out0"
nodes/fragment/77/expression = "// Subgraph: dirt
out0 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/78/node = SubResource("VisualShaderNodeExpression_qceso")
nodes/fragment/78/position = Vector2(260, -700)
nodes/fragment/78/size = Vector2(0, 0)
nodes/fragment/78/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/78/output_ports = "0,5,out0"
nodes/fragment/78/expression = "vec4 o77_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o77_l;
float o77_a;
o77_l = vec4(1.0, UV.y, 1.0, 1.0);
o77_a = 0.500000*1.0;
o77_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));

out0 = o77_b;"
nodes/fragment/79/node = SubResource("VisualShaderNodeExpression_vt8ji")
nodes/fragment/79/position = Vector2(700, -700)
nodes/fragment/79/size = Vector2(0, 0)
nodes/fragment/79/input_ports = "0,0,p_in"
nodes/fragment/79/output_ports = "0,0,out0;1,0,out1;2,0,out2;3,0,out3;4,0,out4"
nodes/fragment/79/expression = "out0 = 1.0;
out1 = 1.0;
out2 = 1.0;
out3 = 1.0;
out4 = 1.0;"
nodes/fragment/80/node = SubResource("VisualShaderNodeExpression_k5j1y")
nodes/fragment/80/position = Vector2(520, -700)
nodes/fragment/80/size = Vector2(0, 0)
nodes/fragment/80/input_ports = "0,5,p_in"
nodes/fragment/80/output_ports = "0,5,out0"
nodes/fragment/80/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));
vec3 o79_true = vec3(1.0)-o79_false;
out0 = vec4(o79_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/81/node = SubResource("VisualShaderNodeExpression_v3x6y")
nodes/fragment/81/position = Vector2(900, -640)
nodes/fragment/81/size = Vector2(0, 0)
nodes/fragment/81/input_ports = "0,5,p_in"
nodes/fragment/81/output_ports = "0,5,out0"
nodes/fragment/81/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);"
nodes/fragment/82/node = SubResource("VisualShaderNodeExpression_b8pue")
nodes/fragment/82/position = Vector2(1060, -520)
nodes/fragment/82/size = Vector2(0, 0)
nodes/fragment/82/input_ports = "0,5,p_b;1,5,p_l0;2,5,p_l1;3,0,p_a0;4,0,p_a1"
nodes/fragment/82/output_ports = "0,5,out0"
nodes/fragment/82/expression = "vec4 o81_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o81_l;
float o81_a;
o81_l = vec4(1.0, UV.y, 1.0, 1.0);
o81_a = 0.760000*1.0;
o81_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));
o81_l = vec4(1.0, UV.y, 1.0, 1.0);
o81_a = 0.710000*1.0;
o81_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));

out0 = o81_b;"
nodes/fragment/83/node = SubResource("VisualShaderNodeExpression_dpp86")
nodes/fragment/83/position = Vector2(1540, -60)
nodes/fragment/83/size = Vector2(0, 0)
nodes/fragment/83/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/83/output_ports = "0,5,out0"
nodes/fragment/83/expression = "vec4 o82_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o82_l;
float o82_a;
o82_l = vec4(1.0, UV.y, 1.0, 1.0);
o82_a = 0.500000*1.0;
o82_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));

out0 = o82_b;"
nodes/fragment/84/node = SubResource("VisualShaderNodeExpression_3reae")
nodes/fragment/84/position = Vector2(-4700, -760)
nodes/fragment/84/size = Vector2(0, 0)
nodes/fragment/84/input_ports = "0,5,p_i;1,0,p_tx;2,0,p_ty;3,0,p_r;4,0,p_sx;5,0,p_sy"
nodes/fragment/84/output_ports = "0,5,out0"
nodes/fragment/84/expression = "out0 = vec4(UV, 0.0, 1.0);"
nodes/fragment/85/node = SubResource("VisualShaderNodeExpression_cq1w4")
nodes/fragment/85/position = Vector2(-4000, 120)
nodes/fragment/85/size = Vector2(0, 0)
nodes/fragment/85/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/85/output_ports = "0,5,out0"
nodes/fragment/85/expression = "vec4 o84_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o84_l;
float o84_a;
o84_l = vec4(1.0, UV.y, 1.0, 1.0);
o84_a = 0.500000*1.0;
o84_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));

out0 = o84_b;"
nodes/fragment/86/node = SubResource("VisualShaderNodeExpression_xb8k0")
nodes/fragment/86/position = Vector2(1840, -700)
nodes/fragment/86/size = Vector2(0, 0)
nodes/fragment/86/input_ports = "0,4,p_in"
nodes/fragment/86/output_ports = "0,4,out0"
nodes/fragment/86/expression = "out0 = o85_fct(UV);"
nodes/fragment/87/node = SubResource("VisualShaderNodeExpression_60d07")
nodes/fragment/87/position = Vector2(1640, -700)
nodes/fragment/87/size = Vector2(0, 0)
nodes/fragment/87/input_ports = "0,5,in0"
nodes/fragment/87/output_ports = "0,5,out0"
nodes/fragment/87/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/88/node = SubResource("VisualShaderNodeExpression_wfuth")
nodes/fragment/88/position = Vector2(-5360, 1400)
nodes/fragment/88/size = Vector2(0, 0)
nodes/fragment/88/input_ports = "0,0,offset_in"
nodes/fragment/88/output_ports = "0,0,out0"
nodes/fragment/88/expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);"
nodes/fragment/89/node = SubResource("VisualShaderNodeExpression_sd2c1")
nodes/fragment/89/position = Vector2(-5080, 1340)
nodes/fragment/89/size = Vector2(0, 0)
nodes/fragment/89/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/89/output_ports = "0,5,out0"
nodes/fragment/89/expression = "// Subgraph: multi_warp
out0 = in0;"
nodes/fragment/90/node = SubResource("VisualShaderNodeExpression_y7n8i")
nodes/fragment/90/position = Vector2(-3980, 960)
nodes/fragment/90/size = Vector2(0, 0)
nodes/fragment/90/input_ports = "0,5,in0"
nodes/fragment/90/output_ports = "0,5,out0;1,5,out1"
nodes/fragment/90/expression = "// Subgraph: SmoothCurvatureSplit
out0 = in0;
out1 = vec4(0.5, 0.5, 0.5, 1.0);"
nodes/fragment/91/node = SubResource("VisualShaderNodeExpression_k67vb")
nodes/fragment/91/position = Vector2(-3680, 1060)
nodes/fragment/91/size = Vector2(0, 0)
nodes/fragment/91/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/91/output_ports = "0,5,out0"
nodes/fragment/91/expression = "vec4 o90_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o90_l;
float o90_a;
o90_l = vec4(1.0, UV.y, 1.0, 1.0);
o90_a = 0.500000*1.0;
o90_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));

out0 = o90_b;"
nodes/fragment/92/node = SubResource("VisualShaderNodeExpression_jq86f")
nodes/fragment/92/position = Vector2(-4200, 960)
nodes/fragment/92/size = Vector2(0, 0)
nodes/fragment/92/input_ports = "0,5,in0"
nodes/fragment/92/output_ports = "0,5,out0"
nodes/fragment/92/expression = "// Subgraph: smooth_curvature
out0 = in0;"
nodes/fragment/93/node = SubResource("VisualShaderNodeExpression_yd3nu")
nodes/fragment/93/position = Vector2(-4100, 1140)
nodes/fragment/93/size = Vector2(0, 0)
nodes/fragment/93/input_ports = "0,0,offset_in"
nodes/fragment/93/output_ports = "0,0,out0"
nodes/fragment/93/expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 0.123450);"
nodes/fragment/94/node = SubResource("VisualShaderNodeExpression_teuj2")
nodes/fragment/94/position = Vector2(-3880, 1140)
nodes/fragment/94/size = Vector2(0, 0)
nodes/fragment/94/input_ports = "0,5,p_in"
nodes/fragment/94/output_ports = "0,5,out0"
nodes/fragment/94/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));
vec3 o93_true = vec3(1.0)-o93_false;
out0 = vec4(o93_false, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/95/node = SubResource("VisualShaderNodeExpression_sj1el")
nodes/fragment/95/position = Vector2(980, -1500)
nodes/fragment/95/size = Vector2(0, 0)
nodes/fragment/95/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/95/output_ports = "0,5,out0"
nodes/fragment/95/expression = "vec4 o94_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o94_l;
float o94_a;
o94_l = vec4(1.0, UV.y, 1.0, 1.0);
o94_a = 0.500000*1.0;
o94_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));

out0 = o94_b;"
nodes/fragment/96/node = SubResource("VisualShaderNodeExpression_gvso1")
nodes/fragment/96/position = Vector2(720, -1200)
nodes/fragment/96/size = Vector2(0, 0)
nodes/fragment/96/input_ports = "0,0,input"
nodes/fragment/96/output_ports = "0,5,out0"
nodes/fragment/96/expression = "out0 = o95_gradient_gradient_fct(UV.x);"
nodes/fragment/97/node = SubResource("VisualShaderNodeExpression_0y0vv")
nodes/fragment/97/position = Vector2(1680, -1300)
nodes/fragment/97/size = Vector2(0, 0)
nodes/fragment/97/input_ports = "0,5,p_in"
nodes/fragment/97/output_ports = "0,5,out0"
nodes/fragment/97/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);"
nodes/fragment/98/node = SubResource("VisualShaderNodeExpression_boewj")
nodes/fragment/98/position = Vector2(-6300, 940)
nodes/fragment/98/size = Vector2(0, 0)
nodes/fragment/98/input_ports = "0,0,offset_in"
nodes/fragment/98/output_ports = "0,0,out0"
nodes/fragment/98/expression = "out0 = old_fbm_2d_perlin(UV, vec2(16.000000, 16.000000), int(0.000000), int(1.000000), 0.500000, 0.000000, 0.123450);"
nodes/fragment/99/node = SubResource("VisualShaderNodeExpression_bpidm")
nodes/fragment/99/position = Vector2(-6000, 1200)
nodes/fragment/99/size = Vector2(0, 0)
nodes/fragment/99/input_ports = "0,5,p_in;1,0,p_d;2,0,strength_map"
nodes/fragment/99/output_ports = "0,5,out0"
nodes/fragment/99/expression = "vec2 o98_slope = o98_slope(UV, 0.100000);
vec2 o98_warp = o98_slope;
out0 = vec4(sin(UV.x*20.0)*0.5+0.5, sin(UV.y*20.0)*0.5+0.5, 0, 1);"
nodes/fragment/100/node = SubResource("VisualShaderNodeExpression_d5jlj")
nodes/fragment/100/position = Vector2(-5120, 1540)
nodes/fragment/100/size = Vector2(0, 0)
nodes/fragment/100/input_ports = "0,0,offset_in"
nodes/fragment/100/output_ports = "0,0,out0"
nodes/fragment/100/expression = "out0 = old_fbm_2d_perlin(UV, vec2(8.000000, 8.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 23827530.363450);"
nodes/fragment/101/node = SubResource("VisualShaderNodeExpression_sypkh")
nodes/fragment/101/position = Vector2(-4880, 1540)
nodes/fragment/101/size = Vector2(0, 0)
nodes/fragment/101/input_ports = "0,0,p_in"
nodes/fragment/101/output_ports = "0,0,out0"
nodes/fragment/101/expression = "float o100_x = 0.0*((-0.150000)-(-0.020000));
out0 = (-0.020000)+o100_x-mod(o100_x, max(0.000000, 0.00000001));"
nodes/fragment/102/node = SubResource("VisualShaderNodeExpression_yub2l")
nodes/fragment/102/position = Vector2(-3620, 1440)
nodes/fragment/102/size = Vector2(0, 0)
nodes/fragment/102/input_ports = "0,0,p_in;1,0,mask"
nodes/fragment/102/output_ports = "0,0,out0;1,4,out1;2,4,out2"
nodes/fragment/102/expression = "vec3 o101_instance_uv = vec3(0.0);
vec4 o101_rch = tiler_o101(UV, vec2(20.000000, 20.000000), int(2.000000), o101_instance_uv, vec2(float(9962693.243450)));
out0 = o101_rch.a;
out1 = o101_rch.rgb;
out2 = o101_instance_uv;"
nodes/fragment/103/node = SubResource("VisualShaderNodeExpression_tpolr")
nodes/fragment/103/position = Vector2(-4260, 1620)
nodes/fragment/103/size = Vector2(0, 0)
nodes/fragment/103/input_ports = "0,5,p_in"
nodes/fragment/103/output_ports = "0,5,out0"
nodes/fragment/103/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));
vec3 o102_true = vec3(1.0)-o102_false;
out0 = vec4(o102_true, vec4(0.5 ,0.5, 0.5, 1.0).a);"
nodes/fragment/104/node = SubResource("VisualShaderNodeExpression_81c6q")
nodes/fragment/104/position = Vector2(-3920, 1600)
nodes/fragment/104/size = Vector2(0, 0)
nodes/fragment/104/input_ports = ""
nodes/fragment/104/output_ports = "0,0,out0"
nodes/fragment/104/expression = "out0 = sphere(UV, vec2(0.500000, 0.500000), 0.500000);"
nodes/fragment/105/node = SubResource("VisualShaderNodeExpression_2vqal")
nodes/fragment/105/position = Vector2(-3420, 1080)
nodes/fragment/105/size = Vector2(0, 0)
nodes/fragment/105/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/105/output_ports = "0,5,out0"
nodes/fragment/105/expression = "vec4 o104_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o104_l;
float o104_a;
o104_l = vec4(1.0, UV.y, 1.0, 1.0);
o104_a = 0.500000*1.0;
o104_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));

out0 = o104_b;"
nodes/fragment/106/node = SubResource("VisualShaderNodeExpression_ipvtl")
nodes/fragment/106/position = Vector2(-3960, 1440)
nodes/fragment/106/size = Vector2(0, 0)
nodes/fragment/106/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/106/output_ports = "0,5,out0"
nodes/fragment/106/expression = "vec4 o105_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o105_l;
float o105_a;
o105_l = vec4(1.0, UV.y, 1.0, 1.0);
o105_a = 0.500000*1.0;
o105_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));

out0 = o105_b;"
nodes/fragment/107/node = SubResource("VisualShaderNodeExpression_nrs2s")
nodes/fragment/107/position = Vector2(-4260, 1440)
nodes/fragment/107/size = Vector2(0, 0)
nodes/fragment/107/input_ports = "0,0,in1;1,0,in2"
nodes/fragment/107/output_ports = "0,0,out0"
nodes/fragment/107/expression = "float o106_clamp_false = 0.000000+0.050000;
float o106_clamp_true = clamp(o106_clamp_false, 0.0, 1.0);

out0 = o106_clamp_true;"
nodes/fragment/108/node = SubResource("VisualShaderNodeExpression_xsmsg")
nodes/fragment/108/position = Vector2(-800, 1520)
nodes/fragment/108/size = Vector2(0, 0)
nodes/fragment/108/input_ports = "0,0,offset_in"
nodes/fragment/108/output_ports = "0,0,out0"
nodes/fragment/108/expression = "out0 = old_fbm_2d_perlin(UV, vec2(2.000000, 2.000000), int(0.000000), int(2.000000), 0.500000, 0.000000, 18860313.723450);"
nodes/fragment/109/node = SubResource("VisualShaderNodeExpression_3sbnf")
nodes/fragment/109/position = Vector2(-540, 1520)
nodes/fragment/109/size = Vector2(0, 0)
nodes/fragment/109/input_ports = "0,5,in0"
nodes/fragment/109/output_ports = "0,5,out0"
nodes/fragment/109/expression = "// Subgraph: normal_map2
out0 = in0;"
nodes/fragment/110/node = SubResource("VisualShaderNodeExpression_du8ya")
nodes/fragment/110/position = Vector2(-460, 1440)
nodes/fragment/110/size = Vector2(0, 0)
nodes/fragment/110/input_ports = "0,5,p_in"
nodes/fragment/110/output_ports = "0,5,out0"
nodes/fragment/110/expression = "out0 = rot2Dnm(0.0, 90.000000);"
nodes/fragment/111/node = SubResource("VisualShaderNodeExpression_imn8q")
nodes/fragment/111/position = Vector2(-1260, 1440)
nodes/fragment/111/size = Vector2(0, 0)
nodes/fragment/111/input_ports = "0,0,offset_in"
nodes/fragment/111/output_ports = "0,0,out0"
nodes/fragment/111/expression = "out0 = old_fbm_2d_perlin(UV, vec2(3.000000, 3.000000), int(0.000000), int(3.000000), 0.500000, 0.000000, 31919142.523450);"
nodes/fragment/112/node = SubResource("VisualShaderNodeExpression_im5r3")
nodes/fragment/112/position = Vector2(-1340, 1180)
nodes/fragment/112/size = Vector2(0, 0)
nodes/fragment/112/input_ports = "0,0,offset_in"
nodes/fragment/112/output_ports = "0,0,out0"
nodes/fragment/112/expression = "out0 = old_fbm_2d_perlin(UV, vec2(5.000000, 5.000000), int(0.000000), int(5.000000), 0.500000, 0.000000, 20966927.483450);"
nodes/fragment/113/node = SubResource("VisualShaderNodeExpression_3vtvw")
nodes/fragment/113/position = Vector2(-1020, 1460)
nodes/fragment/113/size = Vector2(0, 0)
nodes/fragment/113/input_ports = "0,5,in0"
nodes/fragment/113/output_ports = "0,5,out0"
nodes/fragment/113/expression = "// Subgraph: normal_map2
out0 = in0;"
nodes/fragment/114/node = SubResource("VisualShaderNodeExpression_jpvrh")
nodes/fragment/114/position = Vector2(-940, 1360)
nodes/fragment/114/size = Vector2(0, 0)
nodes/fragment/114/input_ports = "0,5,p_in"
nodes/fragment/114/output_ports = "0,5,out0"
nodes/fragment/114/expression = "out0 = rot2Dnm(0.0, 90.000000);"
nodes/fragment/115/node = SubResource("VisualShaderNodeExpression_l53wr")
nodes/fragment/115/position = Vector2(480, 1240)
nodes/fragment/115/size = Vector2(0, 0)
nodes/fragment/115/input_ports = "0,0,input"
nodes/fragment/115/output_ports = "0,5,out0"
nodes/fragment/115/expression = "out0 = o114_gradient_gradient_fct(UV.x);"
nodes/fragment/116/node = SubResource("VisualShaderNodeExpression_5c8ff")
nodes/fragment/116/position = Vector2(-840, 1180)
nodes/fragment/116/size = Vector2(0, 0)
nodes/fragment/116/input_ports = "0,5,p_in;1,5,p_nm"
nodes/fragment/116/output_ports = "0,5,out0"
nodes/fragment/116/expression = "out0 = o115_func(UV, 4.000000, 0.230000);"
nodes/fragment/117/node = SubResource("VisualShaderNodeExpression_ibjnm")
nodes/fragment/117/position = Vector2(-440, 1240)
nodes/fragment/117/size = Vector2(0, 0)
nodes/fragment/117/input_ports = "0,5,p_in;1,5,p_nm"
nodes/fragment/117/output_ports = "0,5,out0"
nodes/fragment/117/expression = "out0 = o116_func(UV, 3.000000, 0.894000);"
nodes/fragment/118/node = SubResource("VisualShaderNodeExpression_3oef2")
nodes/fragment/118/position = Vector2(-120, 1220)
nodes/fragment/118/size = Vector2(0, 0)
nodes/fragment/118/input_ports = "0,5,in0"
nodes/fragment/118/output_ports = "0,5,out0"
nodes/fragment/118/expression = "// Subgraph: denoiser
out0 = in0;"
nodes/fragment/119/node = SubResource("VisualShaderNodeExpression_kpp7i")
nodes/fragment/119/position = Vector2(180, 1240)
nodes/fragment/119/size = Vector2(0, 0)
nodes/fragment/119/input_ports = "0,5,p_in;1,5,p_nm"
nodes/fragment/119/output_ports = "0,5,out0"
nodes/fragment/119/expression = "out0 = o118_func(UV, 3.000000, 0.072000);"
nodes/fragment/120/node = SubResource("VisualShaderNodeExpression_5213t")
nodes/fragment/120/position = Vector2(80, 1500)
nodes/fragment/120/size = Vector2(0, 0)
nodes/fragment/120/input_ports = "0,5,p_in"
nodes/fragment/120/output_ports = "0,5,out0"
nodes/fragment/120/expression = "out0 = rot2Dnm(0.0, 111.900000);"
nodes/fragment/121/node = SubResource("VisualShaderNodeExpression_p1ccc")
nodes/fragment/121/position = Vector2(-100, 1600)
nodes/fragment/121/size = Vector2(0, 0)
nodes/fragment/121/input_ports = "0,5,in0"
nodes/fragment/121/output_ports = "0,5,out0"
nodes/fragment/121/expression = "// Subgraph: normal_map2
out0 = in0;"
nodes/fragment/122/node = SubResource("VisualShaderNodeExpression_bxcso")
nodes/fragment/122/position = Vector2(-380, 1780)
nodes/fragment/122/size = Vector2(0, 0)
nodes/fragment/122/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/122/output_ports = "0,5,out0"
nodes/fragment/122/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/123/node = SubResource("VisualShaderNodeExpression_6ph8k")
nodes/fragment/123/position = Vector2(-1760, 1860)
nodes/fragment/123/size = Vector2(0, 0)
nodes/fragment/123/input_ports = "0,5,in0"
nodes/fragment/123/output_ports = "0,5,out0"
nodes/fragment/123/expression = "// Subgraph: auto_tones
out0 = in0;"
nodes/fragment/124/node = SubResource("VisualShaderNodeExpression_e7m0w")
nodes/fragment/124/position = Vector2(1540, -1500)
nodes/fragment/124/size = Vector2(0, 0)
nodes/fragment/124/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/124/output_ports = "0,5,out0"
nodes/fragment/124/expression = "vec4 o123_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o123_l;
float o123_a;
o123_l = vec4(1.0, UV.y, 1.0, 1.0);
o123_a = 0.500000*1.0;
o123_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));

out0 = o123_b;"
nodes/fragment/125/node = SubResource("VisualShaderNodeExpression_hmubd")
nodes/fragment/125/position = Vector2(-280, 460)
nodes/fragment/125/size = Vector2(0, 0)
nodes/fragment/125/input_ports = "0,5,in0"
nodes/fragment/125/output_ports = "0,5,out0"
nodes/fragment/125/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/126/node = SubResource("VisualShaderNodeExpression_4kj7t")
nodes/fragment/126/position = Vector2(1080, -840)
nodes/fragment/126/size = Vector2(0, 0)
nodes/fragment/126/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/126/output_ports = "0,5,out0"
nodes/fragment/126/expression = "vec4 o125_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o125_l;
float o125_a;
o125_l = vec4(1.0, UV.y, 1.0, 1.0);
o125_a = 0.500000*1.0;
o125_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));

out0 = o125_b;"
nodes/fragment/127/node = SubResource("VisualShaderNodeExpression_vwi2u")
nodes/fragment/127/position = Vector2(-3120, 1080)
nodes/fragment/127/size = Vector2(0, 0)
nodes/fragment/127/input_ports = "0,5,p_in"
nodes/fragment/127/output_ports = "0,5,out0"
nodes/fragment/127/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);"
nodes/fragment/128/node = SubResource("VisualShaderNodeExpression_q20hv")
nodes/fragment/128/position = Vector2(1160, -340)
nodes/fragment/128/size = Vector2(0, 0)
nodes/fragment/128/input_ports = "0,0,input"
nodes/fragment/128/output_ports = "0,5,out0"
nodes/fragment/128/expression = "out0 = o127_gradient_gradient_fct(UV.x);"
nodes/fragment/129/node = SubResource("VisualShaderNodeExpression_c1lbb")
nodes/fragment/129/position = Vector2(-200, 80)
nodes/fragment/129/size = Vector2(0, 0)
nodes/fragment/129/input_ports = "0,5,p_in"
nodes/fragment/129/output_ports = "0,5,out0"
nodes/fragment/129/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);"
nodes/fragment/130/node = SubResource("VisualShaderNodeExpression_lgbjq")
nodes/fragment/130/position = Vector2(60, 80)
nodes/fragment/130/size = Vector2(0, 0)
nodes/fragment/130/input_ports = "0,5,p_in"
nodes/fragment/130/output_ports = "0,5,out0"
nodes/fragment/130/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);"
nodes/fragment/131/node = SubResource("VisualShaderNodeExpression_yrghc")
nodes/fragment/131/position = Vector2(-4320, 720)
nodes/fragment/131/size = Vector2(0, 0)
nodes/fragment/131/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/131/output_ports = "0,5,out0"
nodes/fragment/131/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/132/node = SubResource("VisualShaderNodeExpression_dpwim")
nodes/fragment/132/position = Vector2(-520, -1300)
nodes/fragment/132/size = Vector2(0, 0)
nodes/fragment/132/input_ports = "0,0,input"
nodes/fragment/132/output_ports = "0,5,out0"
nodes/fragment/132/expression = "out0 = o131_gradient_gradient_fct(UV.x);"
nodes/fragment/133/node = SubResource("VisualShaderNodeExpression_dmiji")
nodes/fragment/133/position = Vector2(-320, -1400)
nodes/fragment/133/size = Vector2(0, 0)
nodes/fragment/133/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/133/output_ports = "0,5,out0"
nodes/fragment/133/expression = "vec4 o132_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o132_l;
float o132_a;
o132_l = vec4(1.0, UV.y, 1.0, 1.0);
o132_a = 0.500000*1.0;
o132_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));

out0 = o132_b;"
nodes/fragment/134/node = SubResource("VisualShaderNodeExpression_lpls0")
nodes/fragment/134/position = Vector2(-4080, 720)
nodes/fragment/134/size = Vector2(0, 0)
nodes/fragment/134/input_ports = "0,0,in1;1,0,in2"
nodes/fragment/134/output_ports = "0,0,out0"
nodes/fragment/134/expression = "float o133_clamp_false = pow(0.000000,2.000000);
float o133_clamp_true = clamp(o133_clamp_false, 0.0, 1.0);

out0 = o133_clamp_true;"
nodes/fragment/135/node = SubResource("VisualShaderNodeExpression_g74rd")
nodes/fragment/135/position = Vector2(-80, -1400)
nodes/fragment/135/size = Vector2(0, 0)
nodes/fragment/135/input_ports = "0,5,p_in"
nodes/fragment/135/output_ports = "0,5,out0"
nodes/fragment/135/expression = "vec4 o134_rbga = vec4(UV.x, UV.y, 0.0, 1.0);
vec3 o134_hsv = rgb_to_hsv(o134_rbga.rgb);
o134_hsv.x += (-0.007816);
o134_hsv.y = clamp(o134_hsv.y*1.000000, 0.0, 1.0);
o134_hsv.z = clamp(o134_hsv.z*1.000000, 0.0, 1.0);
	
out0 = vec4(hsv_to_rgb(o134_hsv), o134_rbga.a);"
nodes/fragment/136/node = SubResource("VisualShaderNodeExpression_pnw38")
nodes/fragment/136/position = Vector2(220, -1400)
nodes/fragment/136/size = Vector2(0, 0)
nodes/fragment/136/input_ports = "0,5,p_b;1,5,p_l;2,0,p_a"
nodes/fragment/136/output_ports = "0,5,out0"
nodes/fragment/136/expression = "vec4 o135_b = vec4(UV.x, 1.0, 1.0, 1.0);
vec4 o135_l;
float o135_a;
o135_l = vec4(1.0, UV.y, 1.0, 1.0);
o135_a = 0.500000*1.0;
o135_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));

out0 = o135_b;"
nodes/fragment/137/node = SubResource("VisualShaderNodeExpression_aag3n")
nodes/fragment/137/position = Vector2(-280, -1120)
nodes/fragment/137/size = Vector2(0, 0)
nodes/fragment/137/input_ports = "0,5,in0;1,5,in1"
nodes/fragment/137/output_ports = "0,5,out0"
nodes/fragment/137/expression = "// Subgraph: Gaussian Blur HQ
out0 = in0;"
nodes/fragment/138/node = SubResource("VisualShaderNodeExpression_5lt7j")
nodes/fragment/138/position = Vector2(-40, -1120)
nodes/fragment/138/size = Vector2(0, 0)
nodes/fragment/138/input_ports = "0,5,in0"
nodes/fragment/138/output_ports = "0,5,out0"
nodes/fragment/138/expression = "// Subgraph: auto_tones
out0 = in0;"
nodes/fragment/139/node = SubResource("VisualShaderNodeExpression_febhn")
nodes/fragment/139/position = Vector2(-60.22736, -1212.2789)
nodes/fragment/139/size = Vector2(0, 0)
nodes/fragment/139/input_ports = ""
nodes/fragment/139/output_ports = "0,5,out0"
nodes/fragment/139/expression = "out0 = vec4(0.154129, 0.270299, 0.433594, 1.000000);"
nodes/fragment/140/node = SubResource("VisualShaderNodeExpression_lanyr")
nodes/fragment/140/position = Vector2(-1720, 120)
nodes/fragment/140/size = Vector2(0, 0)
nodes/fragment/140/input_ports = "0,5,in0"
nodes/fragment/140/output_ports = "0,5,out0"
nodes/fragment/140/expression = "// Buffer pass-through
out0 = in0;"
nodes/fragment/141/node = SubResource("VisualShaderNodeGlobalExpression_lc8i5")
nodes/fragment/141/position = Vector2(-1000, -500)
nodes/fragment/141/size = Vector2(0, 0)
nodes/fragment/141/input_ports = ""
nodes/fragment/141/output_ports = ""
nodes/fragment/141/expression = "float rand(vec2 x) {
    return fract(cos(mod(dot(x, vec2(13.9898, 8.141)), 3.14)) * 43758.5453);
}
vec2 rand2(vec2 x) {
    return fract(cos(mod(vec2(dot(x, vec2(13.9898, 8.141)),
        dot(x, vec2(3.4562, 17.398))), vec2(3.14))) * 43758.5453);
}
vec3 rand3(vec2 x) {
    return fract(cos(mod(vec3(dot(x, vec2(13.9898, 8.141)),
        dot(x, vec2(3.4562, 17.398)),
        dot(x, vec2(13.254, 8.976))), vec3(3.14))) * 43758.5453);
}


vec2 get_from_tileset(float count, float seed, vec2 uv) {
	return clamp((uv+floor(rand2(vec2(seed))*count))/count, vec2(0.0), vec2(1.0));
}

vec2 old_custom_uv_transform(vec2 uv, vec2 cst_scale, float rnd_rotate, float rnd_scale, vec2 seed) {
	seed = rand2(seed);
	uv -= vec2(0.5);
	float angle = (seed.x * 2.0 - 1.0) * rnd_rotate;
	float ca = cos(angle);
	float sa = sin(angle);
	uv = vec2(ca*uv.x+sa*uv.y, -sa*uv.x+ca*uv.y);
	uv *= (seed.y-0.5)*2.0*rnd_scale+1.0;
	uv /= cst_scale;
	uv += vec2(0.5);
	return uv;
}


vec4 tiler_o2(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.560000+1.0;
				pv /= vec2(0.080000, 0.080000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

float sphere(vec2 uv, vec2 c, float r) {
	uv -= c;
	uv /= r;
	return 2.0*r*sqrt(max(0.0, 1.0-dot(uv, uv)));
}


float old_value_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float p00 = rand(mod(o, size));
	float p01 = rand(mod(o + vec2(0.0, 1.0), size));
	float p10 = rand(mod(o + vec2(1.0, 0.0), size));
	float p11 = rand(mod(o + vec2(1.0, 1.0), size));
	p00 = sin(p00 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p01 = sin(p01 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p10 = sin(p10 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	p11 = sin(p11 * 6.28318530718 + offset * 6.28318530718) / 2.0 + 0.5;
	vec2 t =  f * f * f * (f * (f * 6.0 - 15.0) + 10.0);
	return mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);
}

float old_fbm_2d_value(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_value_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_perlin_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float a00 = rand(mod(o, size)) * 6.28318530718 + offset * 6.28318530718;
	float a01 = rand(mod(o + vec2(0.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;
	float a10 = rand(mod(o + vec2(1.0, 0.0), size)) * 6.28318530718 + offset * 6.28318530718;
	float a11 = rand(mod(o + vec2(1.0, 1.0), size)) * 6.28318530718 + offset * 6.28318530718;
	vec2 v00 = vec2(cos(a00), sin(a00));
	vec2 v01 = vec2(cos(a01), sin(a01));
	vec2 v10 = vec2(cos(a10), sin(a10));
	vec2 v11 = vec2(cos(a11), sin(a11));
	float p00 = dot(v00, f);
	float p01 = dot(v01, f - vec2(0.0, 1.0));
	float p10 = dot(v10, f - vec2(1.0, 0.0));
	float p11 = dot(v11, f - vec2(1.0, 1.0));
	vec2 t =  f * f * f * (f * (f * 6.0 - 15.0) + 10.0);
	return 0.5 + mix(mix(p00, p10, t.x), mix(p01, p11, t.x), t.y);
}

float old_fbm_2d_perlin(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_perlin_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_perlinabs_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	return abs(2.0*old_perlin_noise_2d(coord, size, offset, seed)-1.0);
}

float old_fbm_2d_perlinabs(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_perlinabs_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_fbm_2d_mod289(float x) {
	return x - floor(x * (1.0 / 289.0)) * 289.0;
}

float old_fbm_2d_permute(float x) {
	return old_fbm_2d_mod289(((x * 34.0) + 1.0) * x);
}

vec2 old_fbm_2d_rgrad2(vec2 p, float rot, float seed) {
	float u = old_fbm_2d_permute(old_fbm_2d_permute(p.x) + p.y) * 0.0243902439 + rot; // Rotate by shift
	u = fract(u+seed) * 6.28318530718; // 2*pi
	return vec2(cos(u), sin(u));
}

float old_simplex_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	coord *= 2.0; // needed for it to tile
	coord += rand2(vec2(seed, 1.0-seed)) + size;
	size *= 2.0; // needed for it to tile
	coord.y += 0.001;
	vec2 uv = vec2(coord.x + coord.y*0.5, coord.y);
	vec2 i0 = floor(uv);
	vec2 f0 = fract(uv);
	vec2 i1 = (f0.x > f0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
	vec2 p0 = vec2(i0.x - i0.y * 0.5, i0.y);
	vec2 p1 = vec2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y);
	vec2 p2 = vec2(p0.x + 0.5, p0.y + 1.0);
	i1 = i0 + i1;
	vec2 i2 = i0 + vec2(1.0, 1.0);
	vec2 d0 = coord - p0;
	vec2 d1 = coord - p1;
	vec2 d2 = coord - p2;
	vec3 xw = mod(vec3(p0.x, p1.x, p2.x), size.x);
	vec3 yw = mod(vec3(p0.y, p1.y, p2.y), size.y);
	vec3 iuw = xw + 0.5 * yw;
	vec3 ivw = yw;
	vec2 g0 = old_fbm_2d_rgrad2(vec2(iuw.x, ivw.x), offset, seed);
	vec2 g1 = old_fbm_2d_rgrad2(vec2(iuw.y, ivw.y), offset, seed);
	vec2 g2 = old_fbm_2d_rgrad2(vec2(iuw.z, ivw.z), offset, seed);
	vec3 w = vec3(dot(g0, d0), dot(g1, d1), dot(g2, d2));
	vec3 t = 0.8 - vec3(dot(d0, d0), dot(d1, d1), dot(d2, d2));
	t = max(t, vec3(0.0));
	vec3 t2 = t * t;
	vec3 t4 = t2 * t2;
	float n = dot(t4, w);
	return 0.5 + 5.5 * n;
}

float old_fbm_2d_simplex(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_simplex_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node =  0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718 * node);
			vec2 diff = neighbor + node - f;
			float dist = length(diff);
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular2_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = length(diff);
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular2(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular2_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular3_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = abs((diff).x) + abs((diff).y);
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular3(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular3_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular4_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = abs((diff).x) + abs((diff).y);
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular4(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular4_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular5_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.5 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = max(abs((diff).x), abs((diff).y));
			min_dist = min(min_dist, dist);
		}
	}
	return min_dist;
}

float old_fbm_2d_cellular5(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular5_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

float old_cellular6_noise_2d(vec2 coord, vec2 size, float offset, float seed) {
	vec2 o = floor(coord)+rand2(vec2(seed, 1.0-seed))+size;
	vec2 f = fract(coord);
	float min_dist1 = 2.0;
	float min_dist2 = 2.0;
	for(float x = -1.0; x <= 1.0; x++) {
		for(float y = -1.0; y <= 1.0; y++) {
			vec2 neighbor = vec2(float(x),float(y));
			vec2 node = rand2(mod(o + vec2(x, y), size)) + vec2(x, y);
			node = 0.5 + 0.25 * sin(offset * 6.28318530718 + 6.28318530718*node);
			vec2 diff = neighbor + node - f;
			float dist = max(abs((diff).x), abs((diff).y));
			if (min_dist1 > dist) {
				min_dist2 = min_dist1;
				min_dist1 = dist;
			} else if (min_dist2 > dist) {
				min_dist2 = dist;
			}
		}
	}
	return min_dist2-min_dist1;
}

float old_fbm_2d_cellular6(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_cellular6_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}

// MIT License Inigo Quilez - https://www.shadertoy.com/view/Xd23Dh
float old_voronoise_noise_2d( vec2 coord, vec2 size, float offset, float seed) {
	vec2 i = floor(coord) + rand2(vec2(seed, 1.0-seed)) + size;
	vec2 f = fract(coord);
	
	vec2 a = vec2(0.0);
	
	for( int y=-2; y<=2; y++ ) {
		for( int x=-2; x<=2; x++ ) {
			vec2  g = vec2( float(x), float(y) );
			vec3  o = rand3( mod(i + g, size) + vec2(seed) );
			o.xy += 0.25 * sin(offset * 6.28318530718 + 6.28318530718*o.xy);
			vec2  d = g - f + o.xy;
			float w = pow( 1.0-smoothstep(0.0, 1.414, length(d)), 1.0 );
			a += vec2(o.z*w,w);
		}
	}
	
	return a.x/a.y;
}

float old_fbm_2d_voronoise(vec2 coord, vec2 size, int folds, int octaves, float persistence, float offset, float seed) {
	float normalize_factor = 0.0;
	float value = 0.0;
	float scale = 1.0;
	for (int i = 0; i < octaves; i++) {
		float noise = old_voronoise_noise_2d(coord*size, size, offset, seed+float(i));
		for (int f = 0; f < folds; ++f) {
			noise = abs(2.0*noise-1.0);
		}
		value += noise * scale;
		normalize_factor += scale;
		size *= 2.0;
		scale *= persistence;
	}
	return value / normalize_factor;
}


vec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*c1 + (1.0-opacity)*c2;
}

vec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	if (rand(uv) < opacity) {
		return c1;
	} else {
		return c2;
	}
}

vec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*c1*c2 + (1.0-opacity)*c2;
}

vec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;
}

float blend_overlay_f(float c1, float c2) {
	return (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));
}

vec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;
}

float blend_soft_light_f(float c1, float c2) {
	return (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);
}

vec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_burn_f(float c1, float c2) {
	return (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);
}

vec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_dodge_f(float c1, float c2) {
	return (c1==1.0)?c1:min(c2/(1.0-c1),1.0);
}

vec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*max(c1, c2) + (1.0-opacity)*c2;
}

vec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*min(c1, c2) + (1.0-opacity)*c2;
}

vec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;
}

vec3 blend_additive(vec2 uv, vec3 c1, vec3 c2, float oppacity) {
	return c2 + c1 * oppacity;
}

vec3 blend_addsub(vec2 uv, vec3 c1, vec3 c2, float oppacity) {
	return c2 + (c1 - .5) * 2.0 * oppacity;
}

vec3 rgb_to_hsv(vec3 c) {
	vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
	vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);
	vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);

	float d = q.x - min(q.w, q.y);
	float e = 1.0e-10;
	return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}

vec3 hsv_to_rgb(vec3 c) {
	vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
	vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
	return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}


float blend_linear_light_f(float c1, float c2) {
	return (c1 + 2.0 * c2) - 1.0;
}

vec3 blend_linear_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
return 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;
}

float blend_vivid_light_f(float c1, float c2) {
	return (c1 < 0.5) ? 1.0 - (1.0 - c2) / (2.0 * c1) : c2 / (2.0 * (1.0 - c1));
}

vec3 blend_vivid_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_pin_light_f( float c1, float c2) {
	return (2.0 * c1 - 1.0 > c2) ? 2.0 * c1 - 1.0 : ((c1 < 0.5 * c2) ? 2.0 * c1 : c2);
}

vec3 blend_pin_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

float blend_hard_mix_f(float c1, float c2) {
	return floor(c1 + c2);
}

vec3 blend_hard_mix(vec2 uv, vec3 c1, vec3 c2, float opacity) {
		return 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;
}

float blend_exclusion_f(float c1, float c2) {
	return c1 + c2 - 2.0 * c1 * c2;
}

vec3 blend_exclusion(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	return 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;
}

vec3 blend_hue(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	vec3 outcol = c2;

	vec3 hsv, hsv2, tmp;
	hsv2 = rgb_to_hsv(c1);

	if (hsv2.y != 0.0) {
		hsv = rgb_to_hsv(outcol);
		hsv.x = hsv2.x;
		tmp = hsv_to_rgb(hsv);
		outcol = mix(outcol, tmp, opacity);
	}
	return outcol;
}

vec3 blend_saturation(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 outcol = c2;
	vec3 hsv, hsv2;

	hsv = rgb_to_hsv(outcol);

	if (hsv.y != 0.0) {
		hsv2 = rgb_to_hsv(c1);

		hsv.y = facm * hsv.y + opacity * hsv2.y;
		outcol = hsv_to_rgb(hsv);
	}
	return outcol;
}

vec3 blend_color(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 outcol = c2;

	vec3 hsv, hsv2, tmp;
	hsv2 = rgb_to_hsv(c1);

	if (hsv2.y != 0.0) {
		hsv = rgb_to_hsv(outcol);
		hsv.x = hsv2.x;
		hsv.y = hsv2.y;
		tmp = hsv_to_rgb(hsv);

		outcol = mix(outcol, tmp, opacity);
	}
	return outcol;
}

vec3 blend_value(vec2 uv, vec3 c1, vec3 c2, float opacity) {
	float facm = 1.0 - opacity;

	vec3 hsv, hsv2;
	hsv = rgb_to_hsv(c2);
	hsv2 = rgb_to_hsv(c1);

	hsv.z = facm * hsv.z + opacity * hsv2.z;
	return hsv_to_rgb(hsv);
}

float pingpong(float a, float b)
{
  return (b != 0.0) ? abs(fract((a - b) / (b * 2.0)) * b * 2.0 - b) : 0.0;
}

vec2 o21_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 o26_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.302719325) {
    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));
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}


vec4 o28_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.309326172, 0.222656250, 0.500000000, 1.000000000);
  } else if (x < 0.826773866) {
    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));
  }
  return vec4(0.409725666, 0.319152832, 0.492187500, 1.000000000);
}


vec2 transform2_clamp(vec2 uv) {
	return clamp(uv, vec2(0.0), vec2(1.0));
}

vec2 transform2(vec2 uv, vec2 translate, float rotate, vec2 scale) {
 	vec2 rv;
	uv -= translate;
	uv -= vec2(0.5);
	rv.x = cos(rotate)*uv.x + sin(rotate)*uv.y;
	rv.y = -sin(rotate)*uv.x + cos(rotate)*uv.y;
	rv /= scale;
	rv += vec2(0.5);
	return rv;	
}

vec2 o31_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 o33_gradient_gradient_fct(float x) {
  if (x < 0.130474854) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}


float shape_circle(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float distance = length(uv);
	return clamp((1.0-distance/size)/edge, 0.0, 1.0);
}

float shape_polygon(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = atan(uv.x, uv.y)+3.14159265359;
	float slice = 6.28318530718/sides;
	return clamp((1.0-(cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/size)/edge, 0.0, 1.0);
}

float shape_star(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = atan(uv.x, uv.y);
	float slice = 6.28318530718/sides;
	return 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);
}

float shape_curved_star(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = max(edge, 1.0e-8);
	float angle = 2.0*(atan(uv.x, uv.y)+3.14159265359);
	float slice = 6.28318530718/sides;
	return clamp((1.0-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv)/size)/edge, 0.0, 1.0);
}

float shape_rays(vec2 uv, float sides, float size, float edge) {
	uv = 2.0*uv-1.0;
	edge = 0.5*max(edge, 1.0e-8)*size;
	float slice = 6.28318530718/sides;
	float angle = mod(atan(uv.x, uv.y)+3.14159265359, slice)/slice;
	return clamp(min((size-angle)/edge, angle/edge), 0.0, 1.0);
}



vec4 tiler_o36(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 118.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.510000+1.0;
				pv /= vec2(0.390000, 0.390000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec2 o40_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 tiler_o42(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.520000+1.0;
				pv /= vec2(0.007000, 0.006000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-1.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 tiler_o48(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 179.100000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.250000+1.0;
				pv /= vec2(0.060000, 0.060000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-0.000000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 o53_gradient_gradient_fct(float x) {
  if (x < 0.477490569) {
    return vec4(0.566558838, 0.646175146, 0.917968750, 1.000000000);
  } else if (x < 0.890109964) {
    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));
  }
  return vec4(0.237335205, 0.328392029, 0.601562500, 1.000000000);
}


vec3 o85_fct(vec2 uv) {
	vec2 e = vec2(1.0/2048.0, 0.0);
	vec3 rv = 5.0*vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	rv -= vec3(0.0);
	return rv;
}

vec4 o95_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.606387622) {
    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));
  }
  return vec4(0.664062500, 0.352783203, 0.564355850, 1.000000000);
}


vec2 o98_slope(vec2 uv, float epsilon) {
	return vec2(0.0-0.0, 0.0-0.0);
}

vec4 tiler_o101(vec2 uv, vec2 tile, int overlap, inout vec3 instance_uv, vec2 _seed) {
	float c = 0.0;
	vec3 rc = vec3(0.0);
	vec3 rc1;
	for (int dx = -overlap; dx <= overlap; ++dx) {
		for (int dy = -overlap; dy <= overlap; ++dy) {
			vec2 pos = uv*tile+vec2(float(dx), float(dy)); pos = fract((floor(mod(pos, tile))+vec2(0.5))/tile)-vec2(0.5);
			vec2 seed = rand2(pos+_seed);
			rc1 = rand3(seed);
			vec2 tile_index = floor(uv * tile) + vec2(float(dx), float(dy));
			pos += vec2((0.000000/tile.x)*mod(mod(tile_index.y, tile.y), 2.0), 0.0)+1.000000*seed/tile;
			float mask = 1.0;
			if (mask > 0.01) {
				vec2 pv = fract(uv - pos)-vec2(0.5);
				seed = rand2(seed);
				float angle = (seed.x * 2.0 - 1.0) * 45.000000 * 0.01745329251;
				float ca = cos(angle);
				float sa = sin(angle);
				pv = vec2(ca*pv.x+sa*pv.y, -sa*pv.x+ca*pv.y);
				pv *= (seed.y-0.5)*2.0*0.350000+1.0;
				pv /= vec2(0.020000, 0.020000);
				pv += vec2(0.5);
				seed = rand2(seed);
				vec2 clamped_pv = clamp(pv, vec2(0.0), vec2(1.0));
				if (pv.x != clamped_pv.x || pv.y != clamped_pv.y) {
					continue;
				}
				vec2 full_uv = pv;
				pv = get_from_tileset( 1.0, seed.x, pv);
				float c1 = 0.0*mask*(1.0-0.310000*seed.x);
				c = max(c, c1);
				rc = mix(rc, rc1, step(c, c1));
				instance_uv = mix(instance_uv, vec3(full_uv, seed.x), step(c, c1));
			}
		}
	}
	return vec4(rc, c);
}

vec4 o114_gradient_gradient_fct(float x) {
  if (x < 0.499287435) {
    return vec4(0.000000000, 0.000000000, 0.000000000, 1.000000000);
  } else if (x < 0.725315251) {
    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));
  } else if (x < 0.932951993) {
    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));
  }
  return vec4(0.363281012, 1.000000000, 0.985077024, 1.000000000);
}


vec4 o127_gradient_gradient_fct(float x) {
  if (x < 0.000000000) {
    return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
  } else if (x < 1.000000000) {
    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));
  }
  return vec4(0.433593750, 0.433593750, 0.433593750, 1.000000000);
}


vec4 o131_gradient_gradient_fct(float x) {
  if (x < 0.280668076) {
    return vec4(0.763210058, 0.754547119, 0.839843750, 1.000000000);
  } else if (x < 0.717816078) {
    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));
  }
  return vec4(1.000000000, 1.000000000, 1.000000000, 1.000000000);
}
"
nodes/fragment/150/node = SubResource("VisualShaderNodeVec3Constant_0lehy")
nodes/fragment/150/position = Vector2(-400, 0)
nodes/fragment/151/node = SubResource("VisualShaderNodeFloatConstant_edn5s")
nodes/fragment/151/position = Vector2(-400, 160)
nodes/fragment/152/node = SubResource("VisualShaderNodeFloatConstant_5tyo0")
nodes/fragment/152/position = Vector2(-400, 240)
nodes/fragment/153/node = SubResource("VisualShaderNodeFloatConstant_081ib")
nodes/fragment/153/position = Vector2(-400, 400)
nodes/fragment/240/node = SubResource("VisualShaderNodeClamp_op5ly")
nodes/fragment/240/position = Vector2(-200, 480)
nodes/fragment/241/node = SubResource("VisualShaderNodeClamp_wwfgv")
nodes/fragment/241/position = Vector2(-200, 240)
nodes/fragment/connections = PackedInt32Array(2, 2, 0, 9, 5, 0, 6, 0, 4, 0, 3, 0, 6, 0, 3, 1, 10, 0, 11, 0, 13, 0, 12, 1, 11, 0, 14, 0, 14, 0, 12, 0, 10, 0, 15, 0, 15, 0, 16, 0, 16, 0, 14, 1, 18, 0, 19, 0, 20, 0, 8, 0, 21, 0, 22, 1, 19, 0, 22, 0, 22, 0, 27, 0, 24, 0, 25, 0, 25, 0, 28, 1, 25, 1, 28, 3, 28, 0, 0, 0, 36, 0, 32, 1, 32, 0, 33, 0, 34, 0, 33, 1, 33, 0, 37, 0, 35, 0, 31, 0, 31, 0, 32, 0, 7, 0, 38, 0, 30, 0, 39, 1, 37, 0, 41, 0, 40, 0, 41, 1, 41, 0, 38, 1, 39, 0, 20, 0, 42, 0, 24, 0, 42, 0, 29, 0, 44, 0, 43, 0, 8, 0, 45, 0, 43, 0, 45, 1, 30, 0, 46, 0, 46, 0, 43, 1, 47, 0, 49, 0, 50, 0, 42, 0, 49, 0, 50, 1, 48, 0, 51, 0, 8, 0, 51, 1, 51, 0, 49, 1, 49, 2, 53, 1, 47, 0, 53, 0, 53, 0, 54, 0, 54, 0, 52, 1, 63, 0, 62, 0, 62, 0, 61, 0, 59, 0, 57, 0, 60, 0, 57, 1, 61, 0, 64, 0, 57, 0, 58, 0, 58, 0, 56, 0, 56, 0, 64, 1, 56, 1, 55, 0, 55, 0, 64, 3, 64, 0, 65, 1, 64, 0, 65, 2, 64, 0, 65, 3, 23, 0, 65, 0, 65, 0, 67, 0, 66, 0, 67, 1, 67, 0, 26, 0, 41, 0, 68, 0, 68, 0, 66, 0, 73, 0, 74, 0, 74, 0, 75, 0, 77, 0, 78, 0, 76, 0, 78, 1, 75, 0, 82, 0, 78, 0, 80, 0, 80, 0, 79, 0, 79, 0, 82, 1, 79, 1, 81, 0, 81, 0, 82, 3, 69, 0, 72, 0, 71, 0, 72, 3, 82, 0, 72, 5, 28, 0, 83, 1, 83, 0, 0, 5, 50, 1, 52, 2, 41, 0, 84, 0, 38, 0, 85, 0, 84, 0, 85, 1, 85, 0, 39, 0, 87, 0, 86, 0, 88, 0, 89, 1, 92, 0, 90, 0, 90, 1, 91, 1, 93, 0, 94, 0, 94, 0, 91, 2, 30, 0, 26, 2, 25, 0, 96, 0, 96, 0, 95, 1, 97, 0, 28, 2, 89, 0, 13, 0, 98, 0, 99, 1, 3, 0, 99, 0, 9, 0, 10, 0, 9, 0, 89, 0, 99, 0, 18, 0, 99, 0, 9, 0, 100, 0, 101, 0, 101, 0, 13, 1, 12, 0, 92, 0, 12, 0, 91, 0, 12, 0, 48, 0, 90, 1, 103, 0, 91, 0, 105, 0, 102, 0, 105, 1, 105, 0, 8, 1, 103, 0, 106, 1, 104, 0, 102, 0, 91, 0, 107, 0, 107, 0, 106, 0, 106, 0, 102, 1, 30, 0, 8, 2, 27, 0, 20, 1, 27, 0, 30, 0, 111, 0, 113, 0, 113, 0, 114, 0, 114, 0, 116, 1, 112, 0, 116, 0, 108, 0, 109, 0, 109, 0, 110, 0, 110, 0, 117, 1, 116, 0, 117, 0, 117, 0, 118, 0, 121, 0, 120, 0, 118, 0, 119, 0, 120, 0, 119, 1, 123, 0, 122, 0, 122, 0, 121, 0, 119, 0, 115, 0, 49, 0, 123, 0, 52, 0, 124, 0, 50, 1, 124, 2, 115, 0, 124, 1, 50, 1, 125, 0, 70, 0, 126, 0, 105, 0, 127, 0, 127, 0, 126, 1, 126, 0, 72, 1, 30, 0, 72, 2, 30, 0, 128, 0, 128, 0, 72, 6, 24, 0, 129, 0, 129, 0, 130, 0, 72, 0, 87, 0, 130, 0, 72, 7, 30, 0, 131, 0, 29, 0, 133, 0, 132, 0, 133, 1, 26, 0, 95, 0, 124, 0, 28, 0, 95, 0, 52, 0, 134, 0, 132, 0, 131, 0, 134, 0, 133, 0, 135, 0, 135, 0, 136, 0, 136, 0, 26, 1, 50, 1, 137, 0, 137, 0, 138, 0, 138, 0, 136, 2, 139, 0, 136, 1, 45, 0, 140, 0, 140, 0, 50, 0, 30, 0, 95, 2, 30, 0, 97, 0, 50, 1, 83, 0, 50, 1, 72, 4, 42, 0, 2, 0, 42, 0, 17, 0, 17, 0, 240, 0, 240, 0, 0, 6, 86, 0, 241, 0, 241, 0, 0, 3, 150, 0, 0, 0, 151, 0, 0, 2, 152, 0, 0, 3, 153, 0, 0, 5)

[resource]
render_priority = 0
shader = SubResource("VisualShader_n073q")