diff --git a/block/Assets/GameplayArt/Black.png b/block/Assets/GameplayArt/Black.png new file mode 100644 index 0000000..7b9ab52 Binary files /dev/null and b/block/Assets/GameplayArt/Black.png differ diff --git a/block/Assets/GameplayArt/Black.png.import b/block/Assets/GameplayArt/Black.png.import new file mode 100644 index 0000000..898ed08 --- /dev/null +++ b/block/Assets/GameplayArt/Black.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djar02rjgqabs" +path="res://.godot/imported/Black.png-1613e05a6d554bb6d40131c1c2f5f072.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/GameplayArt/Black.png" +dest_files=["res://.godot/imported/Black.png-1613e05a6d554bb6d40131c1c2f5f072.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 diff --git a/block/Assets/GameplayArt/PallateV1.png b/block/Assets/GameplayArt/PallateV1.png new file mode 100644 index 0000000..79f4929 Binary files /dev/null and b/block/Assets/GameplayArt/PallateV1.png differ diff --git a/block/Assets/GameplayArt/PallateV1.png.import b/block/Assets/GameplayArt/PallateV1.png.import new file mode 100644 index 0000000..4318d3f --- /dev/null +++ b/block/Assets/GameplayArt/PallateV1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4xxaewt8vfbl" +path="res://.godot/imported/PallateV1.png-34e6e0012a0cedbe20615ffb3ccf5822.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/GameplayArt/PallateV1.png" +dest_files=["res://.godot/imported/PallateV1.png-34e6e0012a0cedbe20615ffb3ccf5822.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 diff --git a/block/Assets/GameplayArt/wizard_1.png b/block/Assets/GameplayArt/wizard_1.png new file mode 100644 index 0000000..8cec16e Binary files /dev/null and b/block/Assets/GameplayArt/wizard_1.png differ diff --git a/block/Assets/GameplayArt/wizard_1.png.import b/block/Assets/GameplayArt/wizard_1.png.import new file mode 100644 index 0000000..d23afd4 --- /dev/null +++ b/block/Assets/GameplayArt/wizard_1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dk7eufhisqp25" +path="res://.godot/imported/wizard_1.png-f69e6649a354bdd2df6db43b36f207c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/GameplayArt/wizard_1.png" +dest_files=["res://.godot/imported/wizard_1.png-f69e6649a354bdd2df6db43b36f207c1.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 diff --git a/block/Assets/PlaceHolders/PlaceholderPallate.png b/block/Assets/PlaceHolders/PlaceholderPallate.png new file mode 100644 index 0000000..320e953 Binary files /dev/null and b/block/Assets/PlaceHolders/PlaceholderPallate.png differ diff --git a/block/Assets/PlaceHolders/PlaceholderPallate.png.import b/block/Assets/PlaceHolders/PlaceholderPallate.png.import new file mode 100644 index 0000000..a303bf7 --- /dev/null +++ b/block/Assets/PlaceHolders/PlaceholderPallate.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5gvrcwfqtubf" +path="res://.godot/imported/PlaceholderPallate.png-81deac43f0fca2626c9303de8fa9ae37.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/PlaceHolders/PlaceholderPallate.png" +dest_files=["res://.godot/imported/PlaceholderPallate.png-81deac43f0fca2626c9303de8fa9ae37.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 diff --git a/block/Assets/Shaders/PosterizerTest.gdshader b/block/Assets/Shaders/PosterizerTest.gdshader new file mode 100644 index 0000000..b3378eb --- /dev/null +++ b/block/Assets/Shaders/PosterizerTest.gdshader @@ -0,0 +1,24 @@ +shader_type canvas_item; + +uniform sampler2D palette_texture : filter_nearest; +uniform int palette_size = 16; +uniform sampler2D screen_texture : hint_screen_texture, filter_nearest; +uniform float pixel_size = 256.0; // This now represents the "Height" resolution +uniform float color_levels : hint_range(2.0, 256.0) = 2.0; + +uniform float PXwidth = 640; +uniform float PXheight = 360; + +void fragment() { + float aspect_ratio = SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x; + vec2 uv = SCREEN_UV; + uv.x = round(uv.x * pixel_size * aspect_ratio) / (pixel_size * aspect_ratio); + uv.y = round(uv.y * pixel_size) / pixel_size; + + // 3. Sample and Posterize + vec4 rgba = texture(screen_texture, uv); + + vec3 crushed_color = floor(rgba.rgb * color_levels) / (color_levels - 1.0); + + COLOR = vec4(crushed_color, rgba.a); +} \ No newline at end of file diff --git a/block/Assets/Shaders/PosterizerTest.gdshader.uid b/block/Assets/Shaders/PosterizerTest.gdshader.uid new file mode 100644 index 0000000..dc04576 --- /dev/null +++ b/block/Assets/Shaders/PosterizerTest.gdshader.uid @@ -0,0 +1 @@ +uid://sek5p4kfxpli diff --git a/block/Assets/Shaders/ShaderTest.gdshader b/block/Assets/Shaders/ShaderTest.gdshader new file mode 100644 index 0000000..0d8abc8 --- /dev/null +++ b/block/Assets/Shaders/ShaderTest.gdshader @@ -0,0 +1,65 @@ +shader_type canvas_item; + +// This grabs the screen texture automatically in Godot 4 +uniform sampler2D screen_texture : hint_screen_texture, filter_nearest; +uniform sampler2D palette_texture : filter_nearest; +uniform int palette_size = 16; +uniform float pixel_size = 256.0; // This now represents the "Height" resolution +uniform float color_levels : hint_range(2.0, 256.0) = 2.0; + +uniform float PXwidth = 640; +uniform float PXheight = 360; + +void fragment() { + float aspect_ratio = SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x; + vec2 uv = SCREEN_UV; + uv.x = round(uv.x * pixel_size * aspect_ratio) / (pixel_size * aspect_ratio); + uv.y = round(uv.y * pixel_size) / pixel_size; + + // 3. Sample and Posterize + vec4 rgba = texture(screen_texture, uv); + + + float best_dist = 10.0; + vec3 best_color = rgba.rgb; +///* + // test posteriser instead of the for loop: + float levels = 8.0; // Number of color steps per channel + rgba.rgb = floor(rgba.rgb * levels) / levels; + COLOR = vec4(rgba.rgb, 1.0); +//*/ + +//* + // Palette snapping logic + for (int i = 0; i < palette_size; i++) { + float x_coord = (float(i) + 0.5) / float(palette_size); + vec3 p_color = texture(palette_texture, vec2(x_coord, 0.5)).rgb; + + float dist = distance(rgba.rgb, p_color); + + if (dist < best_dist) { + best_dist = dist; + best_color = p_color; + } + } +//*/ + COLOR = vec4(best_color, 1.0); +} + +void vertex() { + // Called for every vertex the material is visible on. +} + +//void light() { +// // Called for every pixel for every light affecting the CanvasItem. +// // Uncomment to replace the default light processing function with this one. +//} + + + +/* + // test posteriser instead of the for loop: + float levels = 8.0; // Number of color steps per channel + rgba.rgb = floor(rgba.rgb * levels) / levels; + COLOR = vec4(rgba.rgb, 1.0); +*/ diff --git a/block/Assets/Shaders/ShaderTest.gdshader.uid b/block/Assets/Shaders/ShaderTest.gdshader.uid new file mode 100644 index 0000000..9cf642b --- /dev/null +++ b/block/Assets/Shaders/ShaderTest.gdshader.uid @@ -0,0 +1 @@ +uid://dyr1qs8xwscgm diff --git a/block/Scenes/ShaderTest.tscn b/block/Scenes/ShaderTest.tscn new file mode 100644 index 0000000..722891e --- /dev/null +++ b/block/Scenes/ShaderTest.tscn @@ -0,0 +1,37 @@ +[gd_scene format=3 uid="uid://3xfnj6mipd2w"] + +[ext_resource type="PackedScene" uid="uid://du7hapc7kscm6" path="res://Scenes/game.tscn" id="1_i0wgn"] +[ext_resource type="Shader" uid="uid://dyr1qs8xwscgm" path="res://Assets/Shaders/ShaderTest.gdshader" id="2_exucn"] +[ext_resource type="Texture2D" uid="uid://djar02rjgqabs" path="res://Assets/GameplayArt/Black.png" id="2_ipaa6"] +[ext_resource type="Texture2D" uid="uid://b4xxaewt8vfbl" path="res://Assets/GameplayArt/PallateV1.png" id="4_vet50"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_exucn"] +shader = ExtResource("2_exucn") +shader_parameter/palette_texture = ExtResource("4_vet50") +shader_parameter/palette_size = 16 +shader_parameter/pixel_size = 256.0 +shader_parameter/color_levels = 8.0 +shader_parameter/PXwidth = 640.0 +shader_parameter/PXheight = 360.0 + +[node name="ShaderTest" type="Node2D" unique_id=1126703629] + +[node name="Game" parent="." unique_id=850692785 instance=ExtResource("1_i0wgn")] + +[node name="Sprite2D" parent="Game/ArenaGameManager/MapArena/Parallax2D" parent_id_path=PackedInt32Array(850692785, 1024187604, 194007747, 598922861) index="0" unique_id=1318408175] +texture = ExtResource("2_ipaa6") + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=298300130] +layer = 10 + +[node name="ColorRect" type="ColorRect" parent="CanvasLayer" unique_id=570744568] +material = SubResource("ShaderMaterial_exucn") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[editable path="Game"] +[editable path="Game/ArenaGameManager"] +[editable path="Game/ArenaGameManager/MapArena"] diff --git a/block/Scenes/player.tscn b/block/Scenes/player.tscn index f2491a0..8996030 100644 --- a/block/Scenes/player.tscn +++ b/block/Scenes/player.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://cjrgnm28xwju7"] [ext_resource type="Script" uid="uid://bah031ailk0ha" path="res://Scenes/player.gd" id="1_cvnsp"] -[ext_resource type="Texture2D" uid="uid://g0m835iol4mp" path="res://Assets/PlaceHolders/Screenshot 2024-11-24 210808.png" id="1_v0iea"] +[ext_resource type="Texture2D" uid="uid://dk7eufhisqp25" path="res://Assets/GameplayArt/wizard_1.png" id="2_vgqql"] [ext_resource type="Texture2D" uid="uid://bcmuqd6p3jhdw" path="res://Assets/PlaceHolders/Elmo.png" id="3_6t5aa"] [ext_resource type="Script" uid="uid://b7vgyn15fioeu" path="res://Scenes/shield_hitbox.gd" id="4_vgqql"] @@ -13,8 +13,9 @@ script = ExtResource("1_cvnsp") [node name="Body" type="Sprite2D" parent="." unique_id=719417979] +rotation = -1.5707964 scale = Vector2(0.114894986, 0.11449075) -texture = ExtResource("1_v0iea") +texture = ExtResource("2_vgqql") [node name="BodyColision" type="CollisionShape2D" parent="." unique_id=1477808378] scale = Vector2(4.2653956, 4.2653956) diff --git a/block/project.godot b/block/project.godot index 0e5727c..13abf57 100644 --- a/block/project.godot +++ b/block/project.godot @@ -15,6 +15,14 @@ run/main_scene="uid://du7hapc7kscm6" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="res://icon.svg" +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=1080 +window/stretch/mode="canvas_items" +window/stretch/aspect="expand" +window/stretch/scale=2.0 + [global_group] player="Making this for an easy reference to the player in the enemies code"