commit c989b89b94a16dab3eb817df8dbbefc0c8175a30 Author: Gabriella Date: Tue Oct 21 23:06:38 2025 -0600 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6831751 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.editorconfig +.godot/ diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..ea89bc6 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0jfaeimwl58i" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..f17faf5 --- /dev/null +++ b/project.godot @@ -0,0 +1,24 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="simple starfield" +config/features=PackedStringArray("4.5", "Forward Plus") +config/icon="res://icon.svg" + +[display] + +window/size/viewport_width=1270 +window/size/viewport_height=720 + +[dotnet] + +project/assembly_name="simple starfield" diff --git a/src/starfield_texture.gdshader b/src/starfield_texture.gdshader new file mode 100644 index 0000000..53d3653 --- /dev/null +++ b/src/starfield_texture.gdshader @@ -0,0 +1,29 @@ +shader_type canvas_item; + +uniform vec2 resolution = vec2(1270, 720); +uniform sampler2D noise_texture: filter_nearest, repeat_enable; +uniform float density: hint_range(1.0, 100.0, 0.1) = 20.0; +uniform float speed_x: hint_range(-100.0, 100, 0.1) = 0.005; +uniform float speed_y: hint_range(-100.0, 100, 0.1) = 0.0; +uniform float layers: hint_range(1, 10, 1) = 5; +uniform float color_1: hint_range(0.1, 1, 0.1) = 0; +uniform float color_2: hint_range(0.1, 1, 0.1) = 0; +uniform float color_3: hint_range(0.1, 1, 0.1) = 0; +uniform float color_4: hint_range(0.1, 1, 0.1) = 0; + +float rand(vec2 uv) { + return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { + vec2 uv = UV; + uv.x *= resolution.x / resolution.y; + vec2 speed = TIME * vec2(speed_x, speed_y); + float stars = 0.0; + for(float i = 0.0; i < layers; i++){ + float shift = i * 0.3; + float brightness = 1.0 - i * 0.2; + stars += step(0.2, pow(texture(noise_texture, uv + shift + speed * (1.0 - i * 0.1)).r, density)) * brightness; + COLOR = vec4(vec3(stars), 1); + } +} diff --git a/src/starfield_texture.gdshader.uid b/src/starfield_texture.gdshader.uid new file mode 100644 index 0000000..7a025f6 --- /dev/null +++ b/src/starfield_texture.gdshader.uid @@ -0,0 +1 @@ +uid://bm2uwshby7iak diff --git a/src/starfield_texture.tscn b/src/starfield_texture.tscn new file mode 100644 index 0000000..8e30887 --- /dev/null +++ b/src/starfield_texture.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=9 format=3 uid="uid://bcvjq6tdfp34q"] + +[ext_resource type="Shader" uid="uid://bm2uwshby7iak" path="res://src/starfield_texture.gdshader" id="1_40a2p"] + +[sub_resource type="Shader" id="Shader_40a2p"] +code = "shader_type canvas_item; + +uniform vec2 resolution = vec2(1270, 720); +uniform sampler2D noise_texture: filter_nearest, repeat_enable; +uniform float density: hint_range(1.0, 100.0, 0.1) = 20.0; +uniform float speed_x: hint_range(-100.0, 100, 0.1) = 0.005; +uniform float speed_y: hint_range(-100.0, 100, 0.1) = 0.0; +uniform float layers: hint_range(1, 10, 1) = 5; +uniform float color_1: hint_range(0.1, 1, 0.1) = 0; +uniform float color_2: hint_range(0.1, 1, 0.1) = 0; +uniform float color_3: hint_range(0.1, 1, 0.1) = 0; +uniform float color_4: hint_range(0.1, 1, 0.1) = 0; + +float rand(vec2 uv) { + return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { + vec2 uv = UV; + uv.x *= resolution.x / resolution.y; + vec2 speed = TIME * vec2(speed_x, speed_y); + float stars = 0.0; + for(float i = 0.0; i < layers; i++){ + float shift = i * 0.3; + float brightness = 1.0 - i * 0.2; + stars += step(0.2, pow(texture(noise_texture, uv + shift + speed * (1.0 - i * 0.1)).r, density)) * brightness; + COLOR = vec4(vec3(stars), 1); + } +} +" + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_0fi7r"] +frequency = 1.0 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_tg06b"] +noise = SubResource("FastNoiseLite_0fi7r") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tg06b"] +shader = SubResource("Shader_40a2p") +shader_parameter/resolution = Vector2(1270, 720) +shader_parameter/noise_texture = SubResource("NoiseTexture2D_tg06b") +shader_parameter/density = 20.0 +shader_parameter/speed_x = 0.005 +shader_parameter/speed_y = 0.0 +shader_parameter/layers = 5.0 +shader_parameter/color_1 = 0.0 +shader_parameter/color_2 = 0.0 +shader_parameter/color_3 = 0.0 +shader_parameter/color_4 = 0.0 + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_40a2p"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0fi7r"] +noise = SubResource("FastNoiseLite_40a2p") +seamless = true + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_0fi7r"] +shader = ExtResource("1_40a2p") +shader_parameter/resolution = Vector2(1270, 720) +shader_parameter/noise_texture = SubResource("NoiseTexture2D_0fi7r") +shader_parameter/density = 54.10000079125372 +shader_parameter/speed_x = 0.005 +shader_parameter/speed_y = 0.0 +shader_parameter/layers = 5.0 +shader_parameter/color_1 = 0.0 +shader_parameter/color_2 = 0.0 +shader_parameter/color_3 = 0.0 +shader_parameter/color_4 = 0.0 + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource("ShaderMaterial_tg06b") +layout_mode = 0 +offset_right = 1270.0 +offset_bottom = 720.0 +color = Color(0, 0, 0, 1) + +[node name="TextureRect" type="TextureRect" parent="."] +visible = false +material = SubResource("ShaderMaterial_0fi7r") +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0