├── .gitignore ├── Examples ├── Map 5 - Dithering │ └── dithering_mat.material ├── Map1 - PSone │ ├── debug_cube.obj │ ├── debug_cube.obj.import │ ├── debug_map.obj │ ├── debug_map.obj.import │ ├── debug_npc.obj │ ├── debug_npc.obj.import │ ├── mat_default.tres │ ├── scrPlayer.gd │ ├── sfx_waterstep.wav │ ├── sfx_waterstep.wav.import │ ├── tex_debug.png │ └── tex_debug.png.import ├── Map1.tscn ├── Map2 - City View │ ├── Buildings.material │ ├── Lights.material │ ├── mdlCityView.fbx │ ├── mdlCityView.fbx.import │ ├── mdlCityView.tscn │ ├── texCityView.jpg │ ├── texCityView.jpg.import │ ├── texLight.png │ └── texLight.png.import ├── Map2.tscn ├── Map3 - Mannequins │ ├── 1.mtl │ ├── 1.obj │ ├── 1.obj.import │ ├── 2.mtl │ ├── 2.obj │ ├── 2.obj.import │ ├── Floor.tres │ ├── Mannequins.tres │ ├── checkerboard.png │ ├── checkerboard.png.import │ ├── checkerboard_n.png │ ├── checkerboard_n.png.import │ ├── checkerboard_s.png │ ├── checkerboard_s.png.import │ ├── texMannequin.jpg │ ├── texMannequin.jpg.import │ ├── texMannequin_n.jpg │ └── texMannequin_n.jpg.import ├── Map3.tscn ├── Map4 - 2D │ ├── Player │ │ ├── Idle │ │ │ ├── side.png │ │ │ └── side.png.import │ │ └── Walking │ │ │ └── Side │ │ │ ├── 0001.png │ │ │ ├── 0001.png.import │ │ │ ├── 0002.png │ │ │ ├── 0002.png.import │ │ │ ├── 0003.png │ │ │ ├── 0003.png.import │ │ │ ├── 0004.png │ │ │ ├── 0004.png.import │ │ │ ├── 0005.png │ │ │ ├── 0005.png.import │ │ │ ├── 0006.png │ │ │ ├── 0006.png.import │ │ │ ├── 0007.png │ │ │ ├── 0007.png.import │ │ │ ├── 0008.png │ │ │ ├── 0008.png.import │ │ │ ├── 0009.png │ │ │ ├── 0009.png.import │ │ │ ├── 0010.png │ │ │ ├── 0010.png.import │ │ │ ├── 0011.png │ │ │ ├── 0011.png.import │ │ │ ├── 0012.png │ │ │ ├── 0012.png.import │ │ │ ├── 0013.png │ │ │ ├── 0013.png.import │ │ │ ├── 0014.png │ │ │ ├── 0014.png.import │ │ │ ├── 0015.png │ │ │ ├── 0015.png.import │ │ │ ├── 0016.png │ │ │ ├── 0016.png.import │ │ │ ├── 0017.png │ │ │ ├── 0017.png.import │ │ │ ├── 0018.png │ │ │ ├── 0018.png.import │ │ │ ├── 0019.png │ │ │ ├── 0019.png.import │ │ │ ├── 0020.png │ │ │ ├── 0020.png.import │ │ │ ├── 0021.png │ │ │ ├── 0021.png.import │ │ │ ├── 0022.png │ │ │ ├── 0022.png.import │ │ │ ├── 0023.png │ │ │ ├── 0023.png.import │ │ │ ├── 0024.png │ │ │ ├── 0024.png.import │ │ │ ├── 0025.png │ │ │ └── 0025.png.import │ ├── scrPlayer.gd │ ├── shrWind.gdshader │ ├── texFlower1.png │ ├── texFlower1.png.import │ ├── texFlower2.png │ ├── texFlower2.png.import │ ├── texGrass.png │ ├── texGrass.png.import │ ├── texHouse1.png │ ├── texHouse1.png.import │ ├── texHouse2.png │ ├── texHouse2.png.import │ ├── texHouse3.png │ ├── texHouse3.png.import │ ├── texSky.jpg │ ├── texSky.jpg.import │ ├── texSun.jpg │ ├── texSun.jpg.import │ ├── texTree.png │ └── texTree.png.import ├── Map4.tscn ├── Map5.tscn ├── bus_main.tres └── scrGameManeger.gd ├── GodotRetro ├── Object Shaders │ ├── Debug │ │ ├── helloworld-2d.gdshader │ │ ├── helloworld.gdshader │ │ ├── helloworld2-2d.gdshader │ │ └── helloworld2.gdshader │ └── PSX Shaders │ │ ├── psx_lit.gdshader │ │ └── psx_unlit.gdshader ├── Other │ └── Images │ │ ├── CRT Frame.png │ │ ├── CRT Frame.png.import │ │ ├── bayer2x2.png │ │ ├── bayer2x2.png.import │ │ ├── bayer8x8.png │ │ ├── bayer8x8.png.import │ │ ├── bluenoise128x128.png │ │ ├── bluenoise128x128.png.import │ │ ├── grain.jpg │ │ ├── grain.jpg.import │ │ ├── psxdither.png │ │ └── psxdither.png.import └── Screen Shaders │ ├── AccurateCRT.gdshader │ ├── Aditional Shaders │ ├── B&W.gdshader │ ├── BetterCC.gdshader │ ├── Blur.gdshader │ ├── ColorPrecission.gdshader │ ├── Dithering.gdshader │ └── Sharpness.gdshader │ ├── Glitch.gdshader │ ├── Grain.gdshader │ ├── JpegCompression.gdshader │ ├── LensDistortion.gdshader │ ├── NTSC.gdshader │ ├── NTSCBasic.gdshader │ ├── SimpleGlitch.gdshader │ ├── SimpleGrain.gdshader │ ├── TV.gdshader │ ├── VHS.gdshader │ └── VHSPause.gdshader ├── LICENSE ├── README.md ├── icon.png ├── icon.png.import └── project.godot /.gitignore: -------------------------------------------------------------------------------- 1 | # Godot-specific ignores 2 | .godot/ 3 | export_presets.cfg 4 | 5 | #My stuff 6 | Resources/ 7 | GodotRetro/Object Shaders/PSX Shaders/Not Working/ 8 | -------------------------------------------------------------------------------- /Examples/Map 5 - Dithering/dithering_mat.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map 5 - Dithering/dithering_mat.material -------------------------------------------------------------------------------- /Examples/Map1 - PSone/debug_cube.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.82 (sub 7) OBJ File: '' 2 | # www.blender.org 3 | mtllib debug_cube.mtl 4 | o debug_cube_Cube.002 5 | v -1.000000 -1.000000 1.000000 6 | v -1.000000 1.000000 1.000000 7 | v -1.000000 -1.000000 -1.000000 8 | v -1.000000 1.000000 -1.000000 9 | v 1.000000 -1.000000 1.000000 10 | v 1.000000 1.000000 1.000000 11 | v 1.000000 -1.000000 -1.000000 12 | v 1.000000 1.000000 -1.000000 13 | vt 0.000391 0.000391 14 | vt 0.000391 0.999609 15 | vt 0.999609 0.999609 16 | vt 0.999609 0.000391 17 | vt 0.000391 0.000391 18 | vt 0.000391 0.999609 19 | vt 0.999609 0.999609 20 | vt 0.999609 0.000391 21 | vt 0.000391 0.000391 22 | vt 0.000391 0.999609 23 | vt 0.999609 0.999609 24 | vt 0.999609 0.000391 25 | vt 0.000391 0.000391 26 | vt 0.000391 0.999609 27 | vt 0.999609 0.999609 28 | vt 0.999609 0.000391 29 | vt 0.000391 0.999609 30 | vt 0.999609 0.999609 31 | vt 0.000391 0.000391 32 | vt 0.999609 0.000391 33 | vn -1.0000 0.0000 0.0000 34 | vn 0.0000 0.0000 -1.0000 35 | vn 1.0000 0.0000 0.0000 36 | vn 0.0000 0.0000 1.0000 37 | vn 0.0000 -1.0000 0.0000 38 | vn 0.0000 1.0000 0.0000 39 | usemtl tex_degug 40 | s off 41 | f 1/1/1 2/2/1 4/3/1 3/4/1 42 | f 3/5/2 4/6/2 8/7/2 7/8/2 43 | f 7/9/3 8/10/3 6/11/3 5/12/3 44 | f 5/13/4 6/14/4 2/15/4 1/16/4 45 | f 3/4/5 7/9/5 5/17/5 1/18/5 46 | f 8/19/6 4/20/6 2/15/6 6/14/6 47 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/debug_cube.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://b514p3t4l28p0" 7 | path="res://.godot/imported/debug_cube.obj-d990962dce2c580d0b0bd927a39f9457.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/debug_cube.obj-d990962dce2c580d0b0bd927a39f9457.mesh"] 12 | 13 | source_file="res://Examples/Map1 - PSone/debug_cube.obj" 14 | dest_files=["res://.godot/imported/debug_cube.obj-d990962dce2c580d0b0bd927a39f9457.mesh", "res://.godot/imported/debug_cube.obj-d990962dce2c580d0b0bd927a39f9457.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/debug_map.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://dpe7kh37jkdw0" 7 | path="res://.godot/imported/debug_map.obj-226b52b83d7d5715c0a942986749fb1d.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/debug_map.obj-226b52b83d7d5715c0a942986749fb1d.mesh"] 12 | 13 | source_file="res://Examples/Map1 - PSone/debug_map.obj" 14 | dest_files=["res://.godot/imported/debug_map.obj-226b52b83d7d5715c0a942986749fb1d.mesh", "res://.godot/imported/debug_map.obj-226b52b83d7d5715c0a942986749fb1d.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/debug_npc.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.82 (sub 7) OBJ File: '' 2 | # www.blender.org 3 | mtllib debug_npc.mtl 4 | o debug_npc_Cube.001 5 | v -0.416246 0.000953 0.463488 6 | v -0.703164 2.379828 0.782970 7 | v -0.416246 0.000953 -0.463488 8 | v -0.703164 2.379828 -0.782969 9 | v 0.416247 0.000953 0.463488 10 | v 0.703164 2.379828 0.782970 11 | v 0.416247 0.000953 -0.463488 12 | v 0.703164 2.379828 -0.782969 13 | v -0.231377 2.379828 0.257637 14 | v -0.231377 2.379828 -0.257637 15 | v 0.231378 2.379828 0.257637 16 | v 0.231378 2.379828 -0.257637 17 | v -0.231377 2.631745 0.257637 18 | v -0.231377 2.631745 -0.257637 19 | v 0.231378 2.631745 0.257637 20 | v 0.231378 2.631745 -0.257637 21 | v -0.508559 2.631745 0.566278 22 | v -0.508559 2.631745 -0.566278 23 | v 0.508559 2.631745 0.566278 24 | v 0.508559 2.631745 -0.566278 25 | v -0.508559 3.631745 0.566278 26 | v -0.508559 3.631745 -0.566278 27 | v 0.508559 3.631745 0.566278 28 | v 0.508559 3.631745 -0.566278 29 | vt 0.375000 0.000000 30 | vt 0.625000 0.000000 31 | vt 0.625000 0.250000 32 | vt 0.375000 0.250000 33 | vt 0.625000 0.500000 34 | vt 0.375000 0.500000 35 | vt 0.625000 0.750000 36 | vt 0.375000 0.750000 37 | vt 0.625000 1.000000 38 | vt 0.375000 1.000000 39 | vt 0.125000 0.500000 40 | vt 0.125000 0.750000 41 | vt 0.625000 0.750000 42 | vt 0.625000 1.000000 43 | vt 0.625000 0.500000 44 | vt 0.625000 0.500000 45 | vt 0.625000 0.750000 46 | vt 0.625000 0.250000 47 | vt 0.625000 0.000000 48 | vt 0.625000 0.500000 49 | vt 0.625000 0.750000 50 | vt 0.625000 0.000000 51 | vt 0.625000 0.250000 52 | vt 0.625000 1.000000 53 | vt 0.625000 1.000000 54 | vt 0.625000 0.750000 55 | vt 0.625000 1.000000 56 | vt 0.625000 0.000000 57 | vt 0.625000 0.250000 58 | vt 0.625000 0.250000 59 | vt 0.625000 0.500000 60 | vt 0.625000 0.000000 61 | vn -0.9928 -0.1197 0.0000 62 | vn 0.0000 -0.1331 -0.9911 63 | vn 0.9928 -0.1197 0.0000 64 | vn 0.0000 -0.1331 0.9911 65 | vn 0.0000 -1.0000 0.0000 66 | vn 0.0000 1.0000 0.0000 67 | vn 1.0000 0.0000 0.0000 68 | vn -1.0000 0.0000 0.0000 69 | vn 0.0000 0.0000 1.0000 70 | vn 0.0000 0.0000 -1.0000 71 | usemtl None 72 | s off 73 | f 1/1/1 2/2/1 4/3/1 3/4/1 74 | f 3/4/2 4/3/2 8/5/2 7/6/2 75 | f 7/6/3 8/5/3 6/7/3 5/8/3 76 | f 5/8/4 6/7/4 2/9/4 1/10/4 77 | f 3/11/5 7/6/5 5/8/5 1/12/5 78 | f 2/9/6 6/7/6 11/13/6 9/14/6 79 | f 11/13/7 12/15/7 16/16/7 15/17/7 80 | f 8/5/6 4/3/6 10/18/6 12/15/6 81 | f 6/7/6 8/5/6 12/15/6 11/13/6 82 | f 4/3/6 2/2/6 9/19/6 10/18/6 83 | f 15/17/5 16/16/5 20/20/5 19/21/5 84 | f 10/18/8 9/19/8 13/22/8 14/23/8 85 | f 9/14/9 11/13/9 15/17/9 13/24/9 86 | f 12/15/10 10/18/10 14/23/10 16/16/10 87 | f 17/25/9 19/21/9 23/26/9 21/27/9 88 | f 14/23/5 13/22/5 17/28/5 18/29/5 89 | f 13/24/5 15/17/5 19/21/5 17/25/5 90 | f 16/16/5 14/23/5 18/29/5 20/20/5 91 | f 20/20/10 18/29/10 22/30/10 24/31/10 92 | f 19/21/7 20/20/7 24/31/7 23/26/7 93 | f 18/29/8 17/28/8 21/32/8 22/30/8 94 | f 21/27/6 23/26/6 24/31/6 22/30/6 95 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/debug_npc.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://c0yjp4a1veijl" 7 | path="res://.godot/imported/debug_npc.obj-b72fa0d1ef0c75c085a4fa1208261a8d.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/debug_npc.obj-b72fa0d1ef0c75c085a4fa1208261a8d.mesh"] 12 | 13 | source_file="res://Examples/Map1 - PSone/debug_npc.obj" 14 | dest_files=["res://.godot/imported/debug_npc.obj-b72fa0d1ef0c75c085a4fa1208261a8d.mesh", "res://.godot/imported/debug_npc.obj-b72fa0d1ef0c75c085a4fa1208261a8d.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/mat_default.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://0t0puyk6e2pa"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://cd7j8kw0vl18p" path="res://Examples/Map1 - PSone/tex_debug.png" id="1"] 4 | [ext_resource type="Shader" path="res://GodotRetro/Object Shaders/PSX Shaders/psx_lit.gdshader" id="2"] 5 | 6 | [resource] 7 | render_priority = 0 8 | shader = ExtResource("2") 9 | shader_parameter/color = Color(1, 1, 1, 1) 10 | shader_parameter/specular_intensity = 0.0 11 | shader_parameter/resolution = 125.0 12 | shader_parameter/cull_distance = 25.0 13 | shader_parameter/affine_texture_mapping_amount = 0.7 14 | shader_parameter/uv_scale = Vector2(1, 1) 15 | shader_parameter/uv_offset = Vector2(0, 0) 16 | shader_parameter/albedoTex = ExtResource("1") 17 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/scrPlayer.gd: -------------------------------------------------------------------------------- 1 | extends CharacterBody3D 2 | 3 | var run_speed = 12 4 | var walk_speed = 5 5 | var turn_speed = 90 6 | var gravity = 9.8 7 | 8 | var ia_moving_h = false 9 | var ia_moving_v = false 10 | 11 | var _direction = Vector3() 12 | var _velocity = Vector3() 13 | var _fall = Vector3() 14 | 15 | @onready var body = $player_body 16 | @onready var head = $player_body/player_head 17 | @onready var anm = $player_anm 18 | @onready var ftp_sound = $player_body/player_foot/sfx_footstep 19 | 20 | func _physics_process(delta): 21 | _direction = Vector3() 22 | 23 | # Movement 24 | if Input.is_action_pressed("player_walk_front"): 25 | _direction -= transform.basis.z 26 | ia_moving_v = true 27 | elif Input.is_action_pressed("player_walk_back"): 28 | _direction += transform.basis.z 29 | ia_moving_v = true 30 | else: 31 | ia_moving_v = false 32 | if Input.is_action_pressed("player_walk_left"): 33 | _direction -= transform.basis.x 34 | ia_moving_h = true 35 | elif Input.is_action_pressed("player_walk_right"): 36 | _direction += transform.basis.x 37 | ia_moving_h = true 38 | else: 39 | ia_moving_h = false 40 | 41 | # Rotation 42 | if Input.is_action_pressed("player_look_left"): 43 | rotate_y(deg_to_rad(turn_speed * delta)) 44 | if Input.is_action_pressed("player_look_right"): 45 | rotate_y(deg_to_rad(-turn_speed * delta)) 46 | 47 | # Gravity 48 | $player_colision.disabled = false 49 | if not is_on_floor(): 50 | _fall.y -= gravity * delta 51 | else: 52 | _fall.y = 0 53 | head.rotation.x = deg_to_rad(0) 54 | 55 | #Run 56 | if Input.is_action_pressed("player_run"): 57 | walk_speed = run_speed 58 | anm.playback_speed = 2 59 | else: 60 | walk_speed = 5 61 | anm.speed_scale = 1 62 | 63 | # Footsteps 64 | if ia_moving_v || ia_moving_h: 65 | anm.play("anm_walking") 66 | else: 67 | anm.play("anm_idle") 68 | 69 | _direction = _direction.normalized() 70 | _velocity = _direction * walk_speed 71 | set_velocity(_velocity) 72 | set_up_direction(Vector3.UP) 73 | move_and_slide() 74 | _velocity = _velocity 75 | set_velocity(_fall) 76 | set_up_direction(Vector3.UP) 77 | set_floor_stop_on_slope_enabled(true) 78 | move_and_slide() 79 | 80 | # Change footstep pitch 81 | func _on_player_audio_finished(): 82 | ftp_sound.pitch_scale = randf_range(.8, 1.2) 83 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/sfx_waterstep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map1 - PSone/sfx_waterstep.wav -------------------------------------------------------------------------------- /Examples/Map1 - PSone/sfx_waterstep.wav.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wav" 4 | type="AudioStreamWAV" 5 | uid="uid://dmoapg3a8yggb" 6 | path="res://.godot/imported/sfx_waterstep.wav-056a03eeaea804aa2edb18c193acaae3.sample" 7 | 8 | [deps] 9 | 10 | source_file="res://Examples/Map1 - PSone/sfx_waterstep.wav" 11 | dest_files=["res://.godot/imported/sfx_waterstep.wav-056a03eeaea804aa2edb18c193acaae3.sample"] 12 | 13 | [params] 14 | 15 | force/8_bit=false 16 | force/mono=true 17 | force/max_rate=true 18 | force/max_rate_hz=11025.0 19 | edit/trim=false 20 | edit/normalize=false 21 | edit/loop_mode=0 22 | edit/loop_begin=0 23 | edit/loop_end=-1 24 | compress/mode=0 25 | -------------------------------------------------------------------------------- /Examples/Map1 - PSone/tex_debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map1 - PSone/tex_debug.png -------------------------------------------------------------------------------- /Examples/Map1 - PSone/tex_debug.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cd7j8kw0vl18p" 6 | path.s3tc="res://.godot/imported/tex_debug.png-fe208f15f9a5c8893d9493c760f08b16.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map1 - PSone/tex_debug.png" 15 | dest_files=["res://.godot/imported/tex_debug.png-fe208f15f9a5c8893d9493c760f08b16.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map1.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=18 format=3 uid="uid://bm47ooslfo13v"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://b7ciqwsttyf1i" path="res://GodotRetro/Other/Images/CRT Frame.png" id="1"] 4 | [ext_resource type="ArrayMesh" uid="uid://b514p3t4l28p0" path="res://Examples/Map1 - PSone/debug_cube.obj" id="2"] 5 | [ext_resource type="ArrayMesh" uid="uid://dpe7kh37jkdw0" path="res://Examples/Map1 - PSone/debug_map.obj" id="3"] 6 | [ext_resource type="ArrayMesh" uid="uid://c0yjp4a1veijl" path="res://Examples/Map1 - PSone/debug_npc.obj" id="4"] 7 | [ext_resource type="Material" uid="uid://0t0puyk6e2pa" path="res://Examples/Map1 - PSone/mat_default.tres" id="5"] 8 | [ext_resource type="AudioStream" uid="uid://dmoapg3a8yggb" path="res://Examples/Map1 - PSone/sfx_waterstep.wav" id="6"] 9 | [ext_resource type="Script" path="res://Examples/Map1 - PSone/scrPlayer.gd" id="7"] 10 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/Aditional Shaders/Sharpness.gdshader" id="8"] 11 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/VHS.gdshader" id="9"] 12 | 13 | [sub_resource type="CapsuleShape3D" id="1"] 14 | height = 1.5 15 | 16 | [sub_resource type="Environment" id="2"] 17 | background_mode = 1 18 | background_color = Color(0.92549, 0.92549, 0.92549, 1) 19 | ambient_light_color = Color(0.968627, 0.968627, 0.968627, 1) 20 | glow_strength = 1.33 21 | fog_enabled = true 22 | 23 | [sub_resource type="Animation" id="3"] 24 | length = 5.0 25 | loop_mode = 1 26 | tracks/0/type = "value" 27 | tracks/0/imported = false 28 | tracks/0/enabled = true 29 | tracks/0/path = NodePath("player_body/player_head/player_cam:position") 30 | tracks/0/interp = 1 31 | tracks/0/loop_wrap = true 32 | tracks/0/keys = { 33 | "times": PackedFloat32Array(0, 2.5, 5), 34 | "transitions": PackedFloat32Array(1, 1, 1), 35 | "update": 0, 36 | "values": [Vector3(0, 0.1, -0.5), Vector3(0, -0.1, -0.5), Vector3(0, 0.1, -0.5)] 37 | } 38 | tracks/1/type = "method" 39 | tracks/1/imported = false 40 | tracks/1/enabled = true 41 | tracks/1/path = NodePath("player_body/player_foot/sfx_footstep") 42 | tracks/1/interp = 1 43 | tracks/1/loop_wrap = true 44 | tracks/1/keys = { 45 | "times": PackedFloat32Array(0), 46 | "transitions": PackedFloat32Array(1), 47 | "values": [{ 48 | "args": [], 49 | "method": &"stop" 50 | }] 51 | } 52 | 53 | [sub_resource type="Animation" id="4"] 54 | length = 0.6 55 | loop_mode = 1 56 | tracks/0/type = "value" 57 | tracks/0/imported = false 58 | tracks/0/enabled = true 59 | tracks/0/path = NodePath("player_body/player_head/player_cam:position") 60 | tracks/0/interp = 1 61 | tracks/0/loop_wrap = true 62 | tracks/0/keys = { 63 | "times": PackedFloat32Array(0, 0.3, 0.6), 64 | "transitions": PackedFloat32Array(1, 1, 1), 65 | "update": 0, 66 | "values": [Vector3(0, 0.15, -0.5), Vector3(0, -0.15, -0.5), Vector3(0, 0.15, -0.5)] 67 | } 68 | tracks/1/type = "method" 69 | tracks/1/imported = false 70 | tracks/1/enabled = true 71 | tracks/1/path = NodePath("player_body/player_foot/sfx_footstep") 72 | tracks/1/interp = 1 73 | tracks/1/loop_wrap = true 74 | tracks/1/keys = { 75 | "times": PackedFloat32Array(0.3), 76 | "transitions": PackedFloat32Array(1), 77 | "values": [{ 78 | "args": [0.0], 79 | "method": &"play" 80 | }] 81 | } 82 | 83 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_2d4mt"] 84 | _data = { 85 | "anm_idle": SubResource("3"), 86 | "anm_walking": SubResource("4") 87 | } 88 | 89 | [sub_resource type="Environment" id="5"] 90 | background_mode = 1 91 | background_color = Color(0.92549, 0.92549, 0.92549, 1) 92 | ambient_light_color = Color(0.968627, 0.968627, 0.968627, 1) 93 | glow_strength = 1.33 94 | fog_enabled = true 95 | fog_light_color = Color(0.921569, 0.921569, 0.921569, 1) 96 | fog_density = 0.06 97 | 98 | [sub_resource type="ShaderMaterial" id="6"] 99 | shader = ExtResource("8") 100 | shader_parameter/sharpen_amount = 1.0 101 | 102 | [sub_resource type="ShaderMaterial" id="7"] 103 | shader = ExtResource("9") 104 | shader_parameter/tape_wave_amount = 0.003 105 | shader_parameter/tape_crease_amount = 2.5 106 | shader_parameter/color_displacement = 1.0 107 | shader_parameter/lines_velocity = 0.1 108 | 109 | [node name="scnMap1" type="Node3D"] 110 | 111 | [node name="Map" type="Node" parent="."] 112 | 113 | [node name="debug_map" type="CSGMesh3D" parent="Map"] 114 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 5) 115 | use_collision = true 116 | mesh = ExtResource("3") 117 | material = ExtResource("5") 118 | 119 | [node name="Player" type="Node" parent="."] 120 | 121 | [node name="player_main" type="CharacterBody3D" parent="Player"] 122 | transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, -8.22059, 2.02321, 6.87202) 123 | script = ExtResource("7") 124 | 125 | [node name="player_colision" type="CollisionShape3D" parent="Player/player_main"] 126 | transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0) 127 | shape = SubResource("1") 128 | 129 | [node name="player_body" type="Node3D" parent="Player/player_main"] 130 | 131 | [node name="player_head" type="Node3D" parent="Player/player_main/player_body"] 132 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) 133 | 134 | [node name="player_cam" type="Camera3D" parent="Player/player_main/player_body/player_head"] 135 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, -0.5) 136 | environment = SubResource("2") 137 | current = true 138 | 139 | [node name="player_foot" type="Node3D" parent="Player/player_main/player_body"] 140 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) 141 | 142 | [node name="sfx_footstep" type="AudioStreamPlayer" parent="Player/player_main/player_body/player_foot"] 143 | stream = ExtResource("6") 144 | volume_db = -6.42 145 | bus = &"SFX" 146 | 147 | [node name="player_anm" type="AnimationPlayer" parent="Player/player_main"] 148 | libraries = { 149 | "": SubResource("AnimationLibrary_2d4mt") 150 | } 151 | 152 | [node name="Objects" type="Node" parent="."] 153 | 154 | [node name="Cubes" type="Node" parent="Objects"] 155 | 156 | [node name="debug_cube" type="CSGMesh3D" parent="Objects/Cubes"] 157 | transform = Transform3D(0.970119, 0.00493029, -0.24258, -0.00444893, 0.999987, 0.00253208, 0.24259, -0.00137719, 0.970128, -11.1506, 1.92377, 17.2825) 158 | use_collision = true 159 | mesh = ExtResource("2") 160 | material = ExtResource("5") 161 | 162 | [node name="debug_cube2" type="CSGMesh3D" parent="Objects/Cubes"] 163 | transform = Transform3D(0.300893, 0.0023498, -0.399321, -0.00222447, 0.499993, 0.00126604, 0.399322, 0.00101467, 0.3009, -9.31175, 1.42151, 17.6184) 164 | use_collision = true 165 | mesh = ExtResource("2") 166 | material = ExtResource("5") 167 | 168 | [node name="NPCs" type="Node" parent="Objects"] 169 | 170 | [node name="debug_npc" type="CSGMesh3D" parent="Objects/NPCs"] 171 | transform = Transform3D(0.676708, -0.0126336, 0.178624, 0.0132812, 0.699874, -0.000814963, -0.178577, 0.00417691, 0.676826, -13.8789, 0.795216, -6.24269) 172 | use_collision = true 173 | mesh = ExtResource("4") 174 | material = ExtResource("5") 175 | 176 | [node name="debug_npc2" type="CSGMesh3D" parent="Objects/NPCs"] 177 | transform = Transform3D(-0.284019, 0.00464477, -0.639775, 0.0132812, 0.699874, -0.000814941, 0.639653, -0.0124692, -0.284056, -3.87888, 0.795216, -6.24269) 178 | use_collision = true 179 | mesh = ExtResource("4") 180 | material = ExtResource("5") 181 | 182 | [node name="Data" type="Node" parent="."] 183 | 184 | [node name="WorldEnvironment" type="WorldEnvironment" parent="Data"] 185 | environment = SubResource("5") 186 | 187 | [node name="UI" type="Node" parent="."] 188 | 189 | [node name="Effects" type="Control" parent="UI"] 190 | layout_mode = 3 191 | anchors_preset = 15 192 | anchor_right = 1.0 193 | anchor_bottom = 1.0 194 | grow_horizontal = 2 195 | grow_vertical = 2 196 | 197 | [node name="BackBufferCopy" type="BackBufferCopy" parent="UI/Effects"] 198 | position = Vector2(160, 120) 199 | scale = Vector2(1.6, 1.2) 200 | copy_mode = 2 201 | 202 | [node name="Sharpness" type="ColorRect" parent="UI/Effects/BackBufferCopy"] 203 | material = SubResource("6") 204 | anchors_preset = 15 205 | anchor_right = 1.0 206 | anchor_bottom = 1.0 207 | offset_left = -100.0 208 | offset_top = -100.0 209 | offset_right = -100.0 210 | offset_bottom = -100.0 211 | 212 | [node name="BackBufferCopy2" type="BackBufferCopy" parent="UI/Effects"] 213 | position = Vector2(160, 120) 214 | scale = Vector2(1.6, 1.2) 215 | copy_mode = 2 216 | 217 | [node name="VHS" type="ColorRect" parent="UI/Effects/BackBufferCopy2"] 218 | material = SubResource("7") 219 | anchors_preset = 15 220 | anchor_right = 1.0 221 | anchor_bottom = 1.0 222 | offset_left = -100.0 223 | offset_top = -100.0 224 | offset_right = -100.0 225 | offset_bottom = -100.0 226 | 227 | [node name="Frame" type="Control" parent="UI"] 228 | layout_mode = 3 229 | anchors_preset = 15 230 | anchor_right = 1.0 231 | anchor_bottom = 1.0 232 | grow_horizontal = 2 233 | grow_vertical = 2 234 | 235 | [node name="CRT Frame" type="TextureRect" parent="UI/Frame"] 236 | layout_mode = 0 237 | anchor_right = 1.0 238 | anchor_bottom = 1.0 239 | offset_right = -3.05176e-05 240 | texture = ExtResource("1") 241 | expand_mode = 1 242 | -------------------------------------------------------------------------------- /Examples/Map2 - City View/Buildings.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map2 - City View/Buildings.material -------------------------------------------------------------------------------- /Examples/Map2 - City View/Lights.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map2 - City View/Lights.material -------------------------------------------------------------------------------- /Examples/Map2 - City View/mdlCityView.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map2 - City View/mdlCityView.fbx -------------------------------------------------------------------------------- /Examples/Map2 - City View/mdlCityView.fbx.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | importer_version=1 5 | type="PackedScene" 6 | uid="uid://b4ht0y2k248cq" 7 | path="res://.godot/imported/mdlCityView.fbx-da8036e89e385111ed2b2eddd315db15.scn" 8 | 9 | [deps] 10 | 11 | source_file="res://Examples/Map2 - City View/mdlCityView.fbx" 12 | dest_files=["res://.godot/imported/mdlCityView.fbx-da8036e89e385111ed2b2eddd315db15.scn"] 13 | 14 | [params] 15 | 16 | nodes/root_type="Node3D" 17 | nodes/root_name="Scene Root" 18 | nodes/apply_root_scale=true 19 | nodes/root_scale=1.0 20 | nodes/import_as_skeleton_bones=false 21 | meshes/ensure_tangents=true 22 | meshes/generate_lods=true 23 | meshes/create_shadow_meshes=true 24 | meshes/light_baking=0 25 | meshes/lightmap_texel_size=0.1 26 | meshes/force_disable_compression=false 27 | skins/use_named_skins=true 28 | animation/import=true 29 | animation/fps=15 30 | animation/trimming=false 31 | animation/remove_immutable_tracks=true 32 | animation/import_rest_as_RESET=false 33 | import_script/path="" 34 | _subresources={} 35 | fbx/importer=1 36 | fbx/allow_geometry_helper_nodes=false 37 | fbx/embedded_image_handling=1 38 | -------------------------------------------------------------------------------- /Examples/Map2 - City View/mdlCityView.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Examples/Map2 - City View/mdlCityView.fbx" type="PackedScene" id=1] 4 | 5 | [node name="mdlCityView" instance=ExtResource( 1 )] 6 | -------------------------------------------------------------------------------- /Examples/Map2 - City View/texCityView.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map2 - City View/texCityView.jpg -------------------------------------------------------------------------------- /Examples/Map2 - City View/texCityView.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://7kindiik3jqv" 6 | path.s3tc="res://.godot/imported/texCityView.jpg-5e0dbc355c7e67606d4805b036f92681.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map2 - City View/texCityView.jpg" 15 | dest_files=["res://.godot/imported/texCityView.jpg-5e0dbc355c7e67606d4805b036f92681.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map2 - City View/texLight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map2 - City View/texLight.png -------------------------------------------------------------------------------- /Examples/Map2 - City View/texLight.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://xbvqsx6764cv" 6 | path.s3tc="res://.godot/imported/texLight.png-22862f6ed5b7da6aa8b174f8426a3e56.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map2 - City View/texLight.png" 15 | dest_files=["res://.godot/imported/texLight.png-22862f6ed5b7da6aa8b174f8426a3e56.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/1.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl DefaultSkin 5 | Ns 225.000000 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.800000 0.800000 0.800000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.450000 11 | d 1.000000 12 | illum 2 13 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/1.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://dq85eyuvad8r1" 7 | path="res://.godot/imported/1.obj-c067677fb42c603fe45f22390ea1bbfa.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/1.obj-c067677fb42c603fe45f22390ea1bbfa.mesh"] 12 | 13 | source_file="res://Examples/Map3 - Mannequins/1.obj" 14 | dest_files=["res://.godot/imported/1.obj-c067677fb42c603fe45f22390ea1bbfa.mesh", "res://.godot/imported/1.obj-c067677fb42c603fe45f22390ea1bbfa.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/2.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl None 5 | Ns 500 6 | Ka 0.8 0.8 0.8 7 | Kd 0.8 0.8 0.8 8 | Ks 0.8 0.8 0.8 9 | d 1 10 | illum 2 11 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/2.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://ddbogjw1x7wc1" 7 | path="res://.godot/imported/2.obj-06d7af9708489760fc061b98911314a7.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/2.obj-06d7af9708489760fc061b98911314a7.mesh"] 12 | 13 | source_file="res://Examples/Map3 - Mannequins/2.obj" 14 | dest_files=["res://.godot/imported/2.obj-06d7af9708489760fc061b98911314a7.mesh", "res://.godot/imported/2.obj-06d7af9708489760fc061b98911314a7.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/Floor.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" load_steps=4 format=3 uid="uid://ma5actgdq6fi"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://dsfbjxyafewhy" path="res://Examples/Map3 - Mannequins/checkerboard.png" id="1_ecby6"] 4 | [ext_resource type="Texture2D" uid="uid://tx6sqb85wvba" path="res://Examples/Map3 - Mannequins/checkerboard_s.png" id="2_b1arr"] 5 | [ext_resource type="Texture2D" uid="uid://dw8v2w8t4d7qb" path="res://Examples/Map3 - Mannequins/checkerboard_n.png" id="3_j3pxt"] 6 | 7 | [resource] 8 | albedo_texture = ExtResource("1_ecby6") 9 | metallic_specular = 1.0 10 | metallic_texture = ExtResource("2_b1arr") 11 | normal_enabled = true 12 | normal_texture = ExtResource("3_j3pxt") 13 | backlight = Color(0.0313726, 0.0313726, 0.0313726, 1) 14 | texture_filter = 0 15 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/Mannequins.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://drbcap41y63px"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://bfk3i7hau7fo4" path="res://Examples/Map3 - Mannequins/texMannequin.jpg" id="1_a51ke"] 4 | [ext_resource type="Texture2D" uid="uid://5bofvonl3qpt" path="res://Examples/Map3 - Mannequins/texMannequin_n.jpg" id="2_llgx8"] 5 | 6 | [resource] 7 | specular_mode = 2 8 | albedo_color = Color(1, 0, 0, 1) 9 | albedo_texture = ExtResource("1_a51ke") 10 | metallic_specular = 0.0 11 | normal_enabled = true 12 | normal_scale = -0.72 13 | normal_texture = ExtResource("2_llgx8") 14 | texture_filter = 0 15 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map3 - Mannequins/checkerboard.png -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dsfbjxyafewhy" 6 | path.s3tc="res://.godot/imported/checkerboard.png-3982b50ab03460a2455b4cc17b9f24e3.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map3 - Mannequins/checkerboard.png" 15 | dest_files=["res://.godot/imported/checkerboard.png-3982b50ab03460a2455b4cc17b9f24e3.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map3 - Mannequins/checkerboard_n.png -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard_n.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dw8v2w8t4d7qb" 6 | path.s3tc="res://.godot/imported/checkerboard_n.png-ae821785e0cc2a86fe98cd12fd84e773.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map3 - Mannequins/checkerboard_n.png" 15 | dest_files=["res://.godot/imported/checkerboard_n.png-ae821785e0cc2a86fe98cd12fd84e773.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map3 - Mannequins/checkerboard_s.png -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/checkerboard_s.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://tx6sqb85wvba" 6 | path.s3tc="res://.godot/imported/checkerboard_s.png-03503f6c14704a847c45b241f2103776.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map3 - Mannequins/checkerboard_s.png" 15 | dest_files=["res://.godot/imported/checkerboard_s.png-03503f6c14704a847c45b241f2103776.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/texMannequin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map3 - Mannequins/texMannequin.jpg -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/texMannequin.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bfk3i7hau7fo4" 6 | path.s3tc="res://.godot/imported/texMannequin.jpg-caa02fdf9292308005b67c84b23a34b2.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map3 - Mannequins/texMannequin.jpg" 15 | dest_files=["res://.godot/imported/texMannequin.jpg-caa02fdf9292308005b67c84b23a34b2.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/texMannequin_n.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map3 - Mannequins/texMannequin_n.jpg -------------------------------------------------------------------------------- /Examples/Map3 - Mannequins/texMannequin_n.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://5bofvonl3qpt" 6 | path.s3tc="res://.godot/imported/texMannequin_n.jpg-41f1f60a1a4db1c75260233789a79c33.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://Examples/Map3 - Mannequins/texMannequin_n.jpg" 15 | dest_files=["res://.godot/imported/texMannequin_n.jpg-41f1f60a1a4db1c75260233789a79c33.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=1 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /Examples/Map3.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=16 format=3 uid="uid://cflj5251453pl"] 2 | 3 | [ext_resource type="Material" uid="uid://drbcap41y63px" path="res://Examples/Map3 - Mannequins/Mannequins.tres" id="2_op6ay"] 4 | [ext_resource type="Material" uid="uid://ma5actgdq6fi" path="res://Examples/Map3 - Mannequins/Floor.tres" id="4_2275d"] 5 | [ext_resource type="ArrayMesh" uid="uid://dq85eyuvad8r1" path="res://Examples/Map3 - Mannequins/1.obj" id="5"] 6 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/LensDistortion.gdshader" id="7"] 7 | [ext_resource type="ArrayMesh" uid="uid://ddbogjw1x7wc1" path="res://Examples/Map3 - Mannequins/2.obj" id="8"] 8 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/NTSC.gdshader" id="10"] 9 | [ext_resource type="Texture2D" uid="uid://dsrfu3ootv571" path="res://GodotRetro/Other/Images/grain.jpg" id="11"] 10 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/Aditional Shaders/Sharpness.gdshader" id="12"] 11 | 12 | [sub_resource type="PlaneMesh" id="2"] 13 | size = Vector2(4, 4) 14 | 15 | [sub_resource type="Environment" id="4"] 16 | background_mode = 1 17 | tonemap_mode = 2 18 | glow_levels/2 = 1.0 19 | glow_levels/3 = 0.0 20 | glow_levels/7 = 1.0 21 | glow_intensity = 0.34 22 | glow_strength = 0.92 23 | glow_blend_mode = 1 24 | glow_hdr_threshold = 0.27 25 | glow_hdr_scale = 1.6 26 | 27 | [sub_resource type="Animation" id="5"] 28 | resource_name = "Light3D" 29 | length = 6.0 30 | loop_mode = 1 31 | tracks/0/type = "value" 32 | tracks/0/imported = false 33 | tracks/0/enabled = true 34 | tracks/0/path = NodePath("../Lights/SpotLight2:position") 35 | tracks/0/interp = 1 36 | tracks/0/loop_wrap = true 37 | tracks/0/keys = { 38 | "times": PackedFloat32Array(0, 1.5, 2, 3.5, 4, 5.5), 39 | "transitions": PackedFloat32Array(1, 0.4, 1, 0.4, 1, 0.4), 40 | "update": 0, 41 | "values": [Vector3(0, 1.891, 0.067), Vector3(0.514, 1.891, 0.301), Vector3(0.514, 1.891, 0.301), Vector3(-0.401, 2.092, 0.254), Vector3(-0.401, 2.092, 0.254), Vector3(0, 1.891, 0.067)] 42 | } 43 | 44 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_7wbbk"] 45 | _data = { 46 | "Light3D": SubResource("5") 47 | } 48 | 49 | [sub_resource type="ShaderMaterial" id="6"] 50 | shader = ExtResource("7") 51 | shader_parameter/strength = -0.035 52 | 53 | [sub_resource type="ShaderMaterial" id="7"] 54 | shader = ExtResource("12") 55 | shader_parameter/sharpen_amount = 1.0 56 | 57 | [sub_resource type="ShaderMaterial" id="8"] 58 | shader = ExtResource("10") 59 | shader_parameter/blur_amount = 3.0 60 | shader_parameter/signal_quality = 0.2 61 | shader_parameter/bottom_strenth = 0.5 62 | shader_parameter/grain_tex = ExtResource("11") 63 | 64 | [node name="scnMap3" type="Node3D"] 65 | 66 | [node name="Models" type="Node" parent="."] 67 | 68 | [node name="Mannequin1" type="Node3D" parent="Models"] 69 | transform = Transform3D(4.75, 0, 8.22724, 0, 9.5, 0, -8.22724, 0, 4.75, -0.474328, 0, -0.330426) 70 | 71 | [node name="2" type="MeshInstance3D" parent="Models/Mannequin1"] 72 | transform = Transform3D(0.0156396, 0, -0.00401615, 0, 0.016147, 0, 0.00401615, 0, 0.0156396, 0.007, -0.003, 0.003) 73 | material_override = ExtResource("2_op6ay") 74 | mesh = ExtResource("8") 75 | 76 | [node name="Mannequin2" type="Node3D" parent="Models"] 77 | 78 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Models/Mannequin2"] 79 | transform = Transform3D(0.0388213, 0, -0.0672404, 0, 0.0776426, 0, 0.0672404, 0, 0.0388213, 0.427875, 0.0415803, -0.404017) 80 | material_override = ExtResource("2_op6ay") 81 | mesh = ExtResource("5") 82 | 83 | [node name="Floor" type="Node3D" parent="Models"] 84 | 85 | [node name="Floor" type="MeshInstance3D" parent="Models/Floor"] 86 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -2) 87 | mesh = SubResource("2") 88 | surface_material_override/0 = ExtResource("4_2275d") 89 | 90 | [node name="Floor2" type="MeshInstance3D" parent="Models/Floor"] 91 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -2) 92 | material_override = ExtResource("4_2275d") 93 | mesh = SubResource("2") 94 | surface_material_override/0 = ExtResource("4_2275d") 95 | 96 | [node name="Floor3" type="MeshInstance3D" parent="Models/Floor"] 97 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 2) 98 | mesh = SubResource("2") 99 | surface_material_override/0 = ExtResource("4_2275d") 100 | 101 | [node name="Floor4" type="MeshInstance3D" parent="Models/Floor"] 102 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 2) 103 | mesh = SubResource("2") 104 | surface_material_override/0 = ExtResource("4_2275d") 105 | 106 | [node name="Lights" type="Node" parent="."] 107 | 108 | [node name="SpotLight2" type="SpotLight3D" parent="Lights"] 109 | transform = Transform3D(1, 0, 0, 0, 0.977681, 0.210096, 0, -0.210096, 0.977681, -0.00136399, 1.89168, 0.0676361) 110 | light_energy = 1.5 111 | light_specular = 0.0 112 | shadow_enabled = true 113 | shadow_bias = 0.01 114 | spot_range = 3.0 115 | spot_angle = 65.3 116 | 117 | [node name="Data" type="Node" parent="."] 118 | 119 | [node name="WorldEnvironment" type="WorldEnvironment" parent="Data"] 120 | environment = SubResource("4") 121 | 122 | [node name="AnimationPlayer" type="AnimationPlayer" parent="Data"] 123 | libraries = { 124 | "": SubResource("AnimationLibrary_7wbbk") 125 | } 126 | autoplay = "Light3D" 127 | 128 | [node name="View" type="Node" parent="."] 129 | 130 | [node name="Camera3D" type="Camera3D" parent="View"] 131 | transform = Transform3D(1, 0, 0, 0, 0.934857, 0.355026, 0, -0.355026, 0.934857, 0, 1.436, 0.067) 132 | current = true 133 | fov = 110.0 134 | 135 | [node name="UI" type="Node" parent="."] 136 | 137 | [node name="Effects" type="Control" parent="UI"] 138 | layout_mode = 3 139 | anchors_preset = 15 140 | anchor_right = 1.0 141 | anchor_bottom = 1.0 142 | grow_horizontal = 2 143 | grow_vertical = 2 144 | 145 | [node name="BackBufferCopy" type="BackBufferCopy" parent="UI/Effects"] 146 | position = Vector2(160, 120) 147 | scale = Vector2(1.6, 1.2) 148 | copy_mode = 2 149 | 150 | [node name="LensDistortion" type="ColorRect" parent="UI/Effects/BackBufferCopy"] 151 | material = SubResource("6") 152 | anchors_preset = 15 153 | anchor_right = 1.0 154 | anchor_bottom = 1.0 155 | offset_left = -100.0 156 | offset_top = -100.0 157 | offset_right = -100.0 158 | offset_bottom = -100.0 159 | 160 | [node name="BackBufferCopy2" type="BackBufferCopy" parent="UI/Effects"] 161 | position = Vector2(160, 120) 162 | scale = Vector2(1.6, 1.2) 163 | copy_mode = 2 164 | 165 | [node name="Sharpness" type="ColorRect" parent="UI/Effects/BackBufferCopy2"] 166 | material = SubResource("7") 167 | anchors_preset = 15 168 | anchor_right = 1.0 169 | anchor_bottom = 1.0 170 | offset_left = -100.0 171 | offset_top = -100.0 172 | offset_right = -100.0 173 | offset_bottom = -100.0 174 | 175 | [node name="BackBufferCopy3" type="BackBufferCopy" parent="UI/Effects"] 176 | position = Vector2(160, 120) 177 | scale = Vector2(1.6, 1.2) 178 | copy_mode = 2 179 | 180 | [node name="NTSC" type="ColorRect" parent="UI/Effects/BackBufferCopy3"] 181 | material = SubResource("8") 182 | anchors_preset = 15 183 | anchor_right = 1.0 184 | anchor_bottom = 1.0 185 | offset_left = -100.0 186 | offset_top = -100.0 187 | offset_right = -100.0 188 | offset_bottom = -100.0 189 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Idle/side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Idle/side.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Idle/side.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c8i1slgoqk2c0" 6 | path="res://.godot/imported/side.png-ebf1a74da157f07dd522de814a09f488.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Idle/side.png" 14 | dest_files=["res://.godot/imported/side.png-ebf1a74da157f07dd522de814a09f488.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0001.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0001.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bso8pxq8ppvig" 6 | path="res://.godot/imported/0001.png-0adfd76fb9e759d25846defbb1f725d6.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0001.png" 14 | dest_files=["res://.godot/imported/0001.png-0adfd76fb9e759d25846defbb1f725d6.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0002.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0002.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ocmffcovmqie" 6 | path="res://.godot/imported/0002.png-ce993fb2f1f147293cbfa6df2a0e7610.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0002.png" 14 | dest_files=["res://.godot/imported/0002.png-ce993fb2f1f147293cbfa6df2a0e7610.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0003.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0003.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://w8cr0e0c5ehr" 6 | path="res://.godot/imported/0003.png-e46a9f4b91870b2595c88f58866a9d33.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0003.png" 14 | dest_files=["res://.godot/imported/0003.png-e46a9f4b91870b2595c88f58866a9d33.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0004.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0004.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dguy5ehwsbsj6" 6 | path="res://.godot/imported/0004.png-45341e4f39187210cf3fda220b1937f1.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0004.png" 14 | dest_files=["res://.godot/imported/0004.png-45341e4f39187210cf3fda220b1937f1.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0005.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0005.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b31tahtgspdu" 6 | path="res://.godot/imported/0005.png-cad1816970ca92414fa3bcc061dae4fa.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0005.png" 14 | dest_files=["res://.godot/imported/0005.png-cad1816970ca92414fa3bcc061dae4fa.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0006.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0006.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d2j86sq6r81rg" 6 | path="res://.godot/imported/0006.png-2e43eea4807d36dbe907ecb7fa3f35d7.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0006.png" 14 | dest_files=["res://.godot/imported/0006.png-2e43eea4807d36dbe907ecb7fa3f35d7.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0007.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0007.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://smcqhnmtqn6r" 6 | path="res://.godot/imported/0007.png-30122939f856491d0dc7a6a632f98b3e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0007.png" 14 | dest_files=["res://.godot/imported/0007.png-30122939f856491d0dc7a6a632f98b3e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0008.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0008.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://drqbkupo8lxa" 6 | path="res://.godot/imported/0008.png-82cacd3a35a91fb61ac58e702810357c.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0008.png" 14 | dest_files=["res://.godot/imported/0008.png-82cacd3a35a91fb61ac58e702810357c.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0009.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0009.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://kidgxmtavi3u" 6 | path="res://.godot/imported/0009.png-a73bc693c9b51b13b681530a633559e5.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0009.png" 14 | dest_files=["res://.godot/imported/0009.png-a73bc693c9b51b13b681530a633559e5.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0010.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0010.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c6nik0lvhtqch" 6 | path="res://.godot/imported/0010.png-87767b1723b8d92944c119e649a121e4.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0010.png" 14 | dest_files=["res://.godot/imported/0010.png-87767b1723b8d92944c119e649a121e4.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0011.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0011.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://h850jy4t3epm" 6 | path="res://.godot/imported/0011.png-001b8e679367b67fa5ad04abe6992c6d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0011.png" 14 | dest_files=["res://.godot/imported/0011.png-001b8e679367b67fa5ad04abe6992c6d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0012.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0012.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bwyrjqsbts8ql" 6 | path="res://.godot/imported/0012.png-c243629b9ec7bc416624bfba257abcf1.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0012.png" 14 | dest_files=["res://.godot/imported/0012.png-c243629b9ec7bc416624bfba257abcf1.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0013.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0013.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dypa8aj26hm4d" 6 | path="res://.godot/imported/0013.png-db693fdedb6ba1c0197353d8b11edffc.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0013.png" 14 | dest_files=["res://.godot/imported/0013.png-db693fdedb6ba1c0197353d8b11edffc.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0014.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0014.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dct40hrvihm3s" 6 | path="res://.godot/imported/0014.png-5b4229f636bb193ac63ef73f8d123720.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0014.png" 14 | dest_files=["res://.godot/imported/0014.png-5b4229f636bb193ac63ef73f8d123720.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0015.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0015.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://crayj7hu5hv3r" 6 | path="res://.godot/imported/0015.png-89e1bb9cd6b009fc96f205dd61d23605.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0015.png" 14 | dest_files=["res://.godot/imported/0015.png-89e1bb9cd6b009fc96f205dd61d23605.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0016.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0016.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bl50asvwtwmyo" 6 | path="res://.godot/imported/0016.png-377fa5d55b85861cae616da7bb27d48f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0016.png" 14 | dest_files=["res://.godot/imported/0016.png-377fa5d55b85861cae616da7bb27d48f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0017.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0017.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://klp3kr5et4qs" 6 | path="res://.godot/imported/0017.png-7795014d793b346ef35739725fcf0c49.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0017.png" 14 | dest_files=["res://.godot/imported/0017.png-7795014d793b346ef35739725fcf0c49.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0018.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0018.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cqmwu27gjjtix" 6 | path="res://.godot/imported/0018.png-74ea0900800af4d27d3b0f5681eeeaa4.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0018.png" 14 | dest_files=["res://.godot/imported/0018.png-74ea0900800af4d27d3b0f5681eeeaa4.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0019.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0019.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://4ladb30igijn" 6 | path="res://.godot/imported/0019.png-184e5e99fab8c6b5258efeef565c2316.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0019.png" 14 | dest_files=["res://.godot/imported/0019.png-184e5e99fab8c6b5258efeef565c2316.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0020.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0020.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://hcd66ujfb4qd" 6 | path="res://.godot/imported/0020.png-96bbdbad1bc82b4b2706ed394027e927.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0020.png" 14 | dest_files=["res://.godot/imported/0020.png-96bbdbad1bc82b4b2706ed394027e927.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0021.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0021.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b70au1rymkiee" 6 | path="res://.godot/imported/0021.png-234e18994ad9e73abdd2eb31967fbb0f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0021.png" 14 | dest_files=["res://.godot/imported/0021.png-234e18994ad9e73abdd2eb31967fbb0f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0022.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0022.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://j5xu2p0rajv5" 6 | path="res://.godot/imported/0022.png-cd2e8c964a052a0787c4bf59c272d340.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0022.png" 14 | dest_files=["res://.godot/imported/0022.png-cd2e8c964a052a0787c4bf59c272d340.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0023.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0023.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ga2ho13y2lbw" 6 | path="res://.godot/imported/0023.png-c426d23ec7fc96538ed32d4d1ce5f738.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0023.png" 14 | dest_files=["res://.godot/imported/0023.png-c426d23ec7fc96538ed32d4d1ce5f738.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0024.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0024.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://u56vgp6l28t4" 6 | path="res://.godot/imported/0024.png-8b3e9d4ed07edc493d5a5ebb463bfc62.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0024.png" 14 | dest_files=["res://.godot/imported/0024.png-8b3e9d4ed07edc493d5a5ebb463bfc62.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/Player/Walking/Side/0025.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/Player/Walking/Side/0025.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dcwcyukypgaxx" 6 | path="res://.godot/imported/0025.png-4afde44ed876a9f14d08e9b6cab9df0d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/Player/Walking/Side/0025.png" 14 | dest_files=["res://.godot/imported/0025.png-4afde44ed876a9f14d08e9b6cab9df0d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/scrPlayer.gd: -------------------------------------------------------------------------------- 1 | extends CharacterBody2D 2 | 3 | const WALK_SPEED = 90 4 | var _velocity = Vector2() 5 | 6 | # Movement 7 | func _physics_process(delta): 8 | if Input.is_action_pressed("player_look_left"): 9 | _velocity.x = -WALK_SPEED 10 | 11 | $sprPlayer.flip_h = false 12 | $sprPlayer.play("walk") 13 | elif Input.is_action_pressed("player_look_right"): 14 | _velocity.x = WALK_SPEED 15 | 16 | $sprPlayer.flip_h = true 17 | $sprPlayer.play("walk") 18 | else: 19 | _velocity.x = 0 20 | 21 | $sprPlayer.play("idle") 22 | 23 | set_velocity(_velocity) 24 | set_up_direction(Vector2(0, -1)) 25 | move_and_slide() 26 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/shrWind.gdshader: -------------------------------------------------------------------------------- 1 | // SHADER BY Maujoe 2 | // https://github.com/Maujoe/godot-simple-wind-shader-2d 3 | 4 | shader_type canvas_item; 5 | render_mode blend_mix; 6 | 7 | // Wind settings. 8 | uniform float speed = 1.0; 9 | uniform float minStrength : hint_range(0.0, 1.0); 10 | uniform float maxStrength : hint_range(0.0, 1.0); 11 | uniform float strengthScale = 100.0; 12 | uniform float interval = 3.5; 13 | uniform float detail = 1.0; 14 | uniform float distortion : hint_range(0.0, 1.0); 15 | uniform float heightOffset = 0.0; 16 | 17 | float getWind(vec2 vertex, vec2 uv, float timer){ 18 | vec2 pos = mix(vec2(1.0), vertex, distortion).xy; 19 | float time = timer * speed + pos.x * pos.y; 20 | float diff = pow(maxStrength - minStrength, 2.0); 21 | float strength = clamp(minStrength + diff + sin(time / interval) * diff, minStrength, maxStrength) * strengthScale; 22 | float wind = (sin(time) + cos(time * detail)) * strength * max(0.0, (1.0-uv.y) - heightOffset); 23 | 24 | return wind; 25 | } 26 | 27 | void vertex() { 28 | VERTEX.x += getWind(VERTEX.xy, UV, TIME); 29 | } -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texFlower1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texFlower1.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texFlower1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b5cr3w3qbpk1c" 6 | path="res://.godot/imported/texFlower1.png-18f7e5807d4baa65f4a92290ffeacd2e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texFlower1.png" 14 | dest_files=["res://.godot/imported/texFlower1.png-18f7e5807d4baa65f4a92290ffeacd2e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texFlower2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texFlower2.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texFlower2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cobql1qsppwex" 6 | path="res://.godot/imported/texFlower2.png-7b17dc62a23008fc0b76193976c921f0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texFlower2.png" 14 | dest_files=["res://.godot/imported/texFlower2.png-7b17dc62a23008fc0b76193976c921f0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texGrass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texGrass.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texGrass.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bhvtsti1x4iwj" 6 | path="res://.godot/imported/texGrass.png-d12f19641a71b1a722b8bbd9787f57a0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texGrass.png" 14 | dest_files=["res://.godot/imported/texGrass.png-d12f19641a71b1a722b8bbd9787f57a0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texHouse1.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d2wrwrymsjp80" 6 | path="res://.godot/imported/texHouse1.png-7f9b5abed7c2c58265398fd35a3ad632.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texHouse1.png" 14 | dest_files=["res://.godot/imported/texHouse1.png-7f9b5abed7c2c58265398fd35a3ad632.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texHouse2.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://s3tvm6ginefv" 6 | path="res://.godot/imported/texHouse2.png-f678f09d787f54c5862211414fa883a6.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texHouse2.png" 14 | dest_files=["res://.godot/imported/texHouse2.png-f678f09d787f54c5862211414fa883a6.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texHouse3.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texHouse3.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cc3kf1crpylrl" 6 | path="res://.godot/imported/texHouse3.png-39168359bdf70b24eb46ed10fb508843.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texHouse3.png" 14 | dest_files=["res://.godot/imported/texHouse3.png-39168359bdf70b24eb46ed10fb508843.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texSky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texSky.jpg -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texSky.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bgew2irwkfjbw" 6 | path="res://.godot/imported/texSky.jpg-b398f3ad5ff77e527a12458dc32086af.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texSky.jpg" 14 | dest_files=["res://.godot/imported/texSky.jpg-b398f3ad5ff77e527a12458dc32086af.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texSun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texSun.jpg -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texSun.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d0qxblmwkuobc" 6 | path="res://.godot/imported/texSun.jpg-a797bf60f6b722ad33228845dab162f7.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texSun.jpg" 14 | dest_files=["res://.godot/imported/texSun.jpg-a797bf60f6b722ad33228845dab162f7.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/Examples/Map4 - 2D/texTree.png -------------------------------------------------------------------------------- /Examples/Map4 - 2D/texTree.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dehd38sccaemp" 6 | path="res://.godot/imported/texTree.png-8529c6dc30e78a21cf9909561e4e33af.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://Examples/Map4 - 2D/texTree.png" 14 | dest_files=["res://.godot/imported/texTree.png-8529c6dc30e78a21cf9909561e4e33af.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /Examples/Map4.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=47 format=3 uid="uid://drmyjetugsrww"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://bgew2irwkfjbw" path="res://Examples/Map4 - 2D/texSky.jpg" id="1"] 4 | [ext_resource type="Texture2D" uid="uid://cc3kf1crpylrl" path="res://Examples/Map4 - 2D/texHouse3.png" id="2"] 5 | [ext_resource type="Texture2D" uid="uid://s3tvm6ginefv" path="res://Examples/Map4 - 2D/texHouse2.png" id="3"] 6 | [ext_resource type="Texture2D" uid="uid://bhvtsti1x4iwj" path="res://Examples/Map4 - 2D/texGrass.png" id="4"] 7 | [ext_resource type="Texture2D" uid="uid://d2wrwrymsjp80" path="res://Examples/Map4 - 2D/texHouse1.png" id="5"] 8 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/JpegCompression.gdshader" id="6"] 9 | [ext_resource type="Texture2D" uid="uid://bso8pxq8ppvig" path="res://Examples/Map4 - 2D/Player/Walking/Side/0001.png" id="7"] 10 | [ext_resource type="Texture2D" uid="uid://c8i1slgoqk2c0" path="res://Examples/Map4 - 2D/Player/Idle/side.png" id="8"] 11 | [ext_resource type="Script" path="res://Examples/Map4 - 2D/scrPlayer.gd" id="9"] 12 | [ext_resource type="Texture2D" uid="uid://c6nik0lvhtqch" path="res://Examples/Map4 - 2D/Player/Walking/Side/0010.png" id="10"] 13 | [ext_resource type="Texture2D" uid="uid://j5xu2p0rajv5" path="res://Examples/Map4 - 2D/Player/Walking/Side/0022.png" id="11"] 14 | [ext_resource type="Texture2D" uid="uid://bl50asvwtwmyo" path="res://Examples/Map4 - 2D/Player/Walking/Side/0016.png" id="12"] 15 | [ext_resource type="Texture2D" uid="uid://4ladb30igijn" path="res://Examples/Map4 - 2D/Player/Walking/Side/0019.png" id="13"] 16 | [ext_resource type="Texture2D" uid="uid://kidgxmtavi3u" path="res://Examples/Map4 - 2D/Player/Walking/Side/0009.png" id="14"] 17 | [ext_resource type="Texture2D" uid="uid://ocmffcovmqie" path="res://Examples/Map4 - 2D/Player/Walking/Side/0002.png" id="15"] 18 | [ext_resource type="Texture2D" uid="uid://dcwcyukypgaxx" path="res://Examples/Map4 - 2D/Player/Walking/Side/0025.png" id="16"] 19 | [ext_resource type="Texture2D" uid="uid://dct40hrvihm3s" path="res://Examples/Map4 - 2D/Player/Walking/Side/0014.png" id="17"] 20 | [ext_resource type="Texture2D" uid="uid://b70au1rymkiee" path="res://Examples/Map4 - 2D/Player/Walking/Side/0021.png" id="18"] 21 | [ext_resource type="Texture2D" uid="uid://crayj7hu5hv3r" path="res://Examples/Map4 - 2D/Player/Walking/Side/0015.png" id="19"] 22 | [ext_resource type="Texture2D" uid="uid://u56vgp6l28t4" path="res://Examples/Map4 - 2D/Player/Walking/Side/0024.png" id="20"] 23 | [ext_resource type="Texture2D" uid="uid://drqbkupo8lxa" path="res://Examples/Map4 - 2D/Player/Walking/Side/0008.png" id="21"] 24 | [ext_resource type="Texture2D" uid="uid://smcqhnmtqn6r" path="res://Examples/Map4 - 2D/Player/Walking/Side/0007.png" id="22"] 25 | [ext_resource type="Texture2D" uid="uid://bwyrjqsbts8ql" path="res://Examples/Map4 - 2D/Player/Walking/Side/0012.png" id="23"] 26 | [ext_resource type="Texture2D" uid="uid://b31tahtgspdu" path="res://Examples/Map4 - 2D/Player/Walking/Side/0005.png" id="24"] 27 | [ext_resource type="Texture2D" uid="uid://d2j86sq6r81rg" path="res://Examples/Map4 - 2D/Player/Walking/Side/0006.png" id="25"] 28 | [ext_resource type="Texture2D" uid="uid://klp3kr5et4qs" path="res://Examples/Map4 - 2D/Player/Walking/Side/0017.png" id="26"] 29 | [ext_resource type="Texture2D" uid="uid://h850jy4t3epm" path="res://Examples/Map4 - 2D/Player/Walking/Side/0011.png" id="27"] 30 | [ext_resource type="Texture2D" uid="uid://dguy5ehwsbsj6" path="res://Examples/Map4 - 2D/Player/Walking/Side/0004.png" id="28"] 31 | [ext_resource type="Texture2D" uid="uid://hcd66ujfb4qd" path="res://Examples/Map4 - 2D/Player/Walking/Side/0020.png" id="29"] 32 | [ext_resource type="Texture2D" uid="uid://ga2ho13y2lbw" path="res://Examples/Map4 - 2D/Player/Walking/Side/0023.png" id="30"] 33 | [ext_resource type="Texture2D" uid="uid://w8cr0e0c5ehr" path="res://Examples/Map4 - 2D/Player/Walking/Side/0003.png" id="31"] 34 | [ext_resource type="Texture2D" uid="uid://dypa8aj26hm4d" path="res://Examples/Map4 - 2D/Player/Walking/Side/0013.png" id="32"] 35 | [ext_resource type="Texture2D" uid="uid://cqmwu27gjjtix" path="res://Examples/Map4 - 2D/Player/Walking/Side/0018.png" id="33"] 36 | [ext_resource type="Texture2D" uid="uid://dehd38sccaemp" path="res://Examples/Map4 - 2D/texTree.png" id="34"] 37 | [ext_resource type="Texture2D" uid="uid://cobql1qsppwex" path="res://Examples/Map4 - 2D/texFlower2.png" id="35"] 38 | [ext_resource type="Texture2D" uid="uid://b5cr3w3qbpk1c" path="res://Examples/Map4 - 2D/texFlower1.png" id="36"] 39 | [ext_resource type="Shader" path="res://GodotRetro/Screen Shaders/Aditional Shaders/BetterCC.gdshader" id="37"] 40 | [ext_resource type="Texture2D" uid="uid://d0qxblmwkuobc" path="res://Examples/Map4 - 2D/texSun.jpg" id="38"] 41 | [ext_resource type="Shader" path="res://Examples/Map4 - 2D/shrWind.gdshader" id="39"] 42 | 43 | [sub_resource type="ShaderMaterial" id="1"] 44 | shader = ExtResource("39") 45 | shader_parameter/speed = 2.0 46 | shader_parameter/minStrength = 0.0 47 | shader_parameter/maxStrength = 0.3 48 | shader_parameter/strengthScale = 100.0 49 | shader_parameter/interval = 2.0 50 | shader_parameter/detail = 1.0 51 | shader_parameter/distortion = 0.7 52 | shader_parameter/heightOffset = 0.0 53 | 54 | [sub_resource type="RectangleShape2D" id="2"] 55 | size = Vector2(10, 60) 56 | 57 | [sub_resource type="SpriteFrames" id="3"] 58 | animations = [{ 59 | "frames": [{ 60 | "duration": 1.0, 61 | "texture": ExtResource("8") 62 | }], 63 | "loop": true, 64 | "name": &"idle", 65 | "speed": 5.0 66 | }, { 67 | "frames": [{ 68 | "duration": 1.0, 69 | "texture": ExtResource("7") 70 | }, { 71 | "duration": 1.0, 72 | "texture": ExtResource("15") 73 | }, { 74 | "duration": 1.0, 75 | "texture": ExtResource("31") 76 | }, { 77 | "duration": 1.0, 78 | "texture": ExtResource("28") 79 | }, { 80 | "duration": 1.0, 81 | "texture": ExtResource("24") 82 | }, { 83 | "duration": 1.0, 84 | "texture": ExtResource("25") 85 | }, { 86 | "duration": 1.0, 87 | "texture": ExtResource("22") 88 | }, { 89 | "duration": 1.0, 90 | "texture": ExtResource("21") 91 | }, { 92 | "duration": 1.0, 93 | "texture": ExtResource("14") 94 | }, { 95 | "duration": 1.0, 96 | "texture": ExtResource("10") 97 | }, { 98 | "duration": 1.0, 99 | "texture": ExtResource("27") 100 | }, { 101 | "duration": 1.0, 102 | "texture": ExtResource("23") 103 | }, { 104 | "duration": 1.0, 105 | "texture": ExtResource("32") 106 | }, { 107 | "duration": 1.0, 108 | "texture": ExtResource("17") 109 | }, { 110 | "duration": 1.0, 111 | "texture": ExtResource("19") 112 | }, { 113 | "duration": 1.0, 114 | "texture": ExtResource("12") 115 | }, { 116 | "duration": 1.0, 117 | "texture": ExtResource("26") 118 | }, { 119 | "duration": 1.0, 120 | "texture": ExtResource("33") 121 | }, { 122 | "duration": 1.0, 123 | "texture": ExtResource("13") 124 | }, { 125 | "duration": 1.0, 126 | "texture": ExtResource("29") 127 | }, { 128 | "duration": 1.0, 129 | "texture": ExtResource("18") 130 | }, { 131 | "duration": 1.0, 132 | "texture": ExtResource("11") 133 | }, { 134 | "duration": 1.0, 135 | "texture": ExtResource("30") 136 | }, { 137 | "duration": 1.0, 138 | "texture": ExtResource("20") 139 | }, { 140 | "duration": 1.0, 141 | "texture": ExtResource("16") 142 | }], 143 | "loop": true, 144 | "name": &"walk", 145 | "speed": 24.0 146 | }] 147 | 148 | [sub_resource type="RectangleShape2D" id="4"] 149 | size = Vector2(10, 40) 150 | 151 | [sub_resource type="ShaderMaterial" id="5"] 152 | shader = ExtResource("6") 153 | shader_parameter/color_depth = 14.0 154 | shader_parameter/color_number = 7.8 155 | 156 | [sub_resource type="ShaderMaterial" id="6"] 157 | shader = ExtResource("37") 158 | shader_parameter/Shadows = Color(0.203922, 0, 0.184314, 1) 159 | shader_parameter/Midtones = Color(0.0666667, 0.0705882, 0, 1) 160 | shader_parameter/Hilights = Color(0.027451, 0, 0.164706, 1) 161 | 162 | [sub_resource type="CanvasItemMaterial" id="7"] 163 | blend_mode = 1 164 | light_mode = 1 165 | 166 | [node name="scnMap4" type="Node2D"] 167 | 168 | [node name="Map" type="Node2D" parent="."] 169 | 170 | [node name="Sky" type="ParallaxBackground" parent="Map"] 171 | 172 | [node name="ParallaxLayer" type="ParallaxLayer" parent="Map/Sky"] 173 | motion_scale = Vector2(0.5, 1) 174 | 175 | [node name="bg" type="Sprite2D" parent="Map/Sky/ParallaxLayer"] 176 | texture_filter = 1 177 | position = Vector2(-80.6382, -182.228) 178 | scale = Vector2(0.913784, 0.913784) 179 | texture = ExtResource("1") 180 | centered = false 181 | 182 | [node name="Grass" type="Node2D" parent="Map"] 183 | 184 | [node name="texGrass" type="Sprite2D" parent="Map/Grass"] 185 | z_index = -2 186 | texture_filter = 1 187 | position = Vector2(-200.455, 122.621) 188 | texture = ExtResource("4") 189 | centered = false 190 | 191 | [node name="texGrass2" type="Sprite2D" parent="Map/Grass"] 192 | z_index = -2 193 | texture_filter = 1 194 | position = Vector2(311.545, 122.621) 195 | texture = ExtResource("4") 196 | centered = false 197 | 198 | [node name="texGrass3" type="Sprite2D" parent="Map/Grass"] 199 | z_index = -2 200 | texture_filter = 1 201 | position = Vector2(823.545, 122.621) 202 | texture = ExtResource("4") 203 | centered = false 204 | 205 | [node name="Houses" type="Node2D" parent="Map"] 206 | 207 | [node name="texHouse3" type="Sprite2D" parent="Map/Houses"] 208 | modulate = Color(1, 0.929412, 0.988235, 1) 209 | texture_filter = 1 210 | position = Vector2(252.297, 50.9613) 211 | scale = Vector2(0.266196, 0.266196) 212 | texture = ExtResource("2") 213 | 214 | [node name="texHouse2" type="Sprite2D" parent="Map/Houses"] 215 | modulate = Color(1, 0.945098, 0.996078, 1) 216 | texture_filter = 1 217 | position = Vector2(632.839, 59.3399) 218 | scale = Vector2(0.383851, 0.383851) 219 | texture = ExtResource("3") 220 | 221 | [node name="texHouse1" type="Sprite2D" parent="Map/Houses"] 222 | modulate = Color(0.988235, 0.807843, 1, 1) 223 | texture_filter = 1 224 | position = Vector2(977.126, 122.621) 225 | scale = Vector2(0.326414, 0.326414) 226 | texture = ExtResource("5") 227 | 228 | [node name="Flowers" type="Node2D" parent="Map"] 229 | 230 | [node name="texFlower2" type="Sprite2D" parent="Map/Flowers"] 231 | texture_filter = 1 232 | position = Vector2(141.553, 170.938) 233 | scale = Vector2(0.15, 0.15) 234 | texture = ExtResource("35") 235 | 236 | [node name="texFlower8" type="Sprite2D" parent="Map/Flowers"] 237 | texture_filter = 1 238 | position = Vector2(261.897, 226.397) 239 | scale = Vector2(0.15, 0.15) 240 | texture = ExtResource("35") 241 | 242 | [node name="texFlower9" type="Sprite2D" parent="Map/Flowers"] 243 | texture_filter = 1 244 | position = Vector2(521.935, 172.003) 245 | scale = Vector2(0.15, 0.15) 246 | texture = ExtResource("35") 247 | 248 | [node name="texFlower10" type="Sprite2D" parent="Map/Flowers"] 249 | texture_filter = 1 250 | position = Vector2(713.069, 226.397) 251 | scale = Vector2(0.15, 0.15) 252 | texture = ExtResource("35") 253 | 254 | [node name="texFlower11" type="Sprite2D" parent="Map/Flowers"] 255 | texture_filter = 1 256 | position = Vector2(862.201, 204.797) 257 | scale = Vector2(0.15, 0.15) 258 | texture = ExtResource("35") 259 | 260 | [node name="texFlower1" type="Sprite2D" parent="Map/Flowers"] 261 | texture_filter = 1 262 | position = Vector2(174.589, 211.997) 263 | scale = Vector2(0.15, 0.15) 264 | texture = ExtResource("36") 265 | 266 | [node name="texFlower12" type="Sprite2D" parent="Map/Flowers"] 267 | texture_filter = 1 268 | position = Vector2(13.1862, 193.873) 269 | scale = Vector2(0.15, 0.15) 270 | texture = ExtResource("36") 271 | 272 | [node name="texFlower3" type="Sprite2D" parent="Map/Flowers"] 273 | texture_filter = 1 274 | position = Vector2(311.545, 186.673) 275 | scale = Vector2(0.15, 0.15) 276 | texture = ExtResource("36") 277 | 278 | [node name="texFlower4" type="Sprite2D" parent="Map/Flowers"] 279 | texture_filter = 1 280 | position = Vector2(477.667, 219.197) 281 | scale = Vector2(0.15, 0.15) 282 | texture = ExtResource("36") 283 | 284 | [node name="texFlower5" type="Sprite2D" parent="Map/Flowers"] 285 | texture_filter = 1 286 | position = Vector2(624.439, 211.997) 287 | scale = Vector2(0.15, 0.15) 288 | texture = ExtResource("36") 289 | 290 | [node name="texFlower6" type="Sprite2D" parent="Map/Flowers"] 291 | texture_filter = 1 292 | position = Vector2(757.526, 164.803) 293 | scale = Vector2(0.15, 0.15) 294 | texture = ExtResource("36") 295 | 296 | [node name="texFlower7" type="Sprite2D" parent="Map/Flowers"] 297 | texture_filter = 1 298 | position = Vector2(1013.79, 219.197) 299 | scale = Vector2(0.15, 0.15) 300 | texture = ExtResource("36") 301 | 302 | [node name="Trees" type="Node2D" parent="Map"] 303 | 304 | [node name="texTree" type="Sprite2D" parent="Map/Trees"] 305 | z_index = -1 306 | texture_filter = 1 307 | material = SubResource("1") 308 | position = Vector2(810.464, 52.1605) 309 | scale = Vector2(0.610084, 0.610084) 310 | texture = ExtResource("34") 311 | 312 | [node name="texTree2" type="Sprite2D" parent="Map/Trees"] 313 | z_index = -1 314 | texture_filter = 1 315 | material = SubResource("1") 316 | position = Vector2(445.302, 49.8023) 317 | scale = Vector2(0.610084, 0.610084) 318 | texture = ExtResource("34") 319 | 320 | [node name="texTree3" type="Sprite2D" parent="Map/Trees"] 321 | texture_filter = 1 322 | material = SubResource("1") 323 | position = Vector2(51.6568, 67.6202) 324 | scale = Vector2(0.610084, 0.610084) 325 | texture = ExtResource("34") 326 | 327 | [node name="texTree4" type="Sprite2D" parent="Map/Trees"] 328 | texture_filter = 1 329 | material = SubResource("1") 330 | position = Vector2(1164.24, 67.6202) 331 | scale = Vector2(0.610084, 0.610084) 332 | texture = ExtResource("34") 333 | 334 | [node name="Collision" type="Node2D" parent="Map"] 335 | 336 | [node name="ends" type="StaticBody2D" parent="Map/Collision"] 337 | 338 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Map/Collision/ends"] 339 | position = Vector2(0, 180) 340 | shape = SubResource("2") 341 | 342 | [node name="CollisionShape2D2" type="CollisionShape2D" parent="Map/Collision/ends"] 343 | position = Vector2(1120.78, 179.473) 344 | shape = SubResource("2") 345 | 346 | [node name="Player" type="Node2D" parent="."] 347 | 348 | [node name="Player" type="CharacterBody2D" parent="Player"] 349 | position = Vector2(51.6568, 180.673) 350 | script = ExtResource("9") 351 | 352 | [node name="sprPlayer" type="AnimatedSprite2D" parent="Player/Player"] 353 | texture_filter = 1 354 | scale = Vector2(0.215045, 0.215045) 355 | sprite_frames = SubResource("3") 356 | animation = &"idle" 357 | flip_h = true 358 | 359 | [node name="colPlaer" type="CollisionShape2D" parent="Player/Player"] 360 | position = Vector2(0, 6) 361 | shape = SubResource("4") 362 | 363 | [node name="camPlayer" type="Camera2D" parent="Player/Player"] 364 | limit_left = 0 365 | limit_top = 0 366 | limit_right = 1120 367 | limit_bottom = 240 368 | limit_smoothed = true 369 | position_smoothing_enabled = true 370 | editor_draw_limits = true 371 | 372 | [node name="CanvasLayer" type="CanvasLayer" parent="."] 373 | layer = 0 374 | 375 | [node name="Effects" type="Control" parent="CanvasLayer"] 376 | layout_mode = 3 377 | anchors_preset = 15 378 | anchor_right = 1.0 379 | anchor_bottom = 1.0 380 | grow_horizontal = 2 381 | grow_vertical = 2 382 | 383 | [node name="BackBufferCopy" type="BackBufferCopy" parent="CanvasLayer/Effects"] 384 | z_index = 3 385 | position = Vector2(159.972, 120) 386 | scale = Vector2(1.59973, 1.2) 387 | copy_mode = 2 388 | 389 | [node name="JpegCompression" type="ColorRect" parent="CanvasLayer/Effects/BackBufferCopy"] 390 | material = SubResource("5") 391 | anchors_preset = 15 392 | anchor_right = 1.0 393 | anchor_bottom = 1.0 394 | offset_left = -100.0 395 | offset_top = -100.0 396 | offset_right = -100.0 397 | offset_bottom = -100.0 398 | 399 | [node name="BackBufferCopy2" type="BackBufferCopy" parent="CanvasLayer/Effects"] 400 | z_index = 3 401 | position = Vector2(159.972, 120) 402 | scale = Vector2(1.59973, 1.2) 403 | copy_mode = 2 404 | 405 | [node name="CC" type="ColorRect" parent="CanvasLayer/Effects/BackBufferCopy2"] 406 | material = SubResource("6") 407 | anchors_preset = 15 408 | anchor_right = 1.0 409 | anchor_bottom = 1.0 410 | offset_left = -100.0 411 | offset_top = -100.0 412 | offset_right = -100.0 413 | offset_bottom = -100.0 414 | 415 | [node name="CanvasLayer2" type="CanvasLayer" parent="."] 416 | 417 | [node name="texSun" type="Sprite2D" parent="CanvasLayer2"] 418 | modulate = Color(1, 1, 1, 0.333333) 419 | texture_filter = 1 420 | material = SubResource("7") 421 | position = Vector2(-77.548, 0) 422 | scale = Vector2(0.649498, 0.653951) 423 | texture = ExtResource("38") 424 | centered = false 425 | flip_h = true 426 | -------------------------------------------------------------------------------- /Examples/Map5.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=9 format=3 uid="uid://dgqwlaxv8ts3t"] 2 | 3 | [ext_resource type="Shader" path="res://GodotRetro/Object Shaders/Debug/helloworld2-2d.gdshader" id="1"] 4 | [ext_resource type="Shader" path="res://GodotRetro/Object Shaders/Debug/helloworld-2d.gdshader" id="3"] 5 | [ext_resource type="Material" uid="uid://sou3v5tnb252" path="res://Examples/Map 5 - Dithering/dithering_mat.material" id="3_8nvsc"] 6 | 7 | [sub_resource type="GDScript" id="7"] 8 | resource_name = "Map5" 9 | script/source = "extends Control 10 | 11 | func _on_anm_animation_finished(anim_name): 12 | $crUV.visible =! $crUV.visible 13 | $anm.play(\"anm\") 14 | " 15 | 16 | [sub_resource type="Animation" id="5"] 17 | resource_name = "anm" 18 | length = 12.0 19 | tracks/0/type = "value" 20 | tracks/0/imported = false 21 | tracks/0/enabled = true 22 | tracks/0/path = NodePath("BackBufferCopy/fxDithering:material:shader_parameter/DITHERING_STRENTH") 23 | tracks/0/interp = 1 24 | tracks/0/loop_wrap = true 25 | tracks/0/keys = { 26 | "times": PackedFloat32Array(0, 2, 4, 8, 10, 12), 27 | "transitions": PackedFloat32Array(0.4, 0.4, 1, 0.4, 0.4, 1), 28 | "update": 0, 29 | "values": [0.07, 0.0, 0.07, 0.07, 0.0, 0.07] 30 | } 31 | tracks/1/type = "value" 32 | tracks/1/imported = false 33 | tracks/1/enabled = true 34 | tracks/1/path = NodePath("BackBufferCopy/fxDithering:material:shader_parameter/COLOR_FACTOR") 35 | tracks/1/interp = 1 36 | tracks/1/loop_wrap = true 37 | tracks/1/keys = { 38 | "times": PackedFloat32Array(0, 4, 6, 8, 10, 12), 39 | "transitions": PackedFloat32Array(1, 0.4, 0.4, 0.4, 0.4, 1), 40 | "update": 0, 41 | "values": [10.0, 10.0, 1.0, 10.0, 1.0, 10.0] 42 | } 43 | 44 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_ptka7"] 45 | _data = { 46 | "anm": SubResource("5") 47 | } 48 | 49 | [sub_resource type="ShaderMaterial" id="2"] 50 | shader = ExtResource("1") 51 | 52 | [sub_resource type="ShaderMaterial" id="6"] 53 | shader = ExtResource("3") 54 | 55 | [node name="scnMap5" type="Control"] 56 | layout_mode = 3 57 | anchors_preset = 15 58 | anchor_right = 1.0 59 | anchor_bottom = 1.0 60 | grow_horizontal = 2 61 | grow_vertical = 2 62 | script = SubResource("7") 63 | 64 | [node name="anm" type="AnimationPlayer" parent="."] 65 | libraries = { 66 | "": SubResource("AnimationLibrary_ptka7") 67 | } 68 | autoplay = "anm" 69 | 70 | [node name="crRainbow" type="ColorRect" parent="."] 71 | material = SubResource("2") 72 | layout_mode = 0 73 | anchor_right = 1.0 74 | anchor_bottom = 1.0 75 | 76 | [node name="crUV" type="ColorRect" parent="."] 77 | material = SubResource("6") 78 | layout_mode = 0 79 | anchor_right = 1.0 80 | anchor_bottom = 1.0 81 | 82 | [node name="BackBufferCopy" type="BackBufferCopy" parent="."] 83 | position = Vector2(160, 120) 84 | scale = Vector2(1.6, 1.2) 85 | copy_mode = 2 86 | 87 | [node name="fxDithering" type="ColorRect" parent="BackBufferCopy"] 88 | material = ExtResource("3_8nvsc") 89 | anchors_preset = 15 90 | anchor_right = 1.0 91 | anchor_bottom = 1.0 92 | offset_left = -100.0 93 | offset_top = -100.0 94 | offset_right = -100.0 95 | offset_bottom = -100.0 96 | 97 | [connection signal="animation_finished" from="anm" to="." method="_on_anm_animation_finished"] 98 | -------------------------------------------------------------------------------- /Examples/bus_main.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="AudioBusLayout" format=2] 2 | 3 | [resource] 4 | bus/1/name = "SFX" 5 | bus/1/solo = false 6 | bus/1/mute = false 7 | bus/1/bypass_fx = false 8 | bus/1/volume_db = 0.0 9 | bus/1/send = "Master" 10 | bus/2/name = "MUS" 11 | bus/2/solo = false 12 | bus/2/mute = false 13 | bus/2/bypass_fx = false 14 | bus/2/volume_db = 0.0 15 | bus/2/send = "Master" 16 | bus/3/name = "BG" 17 | bus/3/solo = false 18 | bus/3/mute = false 19 | bus/3/bypass_fx = false 20 | bus/3/volume_db = 0.0 21 | bus/3/send = "Master" 22 | -------------------------------------------------------------------------------- /Examples/scrGameManeger.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | # Exit 4 | func _process(delta): 5 | if Input.is_action_just_pressed("player_exit"): 6 | get_tree().quit() 7 | -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/Debug/helloworld-2d.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER GRABED FROM THE BOOK OF SHADERS 2 | //PORTED AND MODIFYED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //SHADERTOY LINK : https://thebookofshaders.com/edit.php#03/space.frag 5 | 6 | shader_type canvas_item; 7 | 8 | void fragment(){ 9 | vec2 st = UV; 10 | vec4 final = vec4(st.x, st.y, 0.0, 1.0); 11 | COLOR = final; 12 | } -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/Debug/helloworld.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER GRABED FROM THE BOOK OF SHADERS 2 | //PORTED AND MODIFYED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //SHADERTOY LINK : https://thebookofshaders.com/edit.php#03/space.frag 5 | 6 | shader_type spatial; 7 | render_mode cull_disabled, specular_disabled, diffuse_lambert; 8 | 9 | void fragment(){ 10 | vec2 st = UV; 11 | vec3 final = vec3(st.x, st.y, 0.0); 12 | ALBEDO = final; 13 | } -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/Debug/helloworld2-2d.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER GRABED FROM THE BOOK OF SHADERS 2 | //PORTED AND MODIFYED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //SHADERTOY LINK : https://thebookofshaders.com/edit.php#06/hsb-colorwheel.frag 5 | 6 | shader_type canvas_item; 7 | 8 | const float TWO_PI = 6.28318530718; 9 | 10 | vec3 hsb2rgb( in vec3 c ){ 11 | vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0), 12 | 6.0)-3.0)-1.0, 13 | 0.0, 14 | 1.0 ); 15 | rgb = rgb*rgb*(3.0-2.0*rgb); 16 | return c.z * mix( vec3(1.0), rgb, c.y); 17 | } 18 | 19 | void fragment(){ 20 | vec2 st = UV; 21 | vec3 color = vec3(0.0); 22 | 23 | // Use polar coordinates instead of cartesian 24 | vec2 toCenter = vec2(0.5)-st; 25 | float angle = atan(toCenter.y,toCenter.x); 26 | float radius = length(toCenter)*2.0; 27 | 28 | // Map the angle (-PI to PI) to the Hue (from 0 to 1) 29 | // and the Saturation to the radius 30 | COLOR = vec4(hsb2rgb(vec3((angle/TWO_PI)+0.5,radius,1.0)), 1); 31 | } -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/Debug/helloworld2.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER GRABED FROM THE BOOK OF SHADERS 2 | //PORTED AND MODIFYED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //SHADERTOY LINK : https://thebookofshaders.com/edit.php#06/hsb-colorwheel.frag 5 | 6 | shader_type spatial; 7 | render_mode cull_disabled, specular_disabled, diffuse_lambert, unshaded; 8 | 9 | const float TWO_PI = 6.28318530718; 10 | 11 | vec3 hsb2rgb( in vec3 c ){ 12 | vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0), 13 | 6.0)-3.0)-1.0, 14 | 0.0, 15 | 1.0 ); 16 | rgb = rgb*rgb*(3.0-2.0*rgb); 17 | return c.z * mix( vec3(1.0), rgb, c.y); 18 | } 19 | 20 | void fragment(){ 21 | vec2 st = UV; 22 | vec3 color = vec3(0.0); 23 | 24 | // Use polar coordinates instead of cartesian 25 | vec2 toCenter = vec2(0.5)-st; 26 | float angle = atan(toCenter.y,toCenter.x); 27 | float radius = length(toCenter)*2.0; 28 | 29 | // Map the angle (-PI to PI) to the Hue (from 0 to 1) 30 | // and the Saturation to the radius 31 | color = hsb2rgb(vec3((angle/TWO_PI)+0.5,radius,1.0)); 32 | 33 | ALBEDO = color; 34 | } -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/PSX Shaders/psx_lit.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "marmitoTH" FROM GITHUB 2 | // 3 | //GITHUB LINK : https://github.com/marmitoTH/godot-psx-shaders 4 | 5 | shader_type spatial; 6 | render_mode skip_vertex_transform, diffuse_lambert_wrap, specular_disabled, cull_disabled, depth_draw_opaque; 7 | 8 | uniform vec4 color : source_color; 9 | uniform sampler2D albedoTex : filter_nearest, repeat_enable; 10 | uniform float specular_intensity : hint_range(0, 1); 11 | uniform float resolution = 256; 12 | uniform float cull_distance = 5; 13 | uniform float affine_texture_mapping_amount : hint_range(0,2); 14 | uniform vec2 uv_scale = vec2(1.0, 1.0); 15 | uniform vec2 uv_offset = vec2(.0, .0); 16 | 17 | varying vec4 vertex_coordinates; 18 | 19 | void vertex() { 20 | UV = UV * uv_scale + uv_offset; 21 | 22 | float vertex_distance = length((MODELVIEW_MATRIX * vec4(VERTEX, 1.0))); 23 | 24 | VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; 25 | float vPos_w = (PROJECTION_MATRIX * vec4(VERTEX, 1.0)).w; 26 | VERTEX.xy = vPos_w * floor(resolution * VERTEX.xy / vPos_w) / resolution; 27 | vertex_coordinates = vec4(UV * VERTEX.z, VERTEX.z, .0); 28 | 29 | if (vertex_distance > cull_distance) 30 | VERTEX = vec3(.0); 31 | } 32 | 33 | void fragment() { 34 | vec4 tex = texture(albedoTex, mix(vertex_coordinates.xy /vertex_coordinates.z, UV.xy, affine_texture_mapping_amount)); 35 | 36 | ALBEDO = tex.rgb * color.rgb; 37 | SPECULAR = specular_intensity; 38 | } -------------------------------------------------------------------------------- /GodotRetro/Object Shaders/PSX Shaders/psx_unlit.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "marmitoTH" FROM GITHUB 2 | // 3 | //GITHUB LINK : https://github.com/marmitoTH/godot-psx-shaders 4 | 5 | shader_type spatial; 6 | render_mode skip_vertex_transform, diffuse_lambert_wrap, specular_disabled, cull_disabled, unshaded, depth_draw_opaque; 7 | 8 | uniform vec4 color : source_color; 9 | uniform sampler2D albedoTex : filter_nearest; 10 | uniform float specular_intensity : hint_range(0, 1); 11 | uniform float resolution = 256; 12 | uniform float cull_distance = 5; 13 | uniform float affine_texture_mapping_amount : hint_range(0,2); 14 | uniform vec2 uv_scale = vec2(1.0, 1.0); 15 | uniform vec2 uv_offset = vec2(.0, .0); 16 | 17 | varying vec4 vertex_coordinates; 18 | 19 | void vertex() { 20 | UV = UV * uv_scale + uv_offset; 21 | 22 | float vertex_distance = length((MODELVIEW_MATRIX * vec4(VERTEX, 1.0))); 23 | 24 | VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; 25 | float vPos_w = (PROJECTION_MATRIX * vec4(VERTEX, 1.0)).w; 26 | VERTEX.xy = vPos_w * floor(resolution * VERTEX.xy / vPos_w) / resolution; 27 | vertex_coordinates = vec4(UV * VERTEX.z, VERTEX.z, .0); 28 | 29 | if (vertex_distance > cull_distance) 30 | VERTEX = vec3(.0); 31 | } 32 | 33 | void fragment() { 34 | vec4 tex = texture(albedoTex, mix(vertex_coordinates.xy /vertex_coordinates.z, UV.xy, affine_texture_mapping_amount)); 35 | 36 | ALBEDO = tex.rgb * color.rgb; 37 | ALPHA = tex.a * color.a; 38 | SPECULAR = specular_intensity; 39 | } -------------------------------------------------------------------------------- /GodotRetro/Other/Images/CRT Frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/CRT Frame.png -------------------------------------------------------------------------------- /GodotRetro/Other/Images/CRT Frame.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b7ciqwsttyf1i" 6 | path="res://.godot/imported/CRT Frame.png-d90af3d39764073752b7b87b06bda556.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://GodotRetro/Other/Images/CRT Frame.png" 14 | dest_files=["res://.godot/imported/CRT Frame.png-d90af3d39764073752b7b87b06bda556.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bayer2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/bayer2x2.png -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bayer2x2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dqkxv17ex71c" 6 | path="res://.godot/imported/bayer2x2.png-f591b45d18ab4db92cfa8dd2fd75267f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://GodotRetro/Other/Images/bayer2x2.png" 14 | dest_files=["res://.godot/imported/bayer2x2.png-f591b45d18ab4db92cfa8dd2fd75267f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bayer8x8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/bayer8x8.png -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bayer8x8.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b1duf8fx5l6m5" 6 | path="res://.godot/imported/bayer8x8.png-b99b214d0a453da37b41f5b5b59598a0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://GodotRetro/Other/Images/bayer8x8.png" 14 | dest_files=["res://.godot/imported/bayer8x8.png-b99b214d0a453da37b41f5b5b59598a0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bluenoise128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/bluenoise128x128.png -------------------------------------------------------------------------------- /GodotRetro/Other/Images/bluenoise128x128.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dygry4gihu7k" 6 | path="res://.godot/imported/bluenoise128x128.png-4f0eae80ab5c5f3a8c14d86f7924f7a5.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://GodotRetro/Other/Images/bluenoise128x128.png" 14 | dest_files=["res://.godot/imported/bluenoise128x128.png-4f0eae80ab5c5f3a8c14d86f7924f7a5.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /GodotRetro/Other/Images/grain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/grain.jpg -------------------------------------------------------------------------------- /GodotRetro/Other/Images/grain.jpg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dsrfu3ootv571" 6 | path.s3tc="res://.godot/imported/grain.jpg-657f15066c3ccdf93bc92f8ff87ee7db.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://GodotRetro/Other/Images/grain.jpg" 15 | dest_files=["res://.godot/imported/grain.jpg-657f15066c3ccdf93bc92f8ff87ee7db.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /GodotRetro/Other/Images/psxdither.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/GodotRetro/Other/Images/psxdither.png -------------------------------------------------------------------------------- /GodotRetro/Other/Images/psxdither.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://df4g8i1baak33" 6 | path="res://.godot/imported/psxdither.png-156a195b1e8dd59b2f00fee407a98297.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://GodotRetro/Other/Images/psxdither.png" 14 | dest_files=["res://.godot/imported/psxdither.png-156a195b1e8dd59b2f00fee407a98297.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/AccurateCRT.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "TimothyLottes" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/MsjXzh 6 | 7 | // PUBLIC DOMAIN CRT STYLED SCAN-LINE SHADER 8 | // 9 | // by Timothy Lottes 10 | // 11 | // This is more along the style of a really good CGA arcade monitor. 12 | // With RGB inputs instead of NTSC. 13 | // The shadow mask example has the mask rotated 90 degrees for less chromatic aberration. 14 | // 15 | // Left it unoptimized to show the theory behind the algorithm. 16 | // 17 | // It is an example what I personally would want as a display option for pixel art games. 18 | // Please take and use, change, or whatever. 19 | 20 | shader_type canvas_item; 21 | 22 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 23 | 24 | // Emulated input resolution. 25 | uniform vec2 res; 26 | 27 | // Mask type 28 | // 0 = Very compressed TV style shadow mask 29 | // 1 = Stretched VGA style shadow mask (same as prior shaders) 30 | // 2 = VGA style shadow mask 31 | uniform int mask_type :hint_range(0, 2) = 0; 32 | 33 | // Bloom Type 34 | // 0 = Normalized exposure 35 | // 1 = Aditive bloom 36 | // 2 = No Bloom 37 | uniform int bloom_type :hint_range(0, 2) = 0; 38 | 39 | // Hardness of scanline. 40 | // -8.0 = soft 41 | // -16.0 = medium 42 | uniform float hardScan :hint_range(-12.0, -1.0) = -8.0; 43 | 44 | // Hardness of pixels in scanline. 45 | // -2.0 = soft 46 | // -4.0 = hard 47 | uniform float hardPix :hint_range(-4.0, 0.0) = -2.0; 48 | 49 | // Hardness of short vertical bloom. 50 | // -1.0 = wide to the point of clipping (bad) 51 | // -1.5 = wide 52 | // -4.0 = not very wide at all 53 | uniform float hardBloomScan :hint_range(-4.0, 0.0) = -2.0; 54 | 55 | // Hardness of short horizontal bloom. 56 | // -0.5 = wide to the point of clipping (bad) 57 | // -1.0 = wide 58 | // -2.0 = not very wide at all 59 | uniform float hardBloomPix :hint_range(-2.0, 0.0) = -1.5; 60 | 61 | // Amount of small bloom effect. 62 | // 1.0/1.0 = only bloom 63 | // 1.0/16.0 = what I think is a good amount of small bloom 64 | // 0.0 = no bloom 65 | uniform float bloomAmount :hint_range(1.0, 16.0) = 16.0; 66 | 67 | // Display warp. 68 | // 0.0 = none 69 | // 1.0/8.0 = extreme 70 | uniform vec2 warp = vec2(64.0, 24.0); 71 | 72 | // Amount of shadow mask. 73 | uniform float maskDark :hint_range(0.0, 1.0) = 0.5; 74 | uniform float maskLight :hint_range(1.0, 2.0) = 1.5; 75 | 76 | //------------------------------------------------------------------------ 77 | 78 | // sRGB to Linear. 79 | // Assuing using sRGB typed textures this should not be needed. 80 | float ToLinear1(float c){ return(c <= 0.04045) ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4); } 81 | vec3 ToLinear(vec3 c){ return vec3(ToLinear1(c.r), ToLinear1(c.g), ToLinear1(c.b)); } 82 | 83 | // Linear to sRGB. 84 | // Assuing using sRGB typed textures this should not be needed. 85 | float ToSrgb1(float c){ return(c < 0.0031308?c * 12.92 : 1.055 * pow(c, 0.41666) - 0.055); } 86 | vec3 ToSrgb(vec3 c){ return vec3(ToSrgb1(c.r), ToSrgb1(c.g), ToSrgb1(c.b)); } 87 | 88 | // Nearest emulated sample given floating point position and texel offset. 89 | // Also zero's off screen. 90 | vec3 Fetch(vec2 pos, vec2 off, sampler2D iChannel0){ 91 | pos = floor(pos * res + off) / res; 92 | 93 | if(max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5){ 94 | return vec3(0.0, 0.0, 0.0); 95 | } 96 | 97 | return ToLinear(texture(iChannel0 , pos.xy , -16.0).rgb); 98 | } 99 | 100 | // Distance in emulated pixels to nearest texel. 101 | vec2 Dist(vec2 pos){ 102 | pos = pos * res; 103 | return - ((pos - floor(pos)) - vec2(0.5)); 104 | } 105 | 106 | // 1D Gaussian. 107 | float Gaus(float pos, float scale){ return exp2(scale * pos * pos); } 108 | 109 | // 3-tap Gaussian filter along horz line. 110 | vec3 Horz3(vec2 pos, float off, sampler2D iChannel0){ 111 | vec3 b = Fetch(pos, vec2(-1.0, off), iChannel0); 112 | vec3 c = Fetch(pos, vec2( 0.0, off), iChannel0); 113 | vec3 d = Fetch(pos, vec2( 1.0, off), iChannel0); 114 | float dst = Dist(pos).x; 115 | 116 | // Convert distance to weight. 117 | float scale = hardPix; 118 | float wb = Gaus(dst - 1.0, scale); 119 | float wc = Gaus(dst + 0.0, scale); 120 | float wd = Gaus(dst + 1.0, scale); 121 | 122 | // Return filtered sample. 123 | return (b * wb + c * wc + d * wd) / (wb + wc + wd); 124 | } 125 | // 5-tap Gaussian filter along horz line. 126 | vec3 Horz5(vec2 pos, float off, sampler2D iChannel0){ 127 | vec3 a = Fetch(pos, vec2(-2.0, off), iChannel0); 128 | vec3 b = Fetch(pos, vec2(-1.0, off), iChannel0); 129 | vec3 c = Fetch(pos, vec2( 0.0, off), iChannel0); 130 | vec3 d = Fetch(pos, vec2( 1.0, off), iChannel0); 131 | vec3 e = Fetch(pos, vec2( 2.0, off), iChannel0); 132 | float dst = Dist(pos).x; 133 | 134 | // Convert distance to weight. 135 | float scale = hardPix; 136 | float wa = Gaus(dst - 2.0, scale); 137 | float wb = Gaus(dst - 1.0, scale); 138 | float wc = Gaus(dst + 0.0, scale); 139 | float wd = Gaus(dst + 1.0, scale); 140 | float we = Gaus(dst + 2.0, scale); 141 | 142 | // Return filtered sample. 143 | return (a * wa + b * wb + c * wc + d * wd + e * we) / (wa + wb + wc + wd + we); 144 | } 145 | // 7-tap Gaussian filter along horz line. 146 | vec3 Horz7(vec2 pos, float off, sampler2D iChannel0){ 147 | vec3 a = Fetch(pos, vec2(-3.0, off), iChannel0); 148 | vec3 b = Fetch(pos, vec2(-2.0, off), iChannel0); 149 | vec3 c = Fetch(pos, vec2( 1.0, off), iChannel0); 150 | vec3 d = Fetch(pos, vec2( 0.0, off), iChannel0); 151 | vec3 e = Fetch(pos, vec2( 1.0, off), iChannel0); 152 | vec3 f = Fetch(pos, vec2( 2.0, off), iChannel0); 153 | vec3 g = Fetch(pos, vec2( 3.0, off), iChannel0); 154 | float dst = Dist(pos).x; 155 | 156 | // Convert distance to weight. 157 | float scale = hardBloomPix; 158 | float wa = Gaus(dst - 3.0, scale); 159 | float wb = Gaus(dst - 2.0, scale); 160 | float wc = Gaus(dst - 1.0, scale); 161 | float wd = Gaus(dst + 0.0, scale); 162 | float we = Gaus(dst + 1.0, scale); 163 | float wf = Gaus(dst + 2.0, scale); 164 | float wg = Gaus(dst + 3.0, scale); 165 | 166 | // Return filtered sample. 167 | return (a * wa + b * wb + c * wc + d * wd + e * we + f * wf + g * wg) / (wa + wb + wc + wd + we + wf + wg); 168 | } 169 | 170 | // Return scanline weight. 171 | float Scan(vec2 pos, float off){ 172 | float dst = Dist(pos).y; 173 | 174 | return Gaus(dst + off, hardScan); 175 | } 176 | 177 | // Return scanline weight for bloom. 178 | float BloomScan(vec2 pos, float off){ 179 | float dst = Dist(pos).y; 180 | 181 | return Gaus(dst + off, hardBloomScan); 182 | } 183 | 184 | // Allow nearest three lines to effect pixel. 185 | vec3 Tri(vec2 pos, sampler2D iChannel0){ 186 | vec3 a = Horz3(pos,-1.0, iChannel0); 187 | vec3 b = Horz5(pos, 0.0, iChannel0); 188 | vec3 c = Horz3(pos, 1.0, iChannel0); 189 | 190 | float wa = Scan(pos,-1.0); 191 | float wb = Scan(pos, 0.0); 192 | float wc = Scan(pos, 1.0); 193 | 194 | return a * wa + b * wb + c * wc; 195 | } 196 | 197 | // Small bloom. 198 | vec3 Bloom(vec2 pos, sampler2D iChannel0){ 199 | vec3 a = Horz5(pos,-2.0, iChannel0); 200 | vec3 b = Horz7(pos,-1.0, iChannel0); 201 | vec3 c = Horz7(pos, 0.0, iChannel0); 202 | vec3 d = Horz7(pos, 1.0, iChannel0); 203 | vec3 e = Horz5(pos, 2.0, iChannel0); 204 | 205 | float wa = BloomScan(pos,-2.0); 206 | float wb = BloomScan(pos,-1.0); 207 | float wc = BloomScan(pos, 0.0); 208 | float wd = BloomScan(pos, 1.0); 209 | float we = BloomScan(pos, 2.0); 210 | 211 | return a * wa + b * wb + c * wc + d * wd + e * we; 212 | } 213 | 214 | // Distortion of scanlines, and end of screen alpha. 215 | vec2 Warp(vec2 pos){ 216 | pos = pos * 2.0 - 1.0; 217 | pos *= vec2(1.0 + (pos.y * pos.y) * 1.0 / warp.x, 1.0 + (pos.x * pos.x) * 1.0/ warp.y); 218 | 219 | return pos * 0.5+0.5; 220 | } 221 | 222 | vec3 Mask(vec2 pos){ 223 | if (mask_type == 0){ 224 | float line = maskLight; 225 | float odd = 0.0; 226 | 227 | if(fract(pos.x / 6.0) < 0.5) odd = 1.0; 228 | if(fract((pos.y + odd) / 2.0) < 0.5) line = maskDark; 229 | pos.x = fract(pos.x / 3.0); 230 | 231 | vec3 mask = vec3(maskDark, maskDark, maskDark); 232 | if(pos.x < 0.333)mask.r = maskLight; 233 | else if(pos.x < 0.666)mask.g = maskLight; 234 | else mask.b = maskLight; 235 | 236 | mask *= line; 237 | return mask; 238 | }else if (mask_type == 1){ 239 | pos.x += pos.y * 3.0; 240 | 241 | vec3 mask = vec3(maskDark, maskDark, maskDark); 242 | pos.x = fract(pos.x / 6.0); 243 | if(pos.x < 0.333)mask.r = maskLight; 244 | else if(pos.x < 0.666)mask.g = maskLight; 245 | else mask.b = maskLight; 246 | 247 | return mask; 248 | }else if (mask_type == 2){ 249 | pos.xy = floor(pos.xy * vec2(1.0, 0.5)); 250 | pos.x += pos.y * 3.0; 251 | 252 | vec3 mask = vec3(maskDark, maskDark, maskDark); 253 | pos.x = fract(pos.x / 6.0); 254 | if(pos.x < 0.333)mask.r = maskLight; 255 | else if(pos.x < 0.666)mask.g = maskLight; 256 | else mask.b = maskLight; 257 | 258 | return mask; 259 | } 260 | } 261 | 262 | // Draw dividing bars. 263 | float Bar(float pos, float bar){ pos -= bar; return pos * pos < 4.0 ? 0.0 : 1.0; } 264 | 265 | // Entry. 266 | void fragment(){ 267 | vec2 pos = Warp(FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy); 268 | 269 | COLOR.rgb = Tri(pos, SCREEN_TEXTURE) * Mask(FRAGCOORD.xy); 270 | if (bloom_type == 0){ 271 | COLOR.rgb = mix(COLOR.rgb,Bloom(pos, SCREEN_TEXTURE), 1.0 / bloomAmount); 272 | }else if (bloom_type == 1){ 273 | COLOR.rgb += Bloom(pos, SCREEN_TEXTURE) * 1.0 / bloomAmount; 274 | } 275 | 276 | COLOR.a = 1.0; 277 | COLOR.rgb = ToSrgb(COLOR.rgb); 278 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/B&W.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "demofox" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/XdXSzX 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float contrast :hint_range(0.0, 3.0) = 1.0; 12 | uniform float brightness :hint_range(-1.0, 1.0) = 0.0; 13 | 14 | 15 | void fragment(){ 16 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 17 | 18 | vec3 pixelColor = texture(SCREEN_TEXTURE, uv).xyz; 19 | 20 | // Grayscale 21 | float pixelGrey = dot(pixelColor, vec3(0.2126, 0.7152, 0.0722)); 22 | pixelColor = vec3(pixelGrey); 23 | 24 | // Contrast 25 | pixelColor.rgb = ((pixelColor.rgb - 0.5) * max(contrast, 0.0)) + 0.5; 26 | 27 | // Brightness 28 | pixelColor.rgb += brightness; 29 | 30 | COLOR = vec4(pixelColor, 1.0); 31 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/BetterCC.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "Wunkolo" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/tllfRf 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform vec4 Shadows :source_color = vec4(0.0, 0.0, 0.0, 1.0); 12 | uniform vec4 Midtones :source_color = vec4(0.0, 0.0, 0.0, 1.0); 13 | uniform vec4 Hilights :source_color = vec4(0.0, 0.0, 0.0, 1.0); 14 | 15 | vec3 InvLerp( vec3 A, vec3 B, vec3 t){ 16 | return (t - A) / (B - A); 17 | } 18 | 19 | vec3 ColorGrade( in vec3 InColor ){ 20 | // Calculate the three offseted colors up-front 21 | vec3 OffShadows = InColor + Shadows.xyz; 22 | vec3 OffMidtones = InColor + Midtones.xyz; 23 | vec3 OffHilights = InColor + Hilights.xyz; 24 | 25 | // Linearly interpolate between the 3 new colors, piece-wise 26 | return mix( 27 | // We pick which of the two control points to interpolate from based on which side of 28 | // 0.5 the input color channel lands on 29 | mix(OffShadows, OffMidtones, InvLerp(vec3(0.0), vec3(0.5), InColor)), // < 0.5 30 | mix(OffMidtones, OffHilights, InvLerp(vec3(0.5), vec3(1.0), InColor)), // >= 0.5 31 | greaterThanEqual(InColor, vec3(0.5)) 32 | ); 33 | } 34 | 35 | void fragment(){ 36 | vec2 uv = FRAGCOORD.xy / vec2(1.0 / SCREEN_PIXEL_SIZE.xy); 37 | COLOR.a = 1.0; 38 | COLOR.rgb = texture(SCREEN_TEXTURE, uv).rgb; 39 | COLOR.rgb = ColorGrade(COLOR.rgb); 40 | 41 | //COLOR.rgb = pow(COLOR.rgb, vec3(2.2)); 42 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/Blur.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "jcant0n" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/XssSDs# 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float amount :hint_range(0.0, 1.5) = 1.0; 12 | 13 | vec2 Circle(float Start, float Points, float Point) { 14 | float Rad = (3.141592 * 3.0 * (1.0 / Points)) * (Point + Start); 15 | return vec2(sin(Rad), cos(Rad)); 16 | } 17 | 18 | void fragment(){ 19 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 20 | vec2 PixelOffset = amount / (1.0 / SCREEN_PIXEL_SIZE).xy; 21 | 22 | float Start = 2.0 / 14.0; 23 | vec2 Scale = 0.66 * 4.0 * 2.0 * PixelOffset.xy; 24 | 25 | vec3 N0 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 0.0) * Scale).rgb; 26 | vec3 N1 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 1.0) * Scale).rgb; 27 | vec3 N2 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 2.0) * Scale).rgb; 28 | vec3 N3 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 3.0) * Scale).rgb; 29 | vec3 N4 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 4.0) * Scale).rgb; 30 | vec3 N5 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 5.0) * Scale).rgb; 31 | vec3 N6 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 6.0) * Scale).rgb; 32 | vec3 N7 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 7.0) * Scale).rgb; 33 | vec3 N8 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 8.0) * Scale).rgb; 34 | vec3 N9 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 9.0) * Scale).rgb; 35 | vec3 N10 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 10.0) * Scale).rgb; 36 | vec3 N11 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 11.0) * Scale).rgb; 37 | vec3 N12 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 12.0) * Scale).rgb; 38 | vec3 N13 = texture(SCREEN_TEXTURE, uv + Circle(Start, 14.0, 13.0) * Scale).rgb; 39 | vec3 N14 = texture(SCREEN_TEXTURE, uv).rgb; 40 | 41 | float W = 1.0 / 15.0; 42 | 43 | vec3 color = vec3(0,0,0); 44 | 45 | color.rgb = 46 | (N0 * W) + 47 | (N1 * W) + 48 | (N2 * W) + 49 | (N3 * W) + 50 | (N4 * W) + 51 | (N5 * W) + 52 | (N6 * W) + 53 | (N7 * W) + 54 | (N8 * W) + 55 | (N9 * W) + 56 | (N10 * W) + 57 | (N11 * W) + 58 | (N12 * W) + 59 | (N13 * W) + 60 | (N14 * W); 61 | 62 | COLOR = vec4(color.rgb,1.0); 63 | } 64 | -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/ColorPrecission.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "abelcamarena" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/tsKGDm 6 | 7 | // Looking for ditheirng? I reccomend using this shader instead : 8 | // https://github.com/WittyCognomen/godot-psx-shaders/blob/master/shaders/psx_dither_post.shader 9 | // https://github.com/WittyCognomen/godot-psx-shaders/tree/master/shaders/dithers 10 | 11 | shader_type canvas_item; 12 | 13 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 14 | 15 | uniform float SCREEN_WIDTH = 320.; // Lower num - bigger pixels (this will be the screen width) 16 | uniform float COLOR_FACTOR :hint_range(0., 10.) = 4.; // Higher num - higher colors quality 17 | 18 | void fragment(){ 19 | // Reduce pixels 20 | vec2 size = SCREEN_WIDTH * SCREEN_PIXEL_SIZE.xy/SCREEN_PIXEL_SIZE.x; 21 | vec2 coor = floor( UV * size) ; 22 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 23 | 24 | // Get source color 25 | vec3 col = texture(SCREEN_TEXTURE, uv).xyz; 26 | 27 | // Reduce colors 28 | col = floor(col * COLOR_FACTOR) / COLOR_FACTOR; 29 | 30 | // Output to screen 31 | COLOR = vec4(col,1.); 32 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/Dithering.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "abelcamarena" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/tsKGDm 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float SCREEN_WIDTH = 320.; // Lower num - bigger pixels (this will be the screen width) 12 | uniform float COLOR_FACTOR :hint_range(0., 10.) = 4.; // Higher num - higher colors quality 13 | uniform float DITHERING_STRENTH :hint_range(0., .07) = 0.005; // Be carefull with this one, dithering can get messy really easily 14 | 15 | int PSXDither(ivec2 fragcoord) { 16 | const int dither_table[16] = { 17 | -4, +0, -3, +1, 18 | +2, -2, +3, -1, 19 | -3, +1, -4, +0, 20 | +3, -1, +2, -2 21 | }; 22 | 23 | int x = fragcoord.x % 4; 24 | int y = fragcoord.y % 4; 25 | 26 | return dither_table[y * 4 + x]; 27 | } 28 | 29 | void fragment(){ 30 | // Reduce pixels 31 | vec2 size = SCREEN_WIDTH * SCREEN_PIXEL_SIZE.xy/SCREEN_PIXEL_SIZE.x; 32 | vec2 coor = floor( UV * size) ; 33 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 34 | 35 | // Get source color 36 | vec3 col = texture(SCREEN_TEXTURE, uv).xyz; 37 | 38 | // Dithering 39 | col += float(PSXDither(ivec2(FRAGCOORD.xy))) * DITHERING_STRENTH; 40 | 41 | // Reduce colors 42 | col = floor(col * COLOR_FACTOR) / COLOR_FACTOR; 43 | 44 | // Output to screen 45 | COLOR = vec4(col,1.); 46 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Aditional Shaders/Sharpness.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "Nihilistic_Furry" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/wsK3Wt 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float sharpen_amount :hint_range(0,4) = 1.0; 12 | 13 | vec4 sharpenMask (sampler2D st, vec2 fc, vec2 sps){ 14 | // Sharpen detection matrix [0,1,0],[1,-4,1],[0,1,0] 15 | // Colors 16 | vec4 up = texture (st, (fc + vec2 (0, 1))/sps); 17 | vec4 left = texture (st, (fc + vec2 (-1, 0))/sps); 18 | vec4 center = texture (st, fc/sps); 19 | vec4 right = texture (st, (fc + vec2 (1, 0))/sps); 20 | vec4 down = texture (st, (fc + vec2 (0, -1))/sps); 21 | 22 | // Return edge detection 23 | return (1.0 + 4.0*sharpen_amount)*center -sharpen_amount*(up + left + right + down); 24 | } 25 | 26 | void fragment(){ 27 | // Detect edges and output to screen 28 | COLOR = sharpenMask (SCREEN_TEXTURE, FRAGCOORD.xy, 1.0 / SCREEN_PIXEL_SIZE); 29 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Glitch.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "keijiro" FROM GITHUB 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : https://github.com/keijiro/KinoGlitch#license 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //GITHUB LINK : https://github.com/keijiro/KinoGlitch 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float _ScanLineJitter : hint_range(.2, 1) = .25; // (displacement, threshold) 12 | uniform float _VerticalJump : hint_range(0, 1) = .01; // (amount, time) 13 | uniform float _HorizontalShake : hint_range(0, 1) = 0; 14 | uniform float _ColorDrift : hint_range(0, 1) = .02; // (amount, time) 15 | 16 | 17 | float nrand(float x, float y){ 18 | return fract(sin(dot(vec2(x, y), vec2(12.9898, 78.233))) * 43758.5453); 19 | } 20 | 21 | void fragment(){ 22 | float sl_thresh = dot(vec2(1.0 - _ScanLineJitter * 1.2), vec2(1.0 - _ScanLineJitter * 1.2)); 23 | float sl_disp = 0.002 + pow(_ScanLineJitter, 3) * 0.05; 24 | vec2 sl = vec2(sl_disp, sl_thresh); 25 | 26 | float _verticalJumpTime = TIME * _VerticalJump * 11.3; 27 | vec2 vj = vec2(_VerticalJump, _verticalJumpTime); 28 | 29 | float hs = _HorizontalShake * 0.2; 30 | 31 | vec2 cd = vec2(_ColorDrift * 0.04f, TIME * 606.11f); 32 | 33 | float u = FRAGCOORD.x / (1.0 / SCREEN_PIXEL_SIZE).x; 34 | float v = FRAGCOORD.y / (1.0 / SCREEN_PIXEL_SIZE).y; 35 | 36 | // Scan line jitter 37 | float jitter = nrand(v, TIME) * 2.0 - 1.0; 38 | jitter *= step(sl.y, abs(jitter)) * sl.x; 39 | 40 | // Vertical jump 41 | float jump = mix(v, fract(v + vj.y), vj.x); 42 | 43 | // Horizontal shake 44 | float shake = (nrand(TIME, 2) - 0.5) * hs; 45 | 46 | // Color drift 47 | float drift = sin(jump + cd.y) * cd.x; 48 | 49 | vec4 final1 = texture(SCREEN_TEXTURE, fract(vec2(u + jitter + shake, jump))); 50 | vec4 final2 = texture(SCREEN_TEXTURE, fract(vec2(u + jitter + shake + drift, jump))); 51 | 52 | vec4 render = vec4(final1.r, final2.g, final1.b, 1); 53 | 54 | COLOR = render; 55 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/Grain.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "spl!te" FROM GITHUB FOR GODOT 2.1 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //GITHUB LINK : https://github.com/splite/Godot_Film_Grain_Shader 6 | //ORIGINAL POST LINK : http://devlog-martinsh.blogspot.com/2013/05/image-imperfections-and-film-grain-post.html 7 | 8 | shader_type canvas_item; 9 | 10 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 11 | 12 | uniform bool colored = false; //colored noise? 13 | uniform float color_amount :hint_range(0, 1.3) = 0.6; 14 | uniform float grain_amount :hint_range(0, 0.07) = 0.025; //grain amount 15 | uniform float grain_size :hint_range(1, 3) = 1.6; //grain particle size (1.5 - 2.5) 16 | uniform float lum_amount :hint_range(0, 2) = 1.3; 17 | 18 | varying float time; 19 | 20 | void vertex(){ 21 | time = TIME; 22 | } 23 | 24 | //a random texture generator, but you can also use a pre-computed perturbation texture 25 | vec4 rnm(vec2 tc) { 26 | float noise = sin(dot(tc + vec2(time,time),vec2(12.9898,78.233))) * 43758.5453; 27 | float noiseR = fract(noise)*2.0-1.0; 28 | float noiseG = fract(noise*1.2154)*2.0-1.0; 29 | float noiseB = fract(noise*1.3453)*2.0-1.0; 30 | float noiseA = fract(noise*1.3647)*2.0-1.0; 31 | return vec4(noiseR,noiseG,noiseB,noiseA); 32 | } 33 | 34 | float fade(float t) { 35 | return t*t*t*(t*(t*6.0-15.0)+10.0); 36 | } 37 | 38 | float pnoise3D(vec3 p){ 39 | vec3 pi = 0.00390625*floor(p); 40 | pi = vec3(pi.x+0.001953125, pi.y+0.001953125, pi.z+0.001953125); 41 | vec3 pf = fract(p); // Fractional part for interpolation 42 | 43 | // Noise contributions from (x=0, y=0), z=0 and z=1 44 | float perm00 = rnm(pi.xy).a ; 45 | vec3 grad000 = rnm(vec2(perm00, pi.z)).rgb * 4.0; 46 | grad000 = vec3(grad000.x - 1.0, grad000.y - 1.0, grad000.z - 1.0); 47 | float n000 = dot(grad000, pf); 48 | vec3 grad001 = rnm(vec2(perm00, pi.z + 0.00390625)).rgb * 4.0; 49 | grad001 = vec3(grad001.x - 1.0, grad001.y - 1.0, grad001.z - 1.0); 50 | float n001 = dot(grad001, pf - vec3(0.0, 0.0, 1.0)); 51 | 52 | // Noise contributions from (x=0, y=1), z=0 and z=1 53 | float perm01 = rnm(pi.xy + vec2(0.0, 0.00390625)).a ; 54 | vec3 grad010 = rnm(vec2(perm01, pi.z)).rgb * 4.0; 55 | grad010 = vec3(grad010.x - 1.0, grad010.y - 1.0, grad010.z - 1.0); 56 | float n010 = dot(grad010, pf - vec3(0.0, 1.0, 0.0)); 57 | vec3 grad011 = rnm(vec2(perm01, pi.z + 0.00390625)).rgb * 4.0; 58 | grad011 = vec3(grad011.x - 1.0, grad011.y - 1.0, grad011.z - 1.0); 59 | float n011 = dot(grad011, pf - vec3(0.0, 1.0, 1.0)); 60 | 61 | // Noise contributions from (x=1, y=0), z=0 and z=1 62 | float perm10 = rnm(pi.xy + vec2(0.00390625, 0.0)).a ; 63 | vec3 grad100 = rnm(vec2(perm10, pi.z)).rgb * 4.0; 64 | grad100 = vec3(grad100.x - 1.0, grad100.y - 1.0, grad100.z - 1.0); 65 | float n100 = dot(grad100, pf - vec3(1.0, 0.0, 0.0)); 66 | vec3 grad101 = rnm(vec2(perm10, pi.z + 0.00390625)).rgb * 4.0; 67 | grad101 = vec3(grad101.x - 1.0, grad101.y - 1.0, grad101.z - 1.0); 68 | float n101 = dot(grad101, pf - vec3(1.0, 0.0, 1.0)); 69 | 70 | // Noise contributions from (x=1, y=1), z=0 and z=1 71 | float perm11 = rnm(pi.xy + vec2(0.00390625, 0.00390625)).a ; 72 | vec3 grad110 = rnm(vec2(perm11, pi.z)).rgb * 4.0; 73 | grad110 = vec3(grad110.x - 1.0, grad110.y - 1.0, grad110.z - 1.0); 74 | float n110 = dot(grad110, pf - vec3(1.0, 1.0, 0.0)); 75 | vec3 grad111 = rnm(vec2(perm11, pi.z + 0.00390625)).rgb * 4.0; 76 | grad111 = vec3(grad111.x - 1.0, grad111.y - 1.0, grad111.z - 1.0); 77 | float n111 = dot(grad111, pf - vec3(1.0, 1.0, 1.0)); 78 | 79 | // Blend contributions along x 80 | vec4 n_x = mix(vec4(n000, n001, n010, n011), vec4(n100, n101, n110, n111), fade(pf.x)); 81 | 82 | // Blend contributions along y 83 | vec2 n_xy = mix(n_x.xy, n_x.zw, fade(pf.y)); 84 | 85 | // Blend contributions along z 86 | float n_xyz = mix(n_xy.x, n_xy.y, fade(pf.z)); 87 | 88 | // We're done, return the final noise value. 89 | return n_xyz; 90 | } 91 | 92 | //2d coordinate orientation thing 93 | vec2 coordRot(vec2 tc, float angle, vec2 screen_size){ 94 | float aspect = screen_size.x/screen_size.y; 95 | float rotX = ((tc.x*2.0-1.0)*aspect*cos(angle)) - ((tc.y*2.0-1.0)*sin(angle)); 96 | float rotY = ((tc.y*2.0-1.0)*cos(angle)) + ((tc.x*2.0-1.0)*aspect*sin(angle)); 97 | rotX = ((rotX/aspect)*0.5+0.5); 98 | rotY = rotY*0.5+0.5; 99 | return vec2(rotX,rotY); 100 | } 101 | 102 | void fragment (){ 103 | vec2 screen_size = (1.0 / SCREEN_PIXEL_SIZE).xy; 104 | vec3 rotOffset = vec3(1.425,3.892,5.835); //rotation offset values 105 | vec2 rotCoordsR = coordRot(UV, time + rotOffset.x, screen_size); 106 | vec3 noise = vec3(pnoise3D(vec3(rotCoordsR*vec2(screen_size.x/grain_size,screen_size.y/grain_size),0.0))); 107 | 108 | if (colored){ 109 | vec2 rotCoordsG = coordRot(UV, time + rotOffset.y, screen_size); 110 | vec2 rotCoordsB = coordRot(UV, time + rotOffset.z, screen_size); 111 | noise.g = mix(noise.r,pnoise3D(vec3(rotCoordsG*vec2(screen_size.x/grain_size,screen_size.y/grain_size),1.0)),color_amount); 112 | noise.b = mix(noise.r,pnoise3D(vec3(rotCoordsB*vec2(screen_size.x/grain_size,screen_size.y/grain_size),2.0)),color_amount); 113 | } 114 | 115 | vec3 col = texture(TEXTURE, UV).rgb; 116 | vec3 lumcoeff = vec3(0.299,0.587,0.114); 117 | float luminance = mix(0.0,dot(col, lumcoeff),lum_amount); 118 | float lum = smoothstep(0.2,0.0,luminance); 119 | lum += luminance; 120 | 121 | noise = mix(noise,vec3(0.0),pow(lum,4.0)); 122 | col = col+noise*grain_amount; 123 | 124 | vec4 SRC_COLOR = texture(SCREEN_TEXTURE, SCREEN_UV); 125 | 126 | COLOR = vec4(col,1.0) * SRC_COLOR; 127 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/JpegCompression.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "paniq" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/MdcGzj 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float color_depth :hint_range(0.0, 255.0) = 100.0; 12 | uniform float color_number :hint_range(0.0, 50.0) = 20.0; 13 | 14 | const mat3 rgb2ycbcr = mat3( 15 | vec3(0.299, -0.168736, 0.5), 16 | vec3(0.587, -0.331264, -0.418688), 17 | vec3(0.114, 0.5, -0.081312) 18 | ); 19 | const mat3 ycbcr2rgb = mat3( 20 | vec3(1.0, 1.0, 1.0), 21 | vec3(0.0, -0.344136, 1.772), 22 | vec3(1.402, -0.714136, 0.0) 23 | ); 24 | 25 | // simulating 8:4:4 compression ratio (16bit) 26 | vec3 compress_ycbcr_844 (vec3 rgb) { 27 | vec3 ycbcr = rgb2ycbcr * rgb; 28 | ycbcr.r = floor(ycbcr.r * color_depth + 0.5) / color_depth; 29 | ycbcr.gb += 0.5; 30 | ycbcr.gb = floor(ycbcr.gb * color_number + 0.5) / color_number; 31 | ycbcr.gb -= 0.5; 32 | return ycbcr2rgb * ycbcr; 33 | } 34 | 35 | 36 | void fragment(){ 37 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 38 | vec3 rgb = texture(SCREEN_TEXTURE, uv).rgb; 39 | rgb = compress_ycbcr_844(rgb); 40 | 41 | COLOR = vec4(rgb,1.0); 42 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/LensDistortion.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "jcant0n" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/4sSSzz 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float strength :hint_range(-0.035, 0.035) = 0.0; 12 | 13 | void fragment(){ 14 | vec2 Resolution = 1.0 / SCREEN_PIXEL_SIZE; 15 | vec2 uv = FRAGCOORD.xy / Resolution.xy; 16 | float aspectRatio = Resolution.x / Resolution.y; 17 | 18 | 19 | vec2 intensity = vec2(strength * aspectRatio); 20 | 21 | vec2 coords = uv; 22 | coords = (coords - 0.5) * 2.0; 23 | 24 | vec2 realCoordOffs; 25 | realCoordOffs.x = (1.0 - coords.y * coords.y) * intensity.y * (coords.x); 26 | realCoordOffs.y = (1.0 - coords.x * coords.x) * intensity.x * (coords.y); 27 | 28 | vec4 color = texture(SCREEN_TEXTURE, uv - realCoordOffs); 29 | 30 | COLOR = vec4(color); 31 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/NTSC.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "ompuco" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/XlsczN 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float blur_amount :hint_range(0.0, 8.0) = 3.0; 12 | uniform float signal_quality :hint_range(0.0, 0.5) = 0; 13 | uniform float bottom_strenth :hint_range(0.0, 6.0) = 3.0; 14 | uniform sampler2D grain_tex; 15 | 16 | float grain (vec2 st, float iTime) { 17 | return fract(sin(dot(st.xy, vec2(17.0,180.)))* 2500. + iTime); 18 | } 19 | 20 | vec3 rgb2yiq(vec3 c){ 21 | return vec3( 22 | (0.2989 * c.x + 0.5959 * c.y + 0.2115 * c.z), 23 | (0.5870 * c.x - 0.2744 * c.y - 0.5229 * c.z), 24 | (0.1140 * c.x - 0.3216 * c.y + 0.3114 * c.z) 25 | ); 26 | } 27 | vec3 yiq2rgb(vec3 c){ 28 | return vec3( 29 | (1.0 * c.x + 1.0 * c.y + 1.0 * c.z), 30 | (0.956 * c.x - 0.2720 * c.y - 1.1060 * c.z), 31 | (0.6210 * c.x - 0.6474 * c.y + 1.7046 * c.z) 32 | ); 33 | } 34 | 35 | vec2 Circle(float Start, float Points, float Point){ 36 | float Rad = (3.141592 * 2.0 * (1.0 / Points)) * (Point + Start); 37 | return vec2(-(.3+Rad), cos(Rad)); 38 | } 39 | 40 | vec3 Blur(vec2 uv, float f, float d, float iTime, sampler2D iChannel0){ 41 | float t = (sin(iTime * 5.0 + uv.y * 5.0)) / 10.0; 42 | float b = 1.0; 43 | 44 | t = 0.0; 45 | vec2 PixelOffset = vec2(d + .0005 * t, 0); 46 | 47 | float Start = 2.0 / 14.0; 48 | vec2 Scale = 0.66 * blur_amount * 2.0 * PixelOffset.xy; 49 | 50 | vec3 N0 = texture(iChannel0, uv + Circle(Start, 14.0, 0.0) * Scale).rgb; 51 | vec3 N1 = texture(iChannel0, uv + Circle(Start, 14.0, 1.0) * Scale).rgb; 52 | vec3 N2 = texture(iChannel0, uv + Circle(Start, 14.0, 2.0) * Scale).rgb; 53 | vec3 N3 = texture(iChannel0, uv + Circle(Start, 14.0, 3.0) * Scale).rgb; 54 | vec3 N4 = texture(iChannel0, uv + Circle(Start, 14.0, 4.0) * Scale).rgb; 55 | vec3 N5 = texture(iChannel0, uv + Circle(Start, 14.0, 5.0) * Scale).rgb; 56 | vec3 N6 = texture(iChannel0, uv + Circle(Start, 14.0, 6.0) * Scale).rgb; 57 | vec3 N7 = texture(iChannel0, uv + Circle(Start, 14.0, 7.0) * Scale).rgb; 58 | vec3 N8 = texture(iChannel0, uv + Circle(Start, 14.0, 8.0) * Scale).rgb; 59 | vec3 N9 = texture(iChannel0, uv + Circle(Start, 14.0, 9.0) * Scale).rgb; 60 | vec3 N10 = texture(iChannel0, uv + Circle(Start, 14.0, 10.0) * Scale).rgb; 61 | vec3 N11 = texture(iChannel0, uv + Circle(Start, 14.0, 11.0) * Scale).rgb; 62 | vec3 N12 = texture(iChannel0, uv + Circle(Start, 14.0, 12.0) * Scale).rgb; 63 | vec3 N13 = texture(iChannel0, uv + Circle(Start, 14.0, 13.0) * Scale).rgb; 64 | vec3 N14 = texture(iChannel0, uv).rgb; 65 | 66 | vec4 clr = texture(iChannel0, uv); 67 | float W = 1.0 / 15.0; 68 | 69 | clr.rgb= 70 | (N0 * W) + 71 | (N1 * W) + 72 | (N2 * W) + 73 | (N3 * W) + 74 | (N4 * W) + 75 | (N5 * W) + 76 | (N6 * W) + 77 | (N7 * W) + 78 | (N8 * W) + 79 | (N9 * W) + 80 | (N10 * W) + 81 | (N11 * W) + 82 | (N12 * W) + 83 | (N13 * W) + 84 | (N14 * W); 85 | 86 | return vec3(clr.xyz)*b; 87 | } 88 | 89 | void fragment(){ 90 | float d = 0.1 * 1.0 / 50.0; 91 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 92 | 93 | float s = signal_quality * grain(vec2(uv.x, uv.y * 777777777777777.0), TIME); // Sorry... 94 | // Main tearing 95 | float e = min(0.30, pow(max(0.0, cos(uv.y * 4.0 + 0.3) - 0.75) * (s + 0.5) * 1.0, 3.0)) * 25.0; 96 | s -= pow(texture(SCREEN_TEXTURE, vec2(0.01 + (uv.y * 32.0) / 32.0, 1.0)).r, 1.0); 97 | uv.x += e * abs(s * 3.0); 98 | // Bootom tearing 99 | float r = texture(grain_tex, vec2(mod(TIME * 10.0, mod(TIME * 10.0, 256.0) * (1.0 / 256.0)), 0.0)).r * (2.0 * s); 100 | uv.x += abs(r * pow(min(0.003, (uv.y - 0.15)) * bottom_strenth, 2.0)); 101 | 102 | // Apply blur 103 | d = 0.051 + abs(sin(s / 4.0)); 104 | float c = max(0.0001, 0.002 * d); 105 | 106 | COLOR.xyz = Blur(uv, 0.0, c + c * (uv.x), TIME, SCREEN_TEXTURE); 107 | float y = rgb2yiq(COLOR.xyz).r; 108 | 109 | uv.x += 0.01 * d; 110 | c *= 6.0; 111 | COLOR.xyz = Blur(uv, 0.333 ,c, TIME, SCREEN_TEXTURE); 112 | float i = rgb2yiq(COLOR.xyz).g; 113 | 114 | uv.x += 0.005 * d; 115 | 116 | c *= 2.50; 117 | COLOR.xyz = Blur(uv, 0.666, c, TIME, SCREEN_TEXTURE); 118 | float q = rgb2yiq(COLOR.xyz).b; 119 | 120 | COLOR.xyz = yiq2rgb(vec3(y, i, q)) - pow(s + e * 2.0, 3.0); 121 | COLOR.xyz *= smoothstep(1.0, 0.999, uv.x - .1); 122 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/NTSCBasic.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "keijiro" FROM GITHUB 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : MIT 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //GITHUB LINK : https://github.com/keijiro/KinoTube/ 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float _bleeding :hint_range(0, 1) = 0.5; 12 | uniform float _fringing :hint_range(0, 1) = 0.5; 13 | uniform float _scanline :hint_range(0, 1) = 0.5; 14 | uniform bool linearColorSpace = true; 15 | 16 | vec3 LinearToGammaSpace (vec3 linRGB){ 17 | linRGB = max(linRGB, vec3(0, 0, 0)); 18 | return max(1.055 * pow(linRGB, vec3(0.416666667)) - 0.055, 0); 19 | } 20 | vec3 GammaToLinearSpace (vec3 sRGB){ 21 | return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); 22 | } 23 | 24 | vec3 RGB2YIQ(vec3 rgb){ 25 | rgb = clamp(rgb, 0, 1); 26 | if (!linearColorSpace){ 27 | rgb = LinearToGammaSpace(rgb); 28 | } 29 | return mat3(vec3(0.299, 0.587, 0.114), 30 | vec3(0.596, -0.274, -0.322), 31 | vec3(0.211, -0.523, 0.313)) * rgb; 32 | } 33 | vec3 YIQ2RGB(vec3 yiq){ 34 | vec3 rgb = mat3(vec3(1, 0.956, 0.621), 35 | vec3(1, -0.272, -0.647), 36 | vec3(1, -1.106, 1.703)) * yiq; 37 | 38 | rgb = clamp(rgb, 0, 1); 39 | if (!linearColorSpace){ 40 | rgb = GammaToLinearSpace(rgb); 41 | } 42 | 43 | return rgb; 44 | } 45 | 46 | vec3 SampleYIQ(vec2 uv, float du, sampler2D _MainTex){ 47 | uv.x += du; 48 | return RGB2YIQ(texture(_MainTex, uv).rgb); 49 | } 50 | 51 | void fragment(){ 52 | float bleedWidth = 0.04 * _bleeding; // width of bleeding 53 | float bleedStep = 2.5 / (1.0 / SCREEN_PIXEL_SIZE).x; // max interval of taps 54 | float bleedTaps = ceil(bleedWidth / bleedStep); 55 | float bleedDelta = bleedWidth / bleedTaps; 56 | float fringeWidth = 0.0025 * _fringing; // width of fringing 57 | 58 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 59 | vec3 yiq = SampleYIQ(uv, 0, SCREEN_TEXTURE); 60 | 61 | // Bleeding 62 | for (float i = 0.0; i < bleedTaps; i++) 63 | { 64 | yiq.y += SampleYIQ(uv, - bleedTaps * i, SCREEN_TEXTURE).y; 65 | yiq.z += SampleYIQ(uv, + bleedTaps * i, SCREEN_TEXTURE).z; 66 | } 67 | yiq.yz /= bleedTaps + 1.0; 68 | 69 | // Fringing 70 | float y1 = SampleYIQ(uv, - fringeWidth, SCREEN_TEXTURE).x; 71 | float y2 = SampleYIQ(uv, + fringeWidth, SCREEN_TEXTURE).x; 72 | yiq.yz += y2 - y1; 73 | 74 | // Scanline 75 | float scan = sin(uv.y * 500.0 * PI); 76 | scan = mix(1.0, (scan + 1.0) / 2.0, _scanline); 77 | 78 | COLOR = vec4(YIQ2RGB(yiq * scan), 1); 79 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/SimpleGlitch.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "Gaktan" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/Ms3XWH# 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float range = 0.03; 12 | uniform float noiseQuality :hint_range(0,250) = 250.0; 13 | uniform float noiseIntensity :hint_range(0, 0.05) = 0.005; 14 | uniform float offsetIntensity = 0.01; 15 | uniform float colorOffsetIntensity :hint_range(0,1.5) = 0.3; 16 | 17 | float rand(vec2 co){ 18 | return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); 19 | } 20 | 21 | float verticalBar(float pos, float uvY, float offset){ 22 | float edge0 = (pos - range); 23 | float edge1 = (pos + range); 24 | 25 | float x = smoothstep(edge0, pos, uvY) * offset; 26 | x -= smoothstep(pos, edge1, uvY) * offset; 27 | return x; 28 | } 29 | 30 | void fragment(){ 31 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 32 | 33 | for (float i = 0.0; i < 0.71; i += 0.1313){ 34 | float d = mod(TIME - tan(TIME * 0.24 * i), 0); 35 | float o = sin(1.0 - tan(TIME * 0.24 * i)); 36 | o *= offsetIntensity; 37 | uv.x += verticalBar(d, uv.y, o); 38 | } 39 | 40 | float uvY = uv.y; 41 | uvY *= noiseQuality; 42 | uvY = float(int(uvY)) * (1.0 / noiseQuality); 43 | float noise = rand(vec2(TIME * 0.00001, uvY)); 44 | uv.x += noise * noiseIntensity; 45 | 46 | vec2 offsetR = vec2(0.006 * sin(TIME), 0.0) * colorOffsetIntensity; 47 | vec2 offsetG = vec2(0.0073 * (cos(TIME * 0.97)), 0.0) * colorOffsetIntensity; 48 | 49 | float r = texture(SCREEN_TEXTURE, uv + offsetR).r; 50 | float g = texture(SCREEN_TEXTURE, uv + offsetG).g; 51 | float b = texture(SCREEN_TEXTURE, uv).b; 52 | 53 | vec4 tex = vec4(r, g, b, 1.0); 54 | COLOR = tex; 55 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/SimpleGrain.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "juniorxsound" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3, WEBGL 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/ldScWw 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float amount :hint_range(0.0, 0.4) = 0.1; 12 | 13 | float grain (vec2 st, float time){ 14 | return fract(sin(dot(st.xy, vec2(17.0,180.)))* 2500. + time); 15 | } 16 | 17 | void fragment(){ 18 | //Coords 19 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 20 | 21 | //Produce some noise based on the coords 22 | vec3 grainPlate = vec3(grain(uv, TIME)); 23 | 24 | //Get the image 25 | vec4 img = texture(SCREEN_TEXTURE, uv); 26 | 27 | //Mix the two signals together 28 | vec3 mixer = mix(img.rgb, grainPlate, amount); 29 | 30 | 31 | COLOR = vec4(mixer,1.0); 32 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/TV.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "ehj1" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/ldXGW4 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float vertJerkOpt :hint_range(0,1) = 0.2; 12 | uniform float vertMovementOpt :hint_range(0,1) = 0.0; 13 | uniform float bottomStaticOpt :hint_range(0,5) = 0.0; 14 | uniform float bottomStaticStrenth :hint_range(0.0, 1.5) = 0.7; 15 | uniform float scalinesOpt :hint_range(0,6) = 0.8; 16 | uniform float rgbOffsetOpt :hint_range(0,2) = 0.2; 17 | uniform float horzFuzzOpt :hint_range(0,5) = 0.15; 18 | 19 | // Noise generation functions borrowed from: 20 | // https://github.com/ashima/webgl-noise/blob/master/src/noise2D.glsl 21 | 22 | vec3 mod289vec3(vec3 x){ 23 | return x - floor(x * (1.0 / 289.0)) * 289.0; 24 | } 25 | 26 | vec2 mod289vec2(vec2 x){ 27 | return x - floor(x * (1.0 / 289.0)) * 289.0; 28 | } 29 | 30 | vec3 permute(vec3 x){ 31 | return mod289vec3(((x*34.0)+1.0)*x); 32 | } 33 | 34 | float snoise(vec2 v){ 35 | const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0 36 | 0.366025403784439, // 0.5*(sqrt(3.0)-1.0) 37 | -0.577350269189626, // -1.0 + 2.0 * C.x 38 | 0.024390243902439); // 1.0 / 41.0 39 | // First corner 40 | vec2 i = floor(v + dot(v, C.yy) ); 41 | vec2 x0 = v - i + dot(i, C.xx); 42 | 43 | // Other corners 44 | vec2 i1; 45 | //i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0 46 | //i1.y = 1.0 - i1.x; 47 | i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); 48 | // x0 = x0 - 0.0 + 0.0 * C.xx ; 49 | // x1 = x0 - i1 + 1.0 * C.xx ; 50 | // x2 = x0 - 1.0 + 2.0 * C.xx ; 51 | vec4 x12 = x0.xyxy + C.xxzz; 52 | x12.xy -= i1; 53 | 54 | // Permutations 55 | i = mod289vec2(i); // Avoid truncation effects in permutation 56 | vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 )) 57 | + i.x + vec3(0.0, i1.x, 1.0 )); 58 | 59 | vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0); 60 | m = m*m ; 61 | m = m*m ; 62 | 63 | // Gradients: 41 points uniformly over a line, mapped onto a diamond. 64 | // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287) 65 | 66 | vec3 x = 2.0 * fract(p * C.www) - 1.0; 67 | vec3 h = abs(x) - 0.5; 68 | vec3 ox = floor(x + 0.5); 69 | vec3 a0 = x - ox; 70 | 71 | // Normalise gradients implicitly by scaling m 72 | // Approximation of: m *= inversesqrt( a0*a0 + h*h ); 73 | m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h ); 74 | 75 | // Compute final noise value at P 76 | vec3 g; 77 | g.x = a0.x * x0.x + h.x * x0.y; 78 | g.yz = a0.yz * x12.xz + h.yz * x12.yw; 79 | return 130.0 * dot(m, g); 80 | } 81 | 82 | float staticV(vec2 uv, float time){ 83 | float staticHeight = snoise(vec2(9.0,float(time)*1.2+3.0))*bottomStaticStrenth+5.0; 84 | float staticAmount = snoise(vec2(1.0,time*1.2-6.0))*0.1+0.3; 85 | float staticStrength = snoise(vec2(-9.75,time*0.6-3.0))*2.0+2.0; 86 | return (1.0-step(snoise(vec2(5.0*pow(time,2.0)+pow(uv.x*7.0,1.2),pow((mod(time,100.0)+100.0)*uv.y*0.3+3.0,staticHeight))),staticAmount))*staticStrength; 87 | } 88 | 89 | 90 | void fragment(){ 91 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 92 | 93 | float jerkOffset = (1.0-step(snoise(vec2(TIME*1.3,5.0)),0.8))*0.05; 94 | 95 | float fuzzOffset = snoise(vec2(TIME*15.0,uv.y*80.0))*0.003; 96 | float largeFuzzOffset = snoise(vec2(TIME*1.0,uv.y*25.0))*0.004; 97 | 98 | float vertMovementOn = (1.0-step(snoise(vec2(TIME*0.2,8.0)),0.4))*vertMovementOpt; 99 | float vertJerk = (1.0-step(snoise(vec2(TIME*1.5,5.0)),0.6))*vertJerkOpt; 100 | float vertJerk2 = (1.0-step(snoise(vec2(TIME*5.5,5.0)),0.2))*vertJerkOpt; 101 | float yOffset = abs(sin(TIME)*4.0)*vertMovementOn+vertJerk*vertJerk2*0.3; 102 | float _y = mod(uv.y+yOffset,1.0); 103 | 104 | 105 | float xOffset = (fuzzOffset + largeFuzzOffset) * horzFuzzOpt; 106 | 107 | float staticVal = 0.0; 108 | 109 | for (float y = -1.0; y <= 1.0; y += 1.0) { 110 | float maxDist = 5.0/200.0; 111 | float dist = y/200.0; 112 | staticVal += staticV(vec2(uv.x,uv.y+dist), TIME)*(maxDist-abs(dist))*1.5; 113 | } 114 | 115 | staticVal *= bottomStaticOpt; 116 | 117 | float red = texture(SCREEN_TEXTURE, vec2(uv.x + xOffset -0.01*rgbOffsetOpt,_y)).r+staticVal; 118 | float green = texture(SCREEN_TEXTURE, vec2(uv.x + xOffset,_y)).g+staticVal; 119 | float blue = texture(SCREEN_TEXTURE, vec2(uv.x + xOffset +0.01*rgbOffsetOpt,_y)).b+staticVal; 120 | 121 | vec3 color = vec3(red,green,blue); 122 | float scanline = sin(uv.y*800.0)*0.04*scalinesOpt; 123 | color -= scanline; 124 | 125 | COLOR = vec4(color,1.0); 126 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/VHS.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "FMS_Cat" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/XtBXDt 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float tape_wave_amount :hint_range (0, .04) = 0.003; 12 | uniform float tape_crease_amount :hint_range (0, 15) = 2.5; 13 | uniform float color_displacement :hint_range (0, 5) = 1; 14 | uniform float lines_velocity :hint_range (0, 5) = 0.1; 15 | 16 | vec3 tex2D( sampler2D _tex, vec2 _p ){ 17 | vec3 col = texture( _tex, _p ).xyz; 18 | if ( 0.5 < abs( _p.x - 0.5 ) ) { 19 | col = vec3( 0.1 ); 20 | } 21 | return col; 22 | } 23 | 24 | float hash( vec2 _v ){ 25 | return fract( sin( dot( _v, vec2( 89.44, 19.36 ) ) ) * 22189.22 ); 26 | } 27 | 28 | float iHash( vec2 _v, vec2 _r ){ 29 | float h00 = hash( vec2( floor( _v * _r + vec2( 0.0, 0.0 ) ) / _r ) ); 30 | float h10 = hash( vec2( floor( _v * _r + vec2( 1.0, 0.0 ) ) / _r ) ); 31 | float h01 = hash( vec2( floor( _v * _r + vec2( 0.0, 1.0 ) ) / _r ) ); 32 | float h11 = hash( vec2( floor( _v * _r + vec2( 1.0, 1.0 ) ) / _r ) ); 33 | vec2 ip = vec2( smoothstep( vec2( 0.0, 0.0 ), vec2( 1.0, 1.0 ), mod( _v*_r, 1. ) ) ); 34 | return ( h00 * ( 1. - ip.x ) + h10 * ip.x ) * ( 1. - ip.y ) + ( h01 * ( 1. - ip.x ) + h11 * ip.x ) * ip.y; 35 | } 36 | 37 | float noise( vec2 _v ){ 38 | float sum = 0.; 39 | for( float i=1.0; i<9.0; i++ ){ 40 | sum += iHash( _v + vec2( i ), vec2( 2. * pow( 2., float( i ) ) ) ) / pow( 2., float( i ) ); 41 | } 42 | return sum; 43 | } 44 | 45 | void fragment(){ 46 | vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 47 | vec2 uvn = uv; 48 | vec3 col = vec3( 0.0 ); 49 | 50 | // tape wave 51 | uvn.x += ( noise( vec2( uvn.y, TIME ) ) - 0.5 )* 0.005; 52 | uvn.x += ( noise( vec2( uvn.y * 100.0, TIME * 10.0 ) ) - 0.5 ) * tape_wave_amount; 53 | 54 | // tape crease 55 | float tcPhase = clamp( ( sin( uvn.y * 8.0 - TIME * PI * 1.2 ) - 0.92 ) * noise( vec2( TIME ) ), 0.0, 0.01 ) * tape_crease_amount; 56 | float tcNoise = max( noise( vec2( uvn.y * 100.0, TIME * 10.0 ) ) - 0.5, 0.0 ); 57 | uvn.x = uvn.x - tcNoise * tcPhase; 58 | 59 | // switching noise 60 | float snPhase = smoothstep( 0.03, 0.0, uvn.y ); 61 | uvn.y += snPhase * 0.3; 62 | uvn.x += snPhase * ( ( noise( vec2( uv.y * 100.0, TIME * 10.0 ) ) - 0.5 ) * 0.2 ); 63 | 64 | col = tex2D( SCREEN_TEXTURE, uvn ); 65 | col *= 1.0 - tcPhase; 66 | col = mix( 67 | col, 68 | col.yzx, 69 | snPhase 70 | ); 71 | 72 | // bloom 73 | for( float x = -4.0; x < 2.5; x += 1.0 ){ 74 | col.xyz += vec3( 75 | tex2D( SCREEN_TEXTURE, uvn + vec2( x - 0.0, 0.0 ) * 0.007 ).x, 76 | tex2D( SCREEN_TEXTURE, uvn + vec2( x - color_displacement, 0.0 ) * 0.007 ).y, 77 | tex2D( SCREEN_TEXTURE, uvn + vec2( x - color_displacement * 2.0, 0.0 ) * 0.007 ).z 78 | ) * 0.1; 79 | } 80 | col *= 0.6; 81 | 82 | // ac beat 83 | col *= 1.0 + clamp( noise( vec2( 0.0, uv.y + TIME * lines_velocity ) ) * 0.6 - 0.25, 0.0, 0.1 ); 84 | 85 | COLOR = vec4( col, 1.0 ); 86 | } -------------------------------------------------------------------------------- /GodotRetro/Screen Shaders/VHSPause.gdshader: -------------------------------------------------------------------------------- 1 | //SHADER ORIGINALY CREADED BY "caaaaaaarter" FROM SHADERTOY 2 | //MODIFIED AND PORTED TO GODOT BY AHOPNESS (@ahopness) 3 | //LICENSE : CC0 4 | //COMATIBLE WITH : GLES2, GLES3 5 | //SHADERTOY LINK : https://www.shadertoy.com/view/4lB3Dc 6 | 7 | shader_type canvas_item; 8 | 9 | uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; 10 | 11 | uniform float shake_amount_x : hint_range(1, 500) = 250.0; 12 | uniform float shake_amount_y : hint_range(1, 500) = 40.0; 13 | uniform float white_hlines : hint_range(0, 50) = 50; 14 | uniform float white_vlines : hint_range(0,80) = 80; 15 | 16 | float rand(vec2 co){ 17 | return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); 18 | } 19 | 20 | void fragment(){ 21 | vec4 texColor = vec4(0); 22 | // get position to sample 23 | vec2 samplePosition = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; 24 | 25 | float whiteNoise = 9999.0; 26 | 27 | // Jitter each line left and right 28 | samplePosition.x = samplePosition.x+(rand(vec2(TIME,UV.y))-0.5)/shake_amount_x; 29 | // Jitter the whole picture up and down 30 | samplePosition.y = samplePosition.y+(rand(vec2(TIME))-0.5)/shake_amount_y; 31 | // Slightly add color noise to each line 32 | texColor = texColor + (vec4(-0.5)+vec4(rand(vec2(UV.y,TIME)),rand(vec2(UV.y,TIME+1.0)),rand(vec2(UV.y,TIME+2.0)),0))*0.1; 33 | 34 | // Either sample the texture, or just make the pixel white (to get the staticy-bit at the bottom) 35 | whiteNoise = rand(vec2(floor(samplePosition.y*white_vlines),floor(samplePosition.x*white_hlines))+vec2(TIME,0)); 36 | if (whiteNoise > 11.5-30.0*samplePosition.y || whiteNoise < 1.5-5.0*samplePosition.y) { 37 | // Sample the texture. 38 | //samplePosition.y = 1.0-samplePosition.y; //Fix for upside-down texture 39 | texColor = texColor + texture(SCREEN_TEXTURE,samplePosition); 40 | }else{ 41 | // Use white. (I'm adding here so the color noise still applies) 42 | texColor = vec4(1); 43 | } 44 | COLOR = texColor; 45 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | 123 | MIT License 124 | 125 | Copyright (c) 2020 Lucas Ângelo 126 | 127 | Permission is hereby granted, free of charge, to any person obtaining a copy 128 | of this software and associated documentation files (the "Software"), to deal 129 | in the Software without restriction, including without limitation the rights 130 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 131 | copies of the Software, and to permit persons to whom the Software is 132 | furnished to do so, subject to the following conditions: 133 | 134 | The above copyright notice and this permission notice shall be included in all 135 | copies or substantial portions of the Software. 136 | 137 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 138 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 139 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 140 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 141 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 142 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 143 | SOFTWARE. 144 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [Looking for a godot 3.x compatible version?](https://github.com/ahopness/GodotRetro/tree/3.x) 2 | 3 | ------ 4 | 5 |
6 |

