[gd_scene load_steps=27 format=2] [ext_resource path="res://Assets/Maps/DM1/DM1_dev_materials.glb" type="PackedScene" id=1] [ext_resource path="res://Assets/Audio/SFX/Ambient_BuzzAndHum.wav" type="AudioStream" id=2] [ext_resource path="res://Classes/LevelComponents/SpawnPoint.tscn" type="PackedScene" id=9] [ext_resource path="res://Assets/Maps/DM1/OmniFlicker.gd" type="Script" id=10] [ext_resource path="res://Assets/Maps/DM1/SpotFlicker.gd" type="Script" id=11] [ext_resource path="res://Assets/Audio/SFX/Ambient_Pipes.wav" type="AudioStream" id=12] [ext_resource path="res://Classes/LevelComponents/SpawnPointsManager.gd" type="Script" id=13] [ext_resource path="res://Classes/LevelComponents/Killfloor.tscn" type="PackedScene" id=14] [sub_resource type="ProceduralSky" id=1] [sub_resource type="Environment" id=2] background_mode = 2 background_sky = SubResource( 1 ) tonemap_mode = 3 tonemap_white = 1.5 ss_reflections_max_steps = 256 ss_reflections_fade_in = 0.14489 ss_reflections_fade_out = 1.10957 ssao_intensity = 8.0 glow_enabled = true glow_levels/1 = true glow_levels/2 = true glow_levels/4 = true glow_intensity = 0.1 glow_strength = 0.93 glow_blend_mode = 1 glow_hdr_threshold = 0.3 glow_bicubic_upscale = true adjustment_brightness = 1.06 adjustment_contrast = 1.13 adjustment_saturation = 1.03 [sub_resource type="Shader" id=3] code = "shader_type spatial; varying float elapsed_time; uniform float density = 1.0; uniform float speed = 1.0; uniform float offset = 0.0; uniform vec4 color : hint_color = vec4(1,1,1,1); void vertex() { elapsed_time = TIME * speed + offset; } //--- 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, 5.867))), vec3(3.14))) * 43758.5453); } vec3 rgb2hsv(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 hsv2rgb(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 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((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 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((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0); } 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((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 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); } float rand31(vec3 p) { return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123); } vec3 rand33(vec3 p){ p = vec3( dot(p,vec3(127.1,311.7, 74.7)), dot(p,vec3(269.5,183.3,246.1)), dot(p,vec3(113.5,271.9,124.6))); return -1.0 + 2.0*fract(sin(p)*43758.5453123); } float tex3d_fbm_value(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float p000 = rand31(mod(o, size)); float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size)); float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size)); float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size)); float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size)); float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size)); float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size)); float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size)); vec3 t = f * f * (3.0 - 2.0 * f); return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5)); vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5)); vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5)); vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5)); float p000 = dot(v000, f); float p001 = dot(v001, f - vec3(0.0, 0.0, 1.0)); float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0)); float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0)); float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0)); float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0)); float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0)); float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0)); vec3 t = f * f * (3.0 - 2.0 * f); return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float min_dist = 3.0; for (float x = -1.0; x <= 1.0; x++) { for (float y = -1.0; y <= 1.0; y++) { for (float z = -1.0; z <= 1.0; z++) { vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z); float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z); min_dist = min(min_dist, dist); } } } return min_dist; } const float p_o349717_curve_0_x = 0.000000000; const float p_o349717_curve_0_y = 0.000000000; const float p_o349717_curve_0_ls = 0.000000000; const float p_o349717_curve_0_rs = -0.029626113; const float p_o349717_curve_1_x = 1.000000000; const float p_o349717_curve_1_y = 1.000000000; const float p_o349717_curve_1_ls = 0.000000000; const float p_o349717_curve_1_rs = -0.000000000; float o349717_curve_curve_fct(float x) { if (x <= p_o349717_curve_1_x) { float dx = x - p_o349717_curve_0_x; float d = p_o349717_curve_1_x - p_o349717_curve_0_x; float t = dx/d; float omt = (1.0 - t); float omt2 = omt * omt; float omt3 = omt2 * omt; float t2 = t * t; float t3 = t2 * t; d /= 3.0; float y1 = p_o349717_curve_0_y; float yac = p_o349717_curve_0_y + d*p_o349717_curve_0_rs; float ybc = p_o349717_curve_1_y - d*p_o349717_curve_1_ls; float y2 = p_o349717_curve_1_y; return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3; } } const float p_o298492_default_in1 = 0.000000000; const float p_o298492_default_in2 = 1.460000000; const float p_o398828_default_in1 = 0.000000000; const float p_o398828_default_in2 = 0.000000000; const float p_o260446_default_in1 = 0.000000000; const float p_o260446_default_in2 = 1.350000000; const float p_o253351_default_in1 = 0.000000000; const float p_o253351_default_in2 = 0.000000000; const float p_o321142_default_in1 = 0.000000000; const float p_o321142_default_in2 = 1.500000000; const float p_o277526_sides = 1.000000000; const float p_o277526_radius = 1.000000000; const float p_o277526_edge = 0.760000000; const float p_o135529_default_in1 = 0.000000000; const float p_o60565_default_in1 = 0.000000000; const float p_o60565_default_in2 = 0.160000000; const float p_o86476_default_in1 = 0.000000000; const float p_o86476_default_in2 = 0.360000000; const float p_o9697_sides = 2.000000000; const float p_o9697_radius = 1.010000000; const float p_o9697_edge = 2.700000000; const float p_o535536_default_in1 = 0.000000000; const int seed_o530985 = -46342; const float p_o530985_scale_x = 4.000000000; const float p_o530985_scale_y = 4.000000000; const float p_o530985_scale_z = 4.000000000; const float p_o530985_iterations = 8.000000000; const float p_o530985_persistence = 0.500000000; float o530985_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o574483_Distort = 0.280000000; const int seed_o15805 = -41176; const float p_o15805_scale_x = 8.000000000; const float p_o15805_scale_y = 8.000000000; const float p_o15805_scale_z = 8.000000000; const float p_o15805_iterations = 8.000000000; const float p_o15805_persistence = 0.500000000; float o15805_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o395471_color = 1.000000000; void fragment() { float o277526_0_1_f = shape_circle((UV), p_o277526_sides, p_o277526_radius*1.0, p_o277526_edge*1.0); float o321142_0_clamp_false = pow(o277526_0_1_f,p_o321142_default_in2); float o321142_0_clamp_true = clamp(o321142_0_clamp_false, 0.0, 1.0); float o321142_0_2_f = o321142_0_clamp_false; float o535536_0_clamp_false = p_o535536_default_in1+(elapsed_time*0.1); float o535536_0_clamp_true = clamp(o535536_0_clamp_false, 0.0, 1.0); float o535536_0_2_f = o535536_0_clamp_false; vec3 o530985_0_1_tex3d = vec3(o530985_fbm((vec4((UV), o535536_0_2_f, 0.0)).xyz, vec3(p_o530985_scale_x, p_o530985_scale_y, p_o530985_scale_z), int(p_o530985_iterations), p_o530985_persistence, float(seed_o530985))); vec3 o535539_0_1_rgb = o530985_0_1_tex3d; float o9697_0_1_f = shape_circle((UV), p_o9697_sides, p_o9697_radius*1.0, p_o9697_edge*(dot(o535539_0_1_rgb, vec3(1.0))/3.0)); float o86476_0_clamp_false = pow(o9697_0_1_f,p_o86476_default_in2); float o86476_0_clamp_true = clamp(o86476_0_clamp_false, 0.0, 1.0); float o86476_0_2_f = o86476_0_clamp_false; float o60565_0_clamp_false = o86476_0_2_f*p_o60565_default_in2; float o60565_0_clamp_true = clamp(o60565_0_clamp_false, 0.0, 1.0); float o60565_0_2_f = o60565_0_clamp_false; float o135529_0_clamp_false = o60565_0_2_f+(elapsed_time*0.1); float o135529_0_clamp_true = clamp(o135529_0_clamp_false, 0.0, 1.0); float o135529_0_2_f = o135529_0_clamp_false; float o620684_0_1_f = (elapsed_time); vec4 o614555_0_1_rgba = vec4(0.0, o620684_0_1_f, 0.0, 1.0); vec3 o584725_0_1_tex3d = ((o614555_0_1_rgba).rgb); vec3 o15805_0_1_tex3d = vec3(o15805_fbm((vec4((vec4((UV), o135529_0_2_f, 0.0)).xyz+(o584725_0_1_tex3d*p_o574483_Distort*0.5-0.5), 0.0)).xyz, vec3(p_o15805_scale_x, p_o15805_scale_y, p_o15805_scale_z), int(p_o15805_iterations), p_o15805_persistence, float(seed_o15805))); vec3 o574483_0_1_tex3d = o15805_0_1_tex3d; vec3 o39870_0_1_rgb = o574483_0_1_tex3d; float o253351_0_clamp_false = o321142_0_2_f*(dot(o39870_0_1_rgb, vec3(1.0))/3.0); float o253351_0_clamp_true = clamp(o253351_0_clamp_false, 0.0, 1.0); float o253351_0_1_f = o253351_0_clamp_false; float o260446_0_clamp_false = pow(o253351_0_1_f,p_o260446_default_in2); float o260446_0_clamp_true = clamp(o260446_0_clamp_false, 0.0, 1.0); float o260446_0_2_f = o260446_0_clamp_false; float o395471_0_1_f = p_o395471_color; float o398828_0_clamp_false = o260446_0_2_f*o395471_0_1_f; float o398828_0_clamp_true = clamp(o398828_0_clamp_false, 0.0, 1.0); float o398828_0_1_f = o398828_0_clamp_false; float o298492_0_clamp_false = o398828_0_1_f*p_o298492_default_in2; float o298492_0_clamp_true = clamp(o298492_0_clamp_false, 0.0, 1.0); float o298492_0_2_f = o298492_0_clamp_true; float o349717_0_1_f = o349717_curve_curve_fct(o298492_0_2_f); ALBEDO = color.rgb; ALPHA = vec3(o349717_0_1_f).r * color.a * density; }" [sub_resource type="ShaderMaterial" id=4] shader = SubResource( 3 ) shader_param/density = 0.379 shader_param/speed = 1.0 shader_param/offset = 0.0 shader_param/color = Color( 1, 1, 1, 1 ) [sub_resource type="QuadMesh" id=5] material = SubResource( 4 ) size = Vector2( 16, 16 ) [sub_resource type="Shader" id=6] code = "shader_type spatial; varying float elapsed_time; uniform float density = 1.0; uniform float speed = 1.0; uniform float offset = 0.0; uniform vec4 color : hint_color = vec4(1,1,1,1); void vertex() { elapsed_time = TIME * speed + offset; } //--- 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, 5.867))), vec3(3.14))) * 43758.5453); } vec3 rgb2hsv(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 hsv2rgb(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 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((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 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((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0); } 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((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 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); } float rand31(vec3 p) { return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123); } vec3 rand33(vec3 p){ p = vec3( dot(p,vec3(127.1,311.7, 74.7)), dot(p,vec3(269.5,183.3,246.1)), dot(p,vec3(113.5,271.9,124.6))); return -1.0 + 2.0*fract(sin(p)*43758.5453123); } float tex3d_fbm_value(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float p000 = rand31(mod(o, size)); float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size)); float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size)); float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size)); float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size)); float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size)); float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size)); float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size)); vec3 t = f * f * (3.0 - 2.0 * f); return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5)); vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5)); vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5)); vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5)); float p000 = dot(v000, f); float p001 = dot(v001, f - vec3(0.0, 0.0, 1.0)); float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0)); float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0)); float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0)); float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0)); float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0)); float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0)); vec3 t = f * f * (3.0 - 2.0 * f); return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float min_dist = 3.0; for (float x = -1.0; x <= 1.0; x++) { for (float y = -1.0; y <= 1.0; y++) { for (float z = -1.0; z <= 1.0; z++) { vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z); float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z); min_dist = min(min_dist, dist); } } } return min_dist; } const float p_o349717_curve_0_x = 0.000000000; const float p_o349717_curve_0_y = 0.000000000; const float p_o349717_curve_0_ls = 0.000000000; const float p_o349717_curve_0_rs = -0.029626113; const float p_o349717_curve_1_x = 1.000000000; const float p_o349717_curve_1_y = 1.000000000; const float p_o349717_curve_1_ls = 0.000000000; const float p_o349717_curve_1_rs = -0.000000000; float o349717_curve_curve_fct(float x) { if (x <= p_o349717_curve_1_x) { float dx = x - p_o349717_curve_0_x; float d = p_o349717_curve_1_x - p_o349717_curve_0_x; float t = dx/d; float omt = (1.0 - t); float omt2 = omt * omt; float omt3 = omt2 * omt; float t2 = t * t; float t3 = t2 * t; d /= 3.0; float y1 = p_o349717_curve_0_y; float yac = p_o349717_curve_0_y + d*p_o349717_curve_0_rs; float ybc = p_o349717_curve_1_y - d*p_o349717_curve_1_ls; float y2 = p_o349717_curve_1_y; return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3; } } const float p_o298492_default_in1 = 0.000000000; const float p_o298492_default_in2 = 1.460000000; const float p_o398828_default_in1 = 0.000000000; const float p_o398828_default_in2 = 0.000000000; const float p_o260446_default_in1 = 0.000000000; const float p_o260446_default_in2 = 1.350000000; const float p_o253351_default_in1 = 0.000000000; const float p_o253351_default_in2 = 0.000000000; const float p_o321142_default_in1 = 0.000000000; const float p_o321142_default_in2 = 1.500000000; const float p_o277526_sides = 1.000000000; const float p_o277526_radius = 1.000000000; const float p_o277526_edge = 0.760000000; const float p_o135529_default_in1 = 0.000000000; const float p_o60565_default_in1 = 0.000000000; const float p_o60565_default_in2 = 0.160000000; const float p_o86476_default_in1 = 0.000000000; const float p_o86476_default_in2 = 0.360000000; const float p_o9697_sides = 2.000000000; const float p_o9697_radius = 1.010000000; const float p_o9697_edge = 2.700000000; const float p_o535536_default_in1 = 0.000000000; const int seed_o530985 = -46342; const float p_o530985_scale_x = 4.000000000; const float p_o530985_scale_y = 4.000000000; const float p_o530985_scale_z = 4.000000000; const float p_o530985_iterations = 8.000000000; const float p_o530985_persistence = 0.500000000; float o530985_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o574483_Distort = 0.280000000; const int seed_o15805 = -41176; const float p_o15805_scale_x = 8.000000000; const float p_o15805_scale_y = 8.000000000; const float p_o15805_scale_z = 8.000000000; const float p_o15805_iterations = 8.000000000; const float p_o15805_persistence = 0.500000000; float o15805_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o395471_color = 1.000000000; void fragment() { float o277526_0_1_f = shape_circle((UV), p_o277526_sides, p_o277526_radius*1.0, p_o277526_edge*1.0); float o321142_0_clamp_false = pow(o277526_0_1_f,p_o321142_default_in2); float o321142_0_clamp_true = clamp(o321142_0_clamp_false, 0.0, 1.0); float o321142_0_2_f = o321142_0_clamp_false; float o535536_0_clamp_false = p_o535536_default_in1+(elapsed_time*0.1); float o535536_0_clamp_true = clamp(o535536_0_clamp_false, 0.0, 1.0); float o535536_0_2_f = o535536_0_clamp_false; vec3 o530985_0_1_tex3d = vec3(o530985_fbm((vec4((UV), o535536_0_2_f, 0.0)).xyz, vec3(p_o530985_scale_x, p_o530985_scale_y, p_o530985_scale_z), int(p_o530985_iterations), p_o530985_persistence, float(seed_o530985))); vec3 o535539_0_1_rgb = o530985_0_1_tex3d; float o9697_0_1_f = shape_circle((UV), p_o9697_sides, p_o9697_radius*1.0, p_o9697_edge*(dot(o535539_0_1_rgb, vec3(1.0))/3.0)); float o86476_0_clamp_false = pow(o9697_0_1_f,p_o86476_default_in2); float o86476_0_clamp_true = clamp(o86476_0_clamp_false, 0.0, 1.0); float o86476_0_2_f = o86476_0_clamp_false; float o60565_0_clamp_false = o86476_0_2_f*p_o60565_default_in2; float o60565_0_clamp_true = clamp(o60565_0_clamp_false, 0.0, 1.0); float o60565_0_2_f = o60565_0_clamp_false; float o135529_0_clamp_false = o60565_0_2_f+(elapsed_time*0.1); float o135529_0_clamp_true = clamp(o135529_0_clamp_false, 0.0, 1.0); float o135529_0_2_f = o135529_0_clamp_false; float o620684_0_1_f = (elapsed_time); vec4 o614555_0_1_rgba = vec4(0.0, o620684_0_1_f, 0.0, 1.0); vec3 o584725_0_1_tex3d = ((o614555_0_1_rgba).rgb); vec3 o15805_0_1_tex3d = vec3(o15805_fbm((vec4((vec4((UV), o135529_0_2_f, 0.0)).xyz+(o584725_0_1_tex3d*p_o574483_Distort*0.5-0.5), 0.0)).xyz, vec3(p_o15805_scale_x, p_o15805_scale_y, p_o15805_scale_z), int(p_o15805_iterations), p_o15805_persistence, float(seed_o15805))); vec3 o574483_0_1_tex3d = o15805_0_1_tex3d; vec3 o39870_0_1_rgb = o574483_0_1_tex3d; float o253351_0_clamp_false = o321142_0_2_f*(dot(o39870_0_1_rgb, vec3(1.0))/3.0); float o253351_0_clamp_true = clamp(o253351_0_clamp_false, 0.0, 1.0); float o253351_0_1_f = o253351_0_clamp_false; float o260446_0_clamp_false = pow(o253351_0_1_f,p_o260446_default_in2); float o260446_0_clamp_true = clamp(o260446_0_clamp_false, 0.0, 1.0); float o260446_0_2_f = o260446_0_clamp_false; float o395471_0_1_f = p_o395471_color; float o398828_0_clamp_false = o260446_0_2_f*o395471_0_1_f; float o398828_0_clamp_true = clamp(o398828_0_clamp_false, 0.0, 1.0); float o398828_0_1_f = o398828_0_clamp_false; float o298492_0_clamp_false = o398828_0_1_f*p_o298492_default_in2; float o298492_0_clamp_true = clamp(o298492_0_clamp_false, 0.0, 1.0); float o298492_0_2_f = o298492_0_clamp_true; float o349717_0_1_f = o349717_curve_curve_fct(o298492_0_2_f); ALBEDO = color.rgb; ALPHA = vec3(o349717_0_1_f).r * color.a * density; }" [sub_resource type="ShaderMaterial" id=7] render_priority = -1 shader = SubResource( 6 ) shader_param/density = 1.0 shader_param/speed = 0.5 shader_param/offset = 0.0 shader_param/color = Color( 16.19, 8.72, 4, 0.08 ) [sub_resource type="QuadMesh" id=8] material = SubResource( 7 ) size = Vector2( 16, 16 ) [sub_resource type="Shader" id=9] code = "shader_type spatial; varying float elapsed_time; uniform float density = 1.0; uniform float speed = 1.0; uniform float offset = 0.0; uniform vec4 color : hint_color = vec4(1,1,1,1); void vertex() { elapsed_time = TIME * speed + offset; } //--- 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, 5.867))), vec3(3.14))) * 43758.5453); } vec3 rgb2hsv(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 hsv2rgb(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 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((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 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((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0); } 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((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 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); } float rand31(vec3 p) { return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123); } vec3 rand33(vec3 p){ p = vec3( dot(p,vec3(127.1,311.7, 74.7)), dot(p,vec3(269.5,183.3,246.1)), dot(p,vec3(113.5,271.9,124.6))); return -1.0 + 2.0*fract(sin(p)*43758.5453123); } float tex3d_fbm_value(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float p000 = rand31(mod(o, size)); float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size)); float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size)); float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size)); float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size)); float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size)); float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size)); float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size)); vec3 t = f * f * (3.0 - 2.0 * f); return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5)); vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5)); vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5)); vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5)); float p000 = dot(v000, f); float p001 = dot(v001, f - vec3(0.0, 0.0, 1.0)); float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0)); float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0)); float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0)); float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0)); float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0)); float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0)); vec3 t = f * f * (3.0 - 2.0 * f); return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float min_dist = 3.0; for (float x = -1.0; x <= 1.0; x++) { for (float y = -1.0; y <= 1.0; y++) { for (float z = -1.0; z <= 1.0; z++) { vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z); float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z); min_dist = min(min_dist, dist); } } } return min_dist; } const float p_o349717_curve_0_x = 0.000000000; const float p_o349717_curve_0_y = 0.000000000; const float p_o349717_curve_0_ls = 0.000000000; const float p_o349717_curve_0_rs = -0.029626113; const float p_o349717_curve_1_x = 1.000000000; const float p_o349717_curve_1_y = 1.000000000; const float p_o349717_curve_1_ls = 0.000000000; const float p_o349717_curve_1_rs = -0.000000000; float o349717_curve_curve_fct(float x) { if (x <= p_o349717_curve_1_x) { float dx = x - p_o349717_curve_0_x; float d = p_o349717_curve_1_x - p_o349717_curve_0_x; float t = dx/d; float omt = (1.0 - t); float omt2 = omt * omt; float omt3 = omt2 * omt; float t2 = t * t; float t3 = t2 * t; d /= 3.0; float y1 = p_o349717_curve_0_y; float yac = p_o349717_curve_0_y + d*p_o349717_curve_0_rs; float ybc = p_o349717_curve_1_y - d*p_o349717_curve_1_ls; float y2 = p_o349717_curve_1_y; return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3; } } const float p_o298492_default_in1 = 0.000000000; const float p_o298492_default_in2 = 1.460000000; const float p_o398828_default_in1 = 0.000000000; const float p_o398828_default_in2 = 0.000000000; const float p_o260446_default_in1 = 0.000000000; const float p_o260446_default_in2 = 1.350000000; const float p_o253351_default_in1 = 0.000000000; const float p_o253351_default_in2 = 0.000000000; const float p_o321142_default_in1 = 0.000000000; const float p_o321142_default_in2 = 1.500000000; const float p_o277526_sides = 1.000000000; const float p_o277526_radius = 1.000000000; const float p_o277526_edge = 0.760000000; const float p_o135529_default_in1 = 0.000000000; const float p_o60565_default_in1 = 0.000000000; const float p_o60565_default_in2 = 0.160000000; const float p_o86476_default_in1 = 0.000000000; const float p_o86476_default_in2 = 0.360000000; const float p_o9697_sides = 2.000000000; const float p_o9697_radius = 1.010000000; const float p_o9697_edge = 2.700000000; const float p_o535536_default_in1 = 0.000000000; const int seed_o530985 = -46342; const float p_o530985_scale_x = 4.000000000; const float p_o530985_scale_y = 4.000000000; const float p_o530985_scale_z = 4.000000000; const float p_o530985_iterations = 8.000000000; const float p_o530985_persistence = 0.500000000; float o530985_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o574483_Distort = 0.280000000; const int seed_o15805 = -41176; const float p_o15805_scale_x = 8.000000000; const float p_o15805_scale_y = 8.000000000; const float p_o15805_scale_z = 8.000000000; const float p_o15805_iterations = 8.000000000; const float p_o15805_persistence = 0.500000000; float o15805_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o395471_color = 1.000000000; void fragment() { float o277526_0_1_f = shape_circle((UV), p_o277526_sides, p_o277526_radius*1.0, p_o277526_edge*1.0); float o321142_0_clamp_false = pow(o277526_0_1_f,p_o321142_default_in2); float o321142_0_clamp_true = clamp(o321142_0_clamp_false, 0.0, 1.0); float o321142_0_2_f = o321142_0_clamp_false; float o535536_0_clamp_false = p_o535536_default_in1+(elapsed_time*0.1); float o535536_0_clamp_true = clamp(o535536_0_clamp_false, 0.0, 1.0); float o535536_0_2_f = o535536_0_clamp_false; vec3 o530985_0_1_tex3d = vec3(o530985_fbm((vec4((UV), o535536_0_2_f, 0.0)).xyz, vec3(p_o530985_scale_x, p_o530985_scale_y, p_o530985_scale_z), int(p_o530985_iterations), p_o530985_persistence, float(seed_o530985))); vec3 o535539_0_1_rgb = o530985_0_1_tex3d; float o9697_0_1_f = shape_circle((UV), p_o9697_sides, p_o9697_radius*1.0, p_o9697_edge*(dot(o535539_0_1_rgb, vec3(1.0))/3.0)); float o86476_0_clamp_false = pow(o9697_0_1_f,p_o86476_default_in2); float o86476_0_clamp_true = clamp(o86476_0_clamp_false, 0.0, 1.0); float o86476_0_2_f = o86476_0_clamp_false; float o60565_0_clamp_false = o86476_0_2_f*p_o60565_default_in2; float o60565_0_clamp_true = clamp(o60565_0_clamp_false, 0.0, 1.0); float o60565_0_2_f = o60565_0_clamp_false; float o135529_0_clamp_false = o60565_0_2_f+(elapsed_time*0.1); float o135529_0_clamp_true = clamp(o135529_0_clamp_false, 0.0, 1.0); float o135529_0_2_f = o135529_0_clamp_false; float o620684_0_1_f = (elapsed_time); vec4 o614555_0_1_rgba = vec4(0.0, o620684_0_1_f, 0.0, 1.0); vec3 o584725_0_1_tex3d = ((o614555_0_1_rgba).rgb); vec3 o15805_0_1_tex3d = vec3(o15805_fbm((vec4((vec4((UV), o135529_0_2_f, 0.0)).xyz+(o584725_0_1_tex3d*p_o574483_Distort*0.5-0.5), 0.0)).xyz, vec3(p_o15805_scale_x, p_o15805_scale_y, p_o15805_scale_z), int(p_o15805_iterations), p_o15805_persistence, float(seed_o15805))); vec3 o574483_0_1_tex3d = o15805_0_1_tex3d; vec3 o39870_0_1_rgb = o574483_0_1_tex3d; float o253351_0_clamp_false = o321142_0_2_f*(dot(o39870_0_1_rgb, vec3(1.0))/3.0); float o253351_0_clamp_true = clamp(o253351_0_clamp_false, 0.0, 1.0); float o253351_0_1_f = o253351_0_clamp_false; float o260446_0_clamp_false = pow(o253351_0_1_f,p_o260446_default_in2); float o260446_0_clamp_true = clamp(o260446_0_clamp_false, 0.0, 1.0); float o260446_0_2_f = o260446_0_clamp_false; float o395471_0_1_f = p_o395471_color; float o398828_0_clamp_false = o260446_0_2_f*o395471_0_1_f; float o398828_0_clamp_true = clamp(o398828_0_clamp_false, 0.0, 1.0); float o398828_0_1_f = o398828_0_clamp_false; float o298492_0_clamp_false = o398828_0_1_f*p_o298492_default_in2; float o298492_0_clamp_true = clamp(o298492_0_clamp_false, 0.0, 1.0); float o298492_0_2_f = o298492_0_clamp_true; float o349717_0_1_f = o349717_curve_curve_fct(o298492_0_2_f); ALBEDO = color.rgb; ALPHA = vec3(o349717_0_1_f).r * color.a * density; }" [sub_resource type="ShaderMaterial" id=10] render_priority = -2 shader = SubResource( 9 ) shader_param/density = 0.279 shader_param/speed = 0.5 shader_param/offset = 2.0 shader_param/color = Color( 32.1216, 8.21569, 3.31765, 0.0156863 ) [sub_resource type="QuadMesh" id=11] material = SubResource( 10 ) size = Vector2( 16, 16 ) [sub_resource type="Shader" id=12] code = "shader_type spatial; varying float elapsed_time; uniform float density = 1.0; uniform float speed = 1.0; uniform float offset = 0.0; uniform vec4 color : hint_color = vec4(1,1,1,1); void vertex() { elapsed_time = TIME * speed + offset; } //--- 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, 5.867))), vec3(3.14))) * 43758.5453); } vec3 rgb2hsv(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 hsv2rgb(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 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((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 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((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0); } 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((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 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); } float rand31(vec3 p) { return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123); } vec3 rand33(vec3 p){ p = vec3( dot(p,vec3(127.1,311.7, 74.7)), dot(p,vec3(269.5,183.3,246.1)), dot(p,vec3(113.5,271.9,124.6))); return -1.0 + 2.0*fract(sin(p)*43758.5453123); } float tex3d_fbm_value(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float p000 = rand31(mod(o, size)); float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size)); float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size)); float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size)); float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size)); float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size)); float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size)); float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size)); vec3 t = f * f * (3.0 - 2.0 * f); return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5)); vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5)); vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5)); vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5)); float p000 = dot(v000, f); float p001 = dot(v001, f - vec3(0.0, 0.0, 1.0)); float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0)); float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0)); float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0)); float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0)); float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0)); float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0)); vec3 t = f * f * (3.0 - 2.0 * f); return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float min_dist = 3.0; for (float x = -1.0; x <= 1.0; x++) { for (float y = -1.0; y <= 1.0; y++) { for (float z = -1.0; z <= 1.0; z++) { vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z); float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z); min_dist = min(min_dist, dist); } } } return min_dist; } const float p_o349717_curve_0_x = 0.000000000; const float p_o349717_curve_0_y = 0.000000000; const float p_o349717_curve_0_ls = 0.000000000; const float p_o349717_curve_0_rs = -0.029626113; const float p_o349717_curve_1_x = 1.000000000; const float p_o349717_curve_1_y = 1.000000000; const float p_o349717_curve_1_ls = 0.000000000; const float p_o349717_curve_1_rs = -0.000000000; float o349717_curve_curve_fct(float x) { if (x <= p_o349717_curve_1_x) { float dx = x - p_o349717_curve_0_x; float d = p_o349717_curve_1_x - p_o349717_curve_0_x; float t = dx/d; float omt = (1.0 - t); float omt2 = omt * omt; float omt3 = omt2 * omt; float t2 = t * t; float t3 = t2 * t; d /= 3.0; float y1 = p_o349717_curve_0_y; float yac = p_o349717_curve_0_y + d*p_o349717_curve_0_rs; float ybc = p_o349717_curve_1_y - d*p_o349717_curve_1_ls; float y2 = p_o349717_curve_1_y; return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3; } } const float p_o298492_default_in1 = 0.000000000; const float p_o298492_default_in2 = 1.460000000; const float p_o398828_default_in1 = 0.000000000; const float p_o398828_default_in2 = 0.000000000; const float p_o260446_default_in1 = 0.000000000; const float p_o260446_default_in2 = 1.350000000; const float p_o253351_default_in1 = 0.000000000; const float p_o253351_default_in2 = 0.000000000; const float p_o321142_default_in1 = 0.000000000; const float p_o321142_default_in2 = 1.500000000; const float p_o277526_sides = 1.000000000; const float p_o277526_radius = 1.000000000; const float p_o277526_edge = 0.760000000; const float p_o135529_default_in1 = 0.000000000; const float p_o60565_default_in1 = 0.000000000; const float p_o60565_default_in2 = 0.160000000; const float p_o86476_default_in1 = 0.000000000; const float p_o86476_default_in2 = 0.360000000; const float p_o9697_sides = 2.000000000; const float p_o9697_radius = 1.010000000; const float p_o9697_edge = 2.700000000; const float p_o535536_default_in1 = 0.000000000; const int seed_o530985 = -46342; const float p_o530985_scale_x = 4.000000000; const float p_o530985_scale_y = 4.000000000; const float p_o530985_scale_z = 4.000000000; const float p_o530985_iterations = 8.000000000; const float p_o530985_persistence = 0.500000000; float o530985_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o574483_Distort = 0.280000000; const int seed_o15805 = -41176; const float p_o15805_scale_x = 8.000000000; const float p_o15805_scale_y = 8.000000000; const float p_o15805_scale_z = 8.000000000; const float p_o15805_iterations = 8.000000000; const float p_o15805_persistence = 0.500000000; float o15805_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o395471_color = 1.000000000; void fragment() { float o277526_0_1_f = shape_circle((UV), p_o277526_sides, p_o277526_radius*1.0, p_o277526_edge*1.0); float o321142_0_clamp_false = pow(o277526_0_1_f,p_o321142_default_in2); float o321142_0_clamp_true = clamp(o321142_0_clamp_false, 0.0, 1.0); float o321142_0_2_f = o321142_0_clamp_false; float o535536_0_clamp_false = p_o535536_default_in1+(elapsed_time*0.1); float o535536_0_clamp_true = clamp(o535536_0_clamp_false, 0.0, 1.0); float o535536_0_2_f = o535536_0_clamp_false; vec3 o530985_0_1_tex3d = vec3(o530985_fbm((vec4((UV), o535536_0_2_f, 0.0)).xyz, vec3(p_o530985_scale_x, p_o530985_scale_y, p_o530985_scale_z), int(p_o530985_iterations), p_o530985_persistence, float(seed_o530985))); vec3 o535539_0_1_rgb = o530985_0_1_tex3d; float o9697_0_1_f = shape_circle((UV), p_o9697_sides, p_o9697_radius*1.0, p_o9697_edge*(dot(o535539_0_1_rgb, vec3(1.0))/3.0)); float o86476_0_clamp_false = pow(o9697_0_1_f,p_o86476_default_in2); float o86476_0_clamp_true = clamp(o86476_0_clamp_false, 0.0, 1.0); float o86476_0_2_f = o86476_0_clamp_false; float o60565_0_clamp_false = o86476_0_2_f*p_o60565_default_in2; float o60565_0_clamp_true = clamp(o60565_0_clamp_false, 0.0, 1.0); float o60565_0_2_f = o60565_0_clamp_false; float o135529_0_clamp_false = o60565_0_2_f+(elapsed_time*0.1); float o135529_0_clamp_true = clamp(o135529_0_clamp_false, 0.0, 1.0); float o135529_0_2_f = o135529_0_clamp_false; float o620684_0_1_f = (elapsed_time); vec4 o614555_0_1_rgba = vec4(0.0, o620684_0_1_f, 0.0, 1.0); vec3 o584725_0_1_tex3d = ((o614555_0_1_rgba).rgb); vec3 o15805_0_1_tex3d = vec3(o15805_fbm((vec4((vec4((UV), o135529_0_2_f, 0.0)).xyz+(o584725_0_1_tex3d*p_o574483_Distort*0.5-0.5), 0.0)).xyz, vec3(p_o15805_scale_x, p_o15805_scale_y, p_o15805_scale_z), int(p_o15805_iterations), p_o15805_persistence, float(seed_o15805))); vec3 o574483_0_1_tex3d = o15805_0_1_tex3d; vec3 o39870_0_1_rgb = o574483_0_1_tex3d; float o253351_0_clamp_false = o321142_0_2_f*(dot(o39870_0_1_rgb, vec3(1.0))/3.0); float o253351_0_clamp_true = clamp(o253351_0_clamp_false, 0.0, 1.0); float o253351_0_1_f = o253351_0_clamp_false; float o260446_0_clamp_false = pow(o253351_0_1_f,p_o260446_default_in2); float o260446_0_clamp_true = clamp(o260446_0_clamp_false, 0.0, 1.0); float o260446_0_2_f = o260446_0_clamp_false; float o395471_0_1_f = p_o395471_color; float o398828_0_clamp_false = o260446_0_2_f*o395471_0_1_f; float o398828_0_clamp_true = clamp(o398828_0_clamp_false, 0.0, 1.0); float o398828_0_1_f = o398828_0_clamp_false; float o298492_0_clamp_false = o398828_0_1_f*p_o298492_default_in2; float o298492_0_clamp_true = clamp(o298492_0_clamp_false, 0.0, 1.0); float o298492_0_2_f = o298492_0_clamp_true; float o349717_0_1_f = o349717_curve_curve_fct(o298492_0_2_f); ALBEDO = color.rgb; ALPHA = vec3(o349717_0_1_f).r * color.a * density; }" [sub_resource type="ShaderMaterial" id=13] render_priority = -1 shader = SubResource( 12 ) shader_param/density = 0.9 shader_param/speed = 0.025 shader_param/offset = 0.0 shader_param/color = Color( 1, 1, 1, 1 ) [sub_resource type="QuadMesh" id=14] material = SubResource( 13 ) size = Vector2( 16, 16 ) [sub_resource type="Shader" id=15] code = "shader_type spatial; varying float elapsed_time; uniform float density = 1.0; uniform float speed = 1.0; uniform float offset = 0.0; uniform vec4 color : hint_color = vec4(1,1,1,1); void vertex() { elapsed_time = TIME * speed + offset; } //--- 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, 5.867))), vec3(3.14))) * 43758.5453); } vec3 rgb2hsv(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 hsv2rgb(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 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((size-cos(floor(0.5+angle/slice)*slice-angle)*length(uv))/(edge*size), 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((size-cos(floor(angle/slice-0.5+2.0*step(mod(angle, slice), 0.5*slice))*slice-angle)*length(uv))/(edge*size), 0.0, 1.0); } 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((size-cos(floor(0.5+0.5*angle/slice)*2.0*slice-angle)*length(uv))/(edge*size), 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); } float rand31(vec3 p) { return fract(sin(dot(p,vec3(127.1,311.7, 74.7)))*43758.5453123); } vec3 rand33(vec3 p){ p = vec3( dot(p,vec3(127.1,311.7, 74.7)), dot(p,vec3(269.5,183.3,246.1)), dot(p,vec3(113.5,271.9,124.6))); return -1.0 + 2.0*fract(sin(p)*43758.5453123); } float tex3d_fbm_value(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float p000 = rand31(mod(o, size)); float p001 = rand31(mod(o + vec3(0.0, 0.0, 1.0), size)); float p010 = rand31(mod(o + vec3(0.0, 1.0, 0.0), size)); float p011 = rand31(mod(o + vec3(0.0, 1.0, 1.0), size)); float p100 = rand31(mod(o + vec3(1.0, 0.0, 0.0), size)); float p101 = rand31(mod(o + vec3(1.0, 0.0, 1.0), size)); float p110 = rand31(mod(o + vec3(1.0, 1.0, 0.0), size)); float p111 = rand31(mod(o + vec3(1.0, 1.0, 1.0), size)); vec3 t = f * f * (3.0 - 2.0 * f); return mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_perlin(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); vec3 v000 = normalize(rand33(mod(o, size))-vec3(0.5)); vec3 v001 = normalize(rand33(mod(o + vec3(0.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v010 = normalize(rand33(mod(o + vec3(0.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v011 = normalize(rand33(mod(o + vec3(0.0, 1.0, 1.0), size))-vec3(0.5)); vec3 v100 = normalize(rand33(mod(o + vec3(1.0, 0.0, 0.0), size))-vec3(0.5)); vec3 v101 = normalize(rand33(mod(o + vec3(1.0, 0.0, 1.0), size))-vec3(0.5)); vec3 v110 = normalize(rand33(mod(o + vec3(1.0, 1.0, 0.0), size))-vec3(0.5)); vec3 v111 = normalize(rand33(mod(o + vec3(1.0, 1.0, 1.0), size))-vec3(0.5)); float p000 = dot(v000, f); float p001 = dot(v001, f - vec3(0.0, 0.0, 1.0)); float p010 = dot(v010, f - vec3(0.0, 1.0, 0.0)); float p011 = dot(v011, f - vec3(0.0, 1.0, 1.0)); float p100 = dot(v100, f - vec3(1.0, 0.0, 0.0)); float p101 = dot(v101, f - vec3(1.0, 0.0, 1.0)); float p110 = dot(v110, f - vec3(1.0, 1.0, 0.0)); float p111 = dot(v111, f - vec3(1.0, 1.0, 1.0)); vec3 t = f * f * (3.0 - 2.0 * f); return 0.5 + mix(mix(mix(p000, p100, t.x), mix(p010, p110, t.x), t.y), mix(mix(p001, p101, t.x), mix(p011, p111, t.x), t.y), t.z); } float tex3d_fbm_cellular(vec3 coord, vec3 size, float seed) { vec3 o = floor(coord)+rand3(vec2(float(seed), 1.0-float(seed)))+size; vec3 f = fract(coord); float min_dist = 3.0; for (float x = -1.0; x <= 1.0; x++) { for (float y = -1.0; y <= 1.0; y++) { for (float z = -1.0; z <= 1.0; z++) { vec3 node = 0.4*rand33(mod(o + vec3(x, y, z), size)) + vec3(x, y, z); float dist = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y + (f - node).z * (f - node).z); min_dist = min(min_dist, dist); } } } return min_dist; } const float p_o349717_curve_0_x = 0.000000000; const float p_o349717_curve_0_y = 0.000000000; const float p_o349717_curve_0_ls = 0.000000000; const float p_o349717_curve_0_rs = -0.029626113; const float p_o349717_curve_1_x = 1.000000000; const float p_o349717_curve_1_y = 1.000000000; const float p_o349717_curve_1_ls = 0.000000000; const float p_o349717_curve_1_rs = -0.000000000; float o349717_curve_curve_fct(float x) { if (x <= p_o349717_curve_1_x) { float dx = x - p_o349717_curve_0_x; float d = p_o349717_curve_1_x - p_o349717_curve_0_x; float t = dx/d; float omt = (1.0 - t); float omt2 = omt * omt; float omt3 = omt2 * omt; float t2 = t * t; float t3 = t2 * t; d /= 3.0; float y1 = p_o349717_curve_0_y; float yac = p_o349717_curve_0_y + d*p_o349717_curve_0_rs; float ybc = p_o349717_curve_1_y - d*p_o349717_curve_1_ls; float y2 = p_o349717_curve_1_y; return y1*omt3 + yac*omt2*t*3.0 + ybc*omt*t2*3.0 + y2*t3; } } const float p_o298492_default_in1 = 0.000000000; const float p_o298492_default_in2 = 1.460000000; const float p_o398828_default_in1 = 0.000000000; const float p_o398828_default_in2 = 0.000000000; const float p_o260446_default_in1 = 0.000000000; const float p_o260446_default_in2 = 1.350000000; const float p_o253351_default_in1 = 0.000000000; const float p_o253351_default_in2 = 0.000000000; const float p_o321142_default_in1 = 0.000000000; const float p_o321142_default_in2 = 1.500000000; const float p_o277526_sides = 1.000000000; const float p_o277526_radius = 1.000000000; const float p_o277526_edge = 0.760000000; const float p_o135529_default_in1 = 0.000000000; const float p_o60565_default_in1 = 0.000000000; const float p_o60565_default_in2 = 0.160000000; const float p_o86476_default_in1 = 0.000000000; const float p_o86476_default_in2 = 0.360000000; const float p_o9697_sides = 2.000000000; const float p_o9697_radius = 1.010000000; const float p_o9697_edge = 2.700000000; const float p_o535536_default_in1 = 0.000000000; const int seed_o530985 = -46342; const float p_o530985_scale_x = 4.000000000; const float p_o530985_scale_y = 4.000000000; const float p_o530985_scale_z = 4.000000000; const float p_o530985_iterations = 8.000000000; const float p_o530985_persistence = 0.500000000; float o530985_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o574483_Distort = 0.280000000; const int seed_o15805 = -41176; const float p_o15805_scale_x = 8.000000000; const float p_o15805_scale_y = 8.000000000; const float p_o15805_scale_z = 8.000000000; const float p_o15805_iterations = 8.000000000; const float p_o15805_persistence = 0.500000000; float o15805_fbm(vec3 coord, vec3 size, int octaves, float persistence, float seed) { float normalize_factor = 0.0; float value = 0.0; float scale = 1.0; for (int i = 0; i < octaves; i++) { value += tex3d_fbm_value(coord*size, size, seed) * scale; normalize_factor += scale; size *= 2.0; scale *= persistence; } return value / normalize_factor; } const float p_o395471_color = 1.000000000; void fragment() { float o277526_0_1_f = shape_circle((UV), p_o277526_sides, p_o277526_radius*1.0, p_o277526_edge*1.0); float o321142_0_clamp_false = pow(o277526_0_1_f,p_o321142_default_in2); float o321142_0_clamp_true = clamp(o321142_0_clamp_false, 0.0, 1.0); float o321142_0_2_f = o321142_0_clamp_false; float o535536_0_clamp_false = p_o535536_default_in1+(elapsed_time*0.1); float o535536_0_clamp_true = clamp(o535536_0_clamp_false, 0.0, 1.0); float o535536_0_2_f = o535536_0_clamp_false; vec3 o530985_0_1_tex3d = vec3(o530985_fbm((vec4((UV), o535536_0_2_f, 0.0)).xyz, vec3(p_o530985_scale_x, p_o530985_scale_y, p_o530985_scale_z), int(p_o530985_iterations), p_o530985_persistence, float(seed_o530985))); vec3 o535539_0_1_rgb = o530985_0_1_tex3d; float o9697_0_1_f = shape_circle((UV), p_o9697_sides, p_o9697_radius*1.0, p_o9697_edge*(dot(o535539_0_1_rgb, vec3(1.0))/3.0)); float o86476_0_clamp_false = pow(o9697_0_1_f,p_o86476_default_in2); float o86476_0_clamp_true = clamp(o86476_0_clamp_false, 0.0, 1.0); float o86476_0_2_f = o86476_0_clamp_false; float o60565_0_clamp_false = o86476_0_2_f*p_o60565_default_in2; float o60565_0_clamp_true = clamp(o60565_0_clamp_false, 0.0, 1.0); float o60565_0_2_f = o60565_0_clamp_false; float o135529_0_clamp_false = o60565_0_2_f+(elapsed_time*0.1); float o135529_0_clamp_true = clamp(o135529_0_clamp_false, 0.0, 1.0); float o135529_0_2_f = o135529_0_clamp_false; float o620684_0_1_f = (elapsed_time); vec4 o614555_0_1_rgba = vec4(0.0, o620684_0_1_f, 0.0, 1.0); vec3 o584725_0_1_tex3d = ((o614555_0_1_rgba).rgb); vec3 o15805_0_1_tex3d = vec3(o15805_fbm((vec4((vec4((UV), o135529_0_2_f, 0.0)).xyz+(o584725_0_1_tex3d*p_o574483_Distort*0.5-0.5), 0.0)).xyz, vec3(p_o15805_scale_x, p_o15805_scale_y, p_o15805_scale_z), int(p_o15805_iterations), p_o15805_persistence, float(seed_o15805))); vec3 o574483_0_1_tex3d = o15805_0_1_tex3d; vec3 o39870_0_1_rgb = o574483_0_1_tex3d; float o253351_0_clamp_false = o321142_0_2_f*(dot(o39870_0_1_rgb, vec3(1.0))/3.0); float o253351_0_clamp_true = clamp(o253351_0_clamp_false, 0.0, 1.0); float o253351_0_1_f = o253351_0_clamp_false; float o260446_0_clamp_false = pow(o253351_0_1_f,p_o260446_default_in2); float o260446_0_clamp_true = clamp(o260446_0_clamp_false, 0.0, 1.0); float o260446_0_2_f = o260446_0_clamp_false; float o395471_0_1_f = p_o395471_color; float o398828_0_clamp_false = o260446_0_2_f*o395471_0_1_f; float o398828_0_clamp_true = clamp(o398828_0_clamp_false, 0.0, 1.0); float o398828_0_1_f = o398828_0_clamp_false; float o298492_0_clamp_false = o398828_0_1_f*p_o298492_default_in2; float o298492_0_clamp_true = clamp(o298492_0_clamp_false, 0.0, 1.0); float o298492_0_2_f = o298492_0_clamp_true; float o349717_0_1_f = o349717_curve_curve_fct(o298492_0_2_f); ALBEDO = color.rgb; ALPHA = vec3(o349717_0_1_f).r * color.a * density; }" [sub_resource type="ShaderMaterial" id=16] render_priority = -1 shader = SubResource( 15 ) shader_param/density = 1.0 shader_param/speed = 0.04 shader_param/offset = 4.0 shader_param/color = Color( 1, 1, 1, 1 ) [sub_resource type="QuadMesh" id=17] material = SubResource( 16 ) size = Vector2( 16, 16 ) [sub_resource type="CylinderShape" id=18] radius = 67.07 height = 84.58 [node name="Level" type="Spatial"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource( 2 ) [node name="SpawnPoints" type="Spatial" parent="."] visible = false script = ExtResource( 13 ) __meta__ = { "_edit_lock_": true } [node name="SpawnPoint" parent="SpawnPoints" instance=ExtResource( 9 )] transform = Transform( 0.258819, 0, 0.965926, 0, 1, 0, -0.965926, 0, 0.258819, 2, 10, 18 ) [node name="SpawnPoint2" parent="SpawnPoints" instance=ExtResource( 9 )] transform = Transform( 0.258819, 0, 0.965926, 0, 1, 0, -0.965926, 0, 0.258819, 3, 10, -18 ) [node name="SpawnPoint3" parent="SpawnPoints" instance=ExtResource( 9 )] transform = Transform( 0.258819, 0, 0.965926, 0, 1, 0, -0.965926, 0, 0.258819, -17, 17, 0 ) [node name="SpawnPoint4" parent="SpawnPoints" instance=ExtResource( 9 )] transform = Transform( -0.258819, 0, -0.965926, 0, 1, 0, 0.965926, 0, -0.258819, 31, 3, 0 ) [node name="Decoration" type="Spatial" parent="."] visible = false [node name="Smoke" type="MeshInstance" parent="Decoration"] transform = Transform( -1.87575, 0.369297, 0.103144, 0.211178, 2.04909, -0.815923, -0.144175, -1.37426, -2.42868, 20.5998, 16.4978, 11.2774 ) mesh = SubResource( 5 ) material/0 = null [node name="Fire1" type="MeshInstance" parent="Decoration"] transform = Transform( -1.28173, 0, -1.12052e-07, 0, 1.28173, 0, 1.12052e-07, 0, -1.28173, 20.9064, 14.0944, 13.2243 ) mesh = SubResource( 8 ) material/0 = null [node name="Fire2" type="MeshInstance" parent="Decoration"] transform = Transform( -1.60231, 0.120819, 0.005706, 0.120359, 1.63349, -0.789291, -0.0651468, -0.786625, -1.6379, 20.8181, 12.5297, 13.6559 ) mesh = SubResource( 11 ) material/0 = null [node name="Clouds" type="MeshInstance" parent="Decoration"] transform = Transform( 9.20067, 11.3376, -0.0795001, -0.35721, 0.187535, -14.5957, -11.3322, 9.1991, 0.395536, -10.8813, 40.9324, 1.15229 ) mesh = SubResource( 14 ) material/0 = null [node name="Clouds2" type="MeshInstance" parent="Decoration"] transform = Transform( 4.36766, 12.6479, 5.84422, 2.01429, 5.48714, -13.3803, -13.7864, 4.80863, -0.103444, -10.8813, 64.2284, -14.1764 ) mesh = SubResource( 17 ) material/0 = null [node name="Sound" type="Spatial" parent="."] visible = false [node name="Pipes" type="AudioStreamPlayer3D" parent="Sound"] transform = Transform( 1, 0, -2.98023e-08, 0, 1, 0, 2.98023e-08, 0, 1, 9.67349, 9, -22.8842 ) stream = ExtResource( 12 ) attenuation_model = 1 unit_db = -25.0 unit_size = 5.0 autoplay = true [node name="Pipes3" type="AudioStreamPlayer3D" parent="Sound"] transform = Transform( 1, 0, -2.98023e-08, 0, 1, 0, 2.98023e-08, 0, 1, 34.5687, 14.286, -0.232982 ) stream = ExtResource( 2 ) attenuation_model = 1 unit_db = -10.0 unit_size = 10.0 pitch_scale = 0.7 autoplay = true [node name="Pipes2" type="AudioStreamPlayer3D" parent="Sound"] transform = Transform( 1, 0, -2.98023e-08, 0, 1, 0, 2.98023e-08, 0, 1, 15.6735, 7, -22.8842 ) stream = ExtResource( 12 ) attenuation_model = 1 unit_db = -25.0 unit_size = 5.0 pitch_scale = 0.99 autoplay = true [node name="Area" type="Area" parent="Sound"] monitoring = false monitorable = false reverb_bus_enable = true reverb_bus_name = "Reverb1" reverb_bus_amount = 1.0 reverb_bus_uniformity = 1.0 [node name="CollisionShape" type="CollisionShape" parent="Sound/Area"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) shape = SubResource( 18 ) [node name="DM1_dev_materials" parent="." instance=ExtResource( 1 )] [node name="ReflectionProbes" type="Spatial" parent="."] visible = false __meta__ = { "_edit_lock_": true } [node name="ReflectionProbe" type="ReflectionProbe" parent="ReflectionProbes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 14, 0 ) extents = Vector3( 15, 14, 22 ) box_projection = true enable_shadows = true [node name="ReflectionProbe5" type="ReflectionProbe" parent="ReflectionProbes"] transform = Transform( 0.930123, 0.367248, 0, -0.367248, 0.930123, 0, 0, 0, 1, 11.7433, 8.87002, -21.2808 ) extents = Vector3( 11.3113, 3.02928, 3.32246 ) origin_offset = Vector3( 1.16016, 0, 0.953125 ) box_projection = true enable_shadows = true [node name="ReflectionProbe2" type="ReflectionProbe" parent="ReflectionProbes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 14, 0 ) extents = Vector3( 15, 14, 17 ) box_projection = true enable_shadows = true [node name="ReflectionProbe4" type="ReflectionProbe" parent="ReflectionProbes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 14, 0 ) extents = Vector3( 15, 14, 17 ) box_projection = true enable_shadows = true [node name="ReflectionProbe3" type="ReflectionProbe" parent="ReflectionProbes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 14, 0 ) extents = Vector3( 11, 14, 22 ) box_projection = true enable_shadows = true [node name="Lights" type="Spatial" parent="."] visible = false __meta__ = { "_edit_lock_": true } [node name="OmniLight" type="OmniLight" parent="Lights"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 20.1625, 18.8617, 15.3107 ) light_color = Color( 0.894118, 0.392157, 0.117647, 1 ) light_energy = 15.0 light_indirect_energy = 2.0 light_specular = 0.98 light_bake_mode = 2 shadow_enabled = true omni_range = 25.0 omni_attenuation = 2.54912 script = ExtResource( 10 ) speed = 3 noise_amount = 10.0 [node name="BlueDecoration" type="SpotLight" parent="Lights"] transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 32.9591, 14.4, 0 ) light_color = Color( 0.294118, 0.900735, 1, 1 ) light_energy = 1.5 light_bake_mode = 2 shadow_enabled = true shadow_bias = 0.03 shadow_contact = 6.48 shadow_reverse_cull_face = true spot_range = 36.0 spot_angle = 78.3316 [node name="SpotLight" type="SpotLight" parent="Lights"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 6.6, 9 ) shadow_enabled = true shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 57.198 [node name="SpotLight2" type="SpotLight" parent="Lights"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 6.6, -9 ) shadow_enabled = true shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 57.198 [node name="SpotLight6" type="SpotLight" parent="Lights"] transform = Transform( 0.707107, 3.09086e-08, -0.707107, 0.707107, -3.09086e-08, 0.707107, 0, -1, -4.37114e-08, 6.51182, 11.2714, -20.2539 ) light_color = Color( 0.803922, 1, 0.901961, 1 ) light_energy = 3.0 shadow_enabled = true shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 56.6429 [node name="SpotLight7" type="SpotLight" parent="Lights"] transform = Transform( -1, -1.19608e-14, 2.98023e-08, -2.69128e-08, -0.42955, -0.903043, 1.28016e-08, -0.903043, 0.42955, 12.6266, 13.5114, -13.799 ) light_color = Color( 1, 0, 0, 1 ) light_energy = 8.24 light_specular = 1.0 light_bake_mode = 2 shadow_enabled = true shadow_bias = 0.0 shadow_contact = 2.86 shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 56.6429 [node name="SpotLight8" type="SpotLight" parent="Lights"] transform = Transform( -1, -1.19608e-14, 2.98023e-08, -2.69128e-08, -0.42955, -0.903043, 1.28016e-08, -0.903043, 0.42955, 20.0004, 13.5114, -13.799 ) light_color = Color( 1, 0, 0, 1 ) light_energy = 8.24 light_specular = 1.0 light_bake_mode = 2 shadow_enabled = true shadow_bias = 0.0 shadow_contact = 2.86 shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 56.6429 [node name="SpotLight9" type="SpotLight" parent="Lights"] transform = Transform( -1, -1.30266e-15, 2.98023e-08, -2.69128e-08, -0.42955, -0.903043, 1.28016e-08, -0.903043, 0.42955, 28.1051, 13.5114, -13.799 ) light_color = Color( 1, 0, 0, 1 ) light_energy = 8.24 light_specular = 1.0 light_bake_mode = 2 shadow_enabled = true shadow_bias = 0.0 shadow_contact = 2.86 shadow_reverse_cull_face = true spot_range = 16.0 spot_angle = 56.6429 [node name="SpotLight3" type="SpotLight" parent="Lights"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -18, 13.6, 0 ) shadow_enabled = true shadow_reverse_cull_face = true spot_range = 24.0 spot_angle = 57.198 [node name="SpotLight4" type="SpotLight" parent="Lights"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 13.9999, 2.77229, -9.77516e-06 ) light_color = Color( 0.662745, 0.929412, 0.898039, 1 ) light_energy = 2.0 shadow_enabled = true spot_range = 24.0 spot_angle = 57.198 script = ExtResource( 11 ) speed = 30 noise_amount = 0.5 [node name="SpotLight5" type="SpotLight" parent="Lights"] transform = Transform( -1, 0, 1.19209e-07, 8.42937e-08, 0.707107, 0.707107, -8.42937e-08, 0.707107, -0.707107, 2, 13, 18 ) light_color = Color( 0.905882, 0.854902, 0.752941, 1 ) shadow_enabled = true spot_range = 38.0 spot_angle = 63.7888 [node name="Killfloor" parent="." instance=ExtResource( 14 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -10.0737, 0 ) visible = false [editable path="Killfloor"]