Premier commit

This commit is contained in:
2026-09-01 22:41:37 +02:00
commit 7cff988739
133 changed files with 6412 additions and 0 deletions
@@ -0,0 +1,65 @@
// Stolen here https://godotshaders.com/shader/parallax-mapping-2/
shader_type spatial;
render_mode unshaded;
uniform sampler2D noise_texture;
uniform sampler2D gradient;
group_uniforms depth;
uniform int layers : hint_range(0, 64, 1) = 8;
uniform float depth_amount = 1.0;
uniform float fade_amount : hint_range(0.0, 16.0, 0.01) = 1.0;
vec2 to_polar(vec2 uv) {
uv = uv * 2.0 - 1.0;
float radius = length(uv);
float angle = atan(uv.x, uv.y);
return vec2(angle / PI, radius) / 2.0;
}
float overlay(float a, float b){
float limit = step(0.5, a);
return mix(2.0 * a * b, 1.0 - 2.0 * (1.0 - a) * (1.0 - b), limit);
}
vec2 parallax(float depth, vec3 n, vec3 t, vec3 v) {
vec3 normal = normalize(n);
vec3 tangent = normalize(t);
vec3 bitangent = cross(normal, tangent);
vec3 view = normalize(v);
vec3 view_tangent = vec3(dot(view, tangent), dot(view, bitangent), dot(view, normal));
vec2 offset = (view_tangent.xy / max(view_tangent.z, 0.001)) * depth;
offset = vec2(-offset.x, offset.y);
return offset;
}
void fragment() {
float value = 0.0;
for(int i = 0; i < layers; i++){
float t = float(i) / float(layers);
float depth = t * depth_amount;
vec2 circle_uv = UV + parallax(depth, NORMAL, TANGENT, VIEW);
float circle = length(circle_uv * 2.0 - 1.0);
circle = clamp((circle - 0.2) / 0.8, 0.0, 1.0);
vec2 noise_uv = UV + parallax(depth, NORMAL, TANGENT, VIEW);
noise_uv = to_polar(noise_uv);
noise_uv.y += TIME * 0.1;
noise_uv += t;
float noise = texture(noise_texture, noise_uv).r;
float layer_value = overlay(circle, noise);
layer_value = step(0.5, layer_value);
layer_value *= pow(1.0 - t, fade_amount);
value = max(value, layer_value);
}
vec4 color = texture(gradient, vec2(value));
ALBEDO = color.xyz;
}
@@ -0,0 +1 @@
uid://boy8idm1nge7n
+45
View File
@@ -0,0 +1,45 @@
extends Node3D
const SPAWN_RANDOM_POSITION_RANGE = 10
const SPAWN_RANDOM_ANGLE_RANGE = PI/8
@export var delay : float = 5.
@export var duration : float = 10.
@export var spawn_rate : float = 30.
@export var horde_manager : AlienHordeManager
var current_frame : int = 0
var aliens : Array[Alien] = []
var clusters := []
var clusters_coords : Array[Vector2i] = []
var time_elapsed = 0.
var time_spawning = 0.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if delay > 0:
delay -= delta
else:
spawn_aliens(delta)
func spawn_aliens(delta):
if time_elapsed < duration:
time_elapsed += delta
time_spawning += delta
for i in range(roundi(spawn_rate * time_spawning)):
time_spawning -= 1/spawn_rate
spawn_alien()
func spawn_alien() -> Alien:
var alien_position : Vector3 = Vector3(
%SpawnPoint.global_position.x + randf_range(-SPAWN_RANDOM_POSITION_RANGE, SPAWN_RANDOM_POSITION_RANGE),
0,
%SpawnPoint.global_position.z + randf_range(-SPAWN_RANDOM_POSITION_RANGE, SPAWN_RANDOM_POSITION_RANGE)
)
var alien_rotation : float = rotation.y + randf_range(-SPAWN_RANDOM_ANGLE_RANGE, SPAWN_RANDOM_ANGLE_RANGE)
return horde_manager.spawn_alien(alien_position, alien_rotation)
+1
View File
@@ -0,0 +1 @@
uid://bkljflytckumm
+77
View File
@@ -0,0 +1,77 @@
[gd_scene format=3 uid="uid://c50w214ctcjc7"]
[ext_resource type="Shader" uid="uid://boy8idm1nge7n" path="res://objects/spawner/assets/shaders/portal.gdshader" id="1_jjtoq"]
[ext_resource type="Script" uid="uid://bkljflytckumm" path="res://objects/spawner/spawner.gd" id="1_y68vg"]
[sub_resource type="Animation" id="Animation_s17ww"]
resource_name = "Appear"
length = 0.4
[sub_resource type="Animation" id="Animation_y68vg"]
length = 0.001
[sub_resource type="AnimationLibrary" id="AnimationLibrary_d6t07"]
_data = {
&"Appear": SubResource("Animation_s17ww"),
&"RESET": SubResource("Animation_y68vg")
}
[sub_resource type="SphereMesh" id="SphereMesh_d6t07"]
radius = 0.4
height = 0.8
[sub_resource type="Gradient" id="Gradient_y68vg"]
offsets = PackedFloat32Array(0, 0.043333333, 0.98333335)
colors = PackedColorArray(0, 0, 0, 1, 0.22352941, 0.03529412, 0.2784314, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fx0gv"]
gradient = SubResource("Gradient_y68vg")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_fcnqv"]
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_vf7ls"]
width = 300
height = 300
noise = SubResource("FastNoiseLite_fcnqv")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yf5fn"]
render_priority = 0
shader = ExtResource("1_jjtoq")
shader_parameter/noise_texture = SubResource("NoiseTexture2D_vf7ls")
shader_parameter/gradient = SubResource("GradientTexture1D_fx0gv")
shader_parameter/layers = 8
shader_parameter/depth_amount = 1.34
shader_parameter/fade_amount = 1.08999997563632
[sub_resource type="SphereMesh" id="SphereMesh_w02y4"]
radius = 0.8
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ahe7j"]
shading_mode = 0
albedo_color = Color(0.10980392, 0.050980393, 0.12941177, 1)
[node name="Spawner" type="Node3D" unique_id=695896823]
script = ExtResource("1_y68vg")
duration = 1.0
spawn_rate = 200.0
[node name="SpawnPoint" type="Node3D" parent="." unique_id=949382199]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1684067, 0, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=2140330107]
libraries/ = SubResource("AnimationLibrary_d6t07")
autoplay = &"Appear"
[node name="Aliens" type="Node" parent="." unique_id=1083817569]
unique_name_in_owner = true
[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1379665069]
transform = Transform3D(26.585, 0, 0, 0, 26.585, 0, 0, 0, 26.585, 0, 1.429512, 2.0852394)
mesh = SubResource("SphereMesh_d6t07")
surface_material_override/0 = SubResource("ShaderMaterial_yf5fn")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=655614315]
transform = Transform3D(15.39, 0, 0, 0, -6.727183e-07, 15.39, 0, -15.39, -6.727183e-07, -0.12734604, 1.4227005, 3.4225216)
mesh = SubResource("SphereMesh_w02y4")
surface_material_override/0 = SubResource("StandardMaterial3D_ahe7j")