💜 Godot Retro 💜

7 |

Old-school shader pack

8 | Logo 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 | 18 | ## Sumary 19 | 20 | * [About](#about) 21 | * [License](#license) 22 | * [Shaders](#shaders) 23 | * [Installation](#installation) 24 | * [Examples](#examples) 25 | * [Features](#features) 26 | * [Limitations](#limitations) 27 | * [Credits](#credits) 28 | 29 | 30 | 31 | ## About 32 | 33 | **Godot Retro** is a shader pack for godot, with various ports of shades from *ShaderToy*, *Unity* and The *Book Of Shaders*. 34 | 35 | 36 | 37 | ## License 38 | 39 | * Shaders 40 | 41 | All shaders are licensed under **CC0**, with the exeption of the *Glitch* and the *NTSC Basic* shaders, that are licensed under **MIT**. 42 | 43 | * Example Scenes 44 | 45 | *Models*, *scripts*, *textures* and *sounds* are all under **CC0**. 46 | 47 | The *shrWind* shader, used in map 4, is made by **Maujoe** and it's licensed under **MIT**. 48 | 49 | 50 | 51 | ## Shaders 52 | 53 | - Glitch 54 | 55 | - NTSC Basic 56 | 57 | - Grain 58 | 59 | - Simple Grain 60 | 61 | - Jpeg Compression 62 | 63 | - Dithering 64 | 65 | - Lens Distortion 66 | 67 | - NTSC 68 | 69 | - Simple Glitch 70 | 71 | - TV 72 | 73 | - VHS 74 | 75 | - VHS Pause 76 | 77 | - Accurate CRT 78 | 79 | - B&W 80 | 81 | - Better CC 82 | 83 | - Blur 84 | 85 | - Color Precission 86 | 87 | - Sharpness 88 | 89 | - Hello World 90 | 91 | - Hello World 2 92 | 93 | ### Recommendation 94 | 95 | The shaders looks better when they are combined! 96 | 97 | **Example :** 98 | 99 | This scene uses the following combination : **Lens Distortion + Grain + TV** 100 | 101 | 102 | 103 | And this scene use this combination : **Lens Distortion + Sharpness + NTSC** 104 | 105 | 106 | 107 | 108 | - Tip 1 : **Sharpness** is a must have if using any of the *TV*, *VHS* or the *NTSC* shaders for achieving a more realistic retro effect! 109 | 110 | - Tip 2 : **Lens Distortion** and high FOV combined can give a MTV 2000 blumbers aesthetics if used correctly! 111 | 112 | - Tip 3 : Be careful with **Grain**! It can get really messy really easily! 113 | 114 | - Tip 4 : All of the shaders can go beyond their default range values, just open the shader code and just the numbers inside the *hint_range()* function in the variables section. 115 | 116 | - Tip 5 : **ALWAYS** check the headers inside the shaders you are using, there's information about *compatibility*, *credits* and *licesing* in there! 117 | 118 | 119 | 120 | ## Installation 121 | 122 | **To use the shaders you got to** : 123 | 124 | 1. Copy the *GodotRetro* folder to your project (can be anywhere) 125 | 126 | 127 | ***For normal shader*** : 128 | 129 | 2. Just add the shader to a *ShaderMaterial*. 130 | 131 | 132 | ***For screen space shaders*** : 133 | 134 | 2. Create a *ColorRect* and make it a *FullRect* in the *Layout* options 135 | 136 | 3. Assign the shader of preference to a *ShaderMaterial* in the used *ColorRect*. 137 | 138 | 139 | **Example :** 140 | 141 | ![example](https://i.imgur.com/sSti5i8.png) 142 | 143 | 144 | **Done!** Have fun! 145 | 146 | 147 | ### DISCLAMER : 148 | 149 | - To use 2+ shaders at the same time, you need to use a BackBufferCopy set as a Viewport for each effect. 150 | 151 | - For UI, be sure to set it above the shaders in the node hierarchy for them to be affected for more imersion. 152 | 153 | 154 | 155 | ## Examples 156 | 157 | 5 free and easy to learn examples are available with the pack. 158 | 159 |
160 | 161 | 162 | 163 |
164 | 165 | **General controls**: 166 | 167 | | ESC | 168 | |-----------| 169 | | Quit Game | 170 | 171 | **Map 1 controls**: 172 | 173 | | W | A | S | D | E | Q | Shift | 174 | |--------|-----------|-----------|------------|-----------|-----------|-------| 175 | | Foward | Turn Left | Backwards | Turn Right | Walk Left | Walk Left | Run | 176 | 177 | **Map 4 controls**: 178 | 179 | | A | D | 180 | |-----------|------------| 181 | | Move Left | Move Right | 182 | 183 | 184 | 185 | ## Features 186 | 187 | - **22** easy to use godot shaders 188 | 189 | - 5 well done **example projects** 190 | 191 | 192 | 193 | ## Limitations 194 | 195 | Unfortnetly, some shaders arent 100% perfect. 196 | 197 | - Some shaders may not work in the web export, please check each used shader's code header for more information! 198 | 199 | 200 | 201 | ## Credits 202 | 203 | Shaders ported by : **Ahopness ([@ahopness](http://twitter.com/ahopness "My Twitter Account"))** 204 | 205 | *B&W* shader where originaly made by : **demofox (ShaderToy)** 206 | 207 | *Color Precission* shader where originaly made by : **abelcamarena (ShaderToy)** 208 | 209 | *Jpeg Compression* shader where originaly made by : **paniq (ShaderToy)** 210 | 211 | *Better CC* shader where originaly made by **Wunkolo(ShaderToy)** 212 | 213 | *Lens Distortion* shader where originaly made by **jcant0n(ShaderToy)** 214 | 215 | *Sharpness* shader where originaly made by **Nihilistic_Furry(ShaderToy)** 216 | 217 | *Grain* shader where originaly made by **spl!te(GitHub) & martinsh(Personal Blog)** 218 | 219 | *Simple Grain* shader where originaly made by : **juniorxsound (ShaderToy)** 220 | 221 | *TV* shader where originaly made by : **ehj1 (ShaderToy)** 222 | 223 | *VHS* shader where originaly made by : **FMS_Cat (ShaderToy)** 224 | 225 | *VHS Pause* shader where originaly made by : **caaaaaaarter (ShaderToy)** 226 | 227 | *NTSC* shader where originaly made by : **ompuco (ShaderToy)** 228 | 229 | *NTSC Basic* shader where originaly made by : **keijiro (Github)** 230 | 231 | *Glitch* shader where originaly made by : **keijiro (GitHub)** 232 | 233 | *Simple Glitch* shader where originaly made by : **Gaktan (ShaderToy)** 234 | 235 | *Blur* shader where originaly made by : **jcant0n (ShaderToy)** 236 | 237 | *Hello World* and *Hello World 2* shaders where originaly made by : **Patricio Gonzalez Vivo** 238 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahopness/GodotRetro/12915232815c6c3c7a4d95cdb954850ec5456586/icon.png -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://w2t4drid1053" 6 | path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.png" 14 | dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="GodotRetro" 14 | config/features=PackedStringArray("4.3") 15 | config/icon="res://icon.png" 16 | 17 | [audio] 18 | 19 | buses/default_bus_layout="res://Examples/bus_main.tres" 20 | 21 | [autoload] 22 | 23 | GameManeger="*res://Examples/scrGameManeger.gd" 24 | 25 | [display] 26 | 27 | window/size/viewport_width=320 28 | window/size/viewport_height=240 29 | window/size/always_on_top=true 30 | window/size/window_width_override=640 31 | window/size/window_height_override=480 32 | window/stretch/mode="viewport" 33 | window/vsync/vsync_mode=false 34 | 35 | [editor] 36 | 37 | movie_writer/movie_file="/home/lucas/Desktop/Glitch City.avi" 38 | 39 | [input] 40 | 41 | player_walk_front={ 42 | "deadzone": 0.5, 43 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) 44 | ] 45 | } 46 | player_walk_back={ 47 | "deadzone": 0.5, 48 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":83,"physical_keycode":0,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) 49 | ] 50 | } 51 | player_walk_left={ 52 | "deadzone": 0.5, 53 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":81,"physical_keycode":0,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) 54 | ] 55 | } 56 | player_walk_right={ 57 | "deadzone": 0.5, 58 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":69,"physical_keycode":0,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) 59 | ] 60 | } 61 | player_look_left={ 62 | "deadzone": 0.5, 63 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) 64 | ] 65 | } 66 | player_look_right={ 67 | "deadzone": 0.5, 68 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) 69 | ] 70 | } 71 | player_run={ 72 | "deadzone": 0.5, 73 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194325,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) 74 | ] 75 | } 76 | player_exit={ 77 | "deadzone": 0.5, 78 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) 79 | ] 80 | } 81 | --------------------------------------------------------------------------------