more special effects #3
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,3 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
||||
*.glb filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 529 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cyqdydv2w5tvx"
|
||||
path="res://.godot/imported/abstract-gradient-background-with-grain-texture-captivating-noise-airbrush-minimalist-wallpaper_950414-1646.png-76ec1250dee18853620b472a27c29cff.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/MISC_Textures/abstract-gradient-background-with-grain-texture-captivating-noise-airbrush-minimalist-wallpaper_950414-1646.png"
|
||||
dest_files=["res://.godot/imported/abstract-gradient-background-with-grain-texture-captivating-noise-airbrush-minimalist-wallpaper_950414-1646.png-76ec1250dee18853620b472a27c29cff.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
107
Assets/Scripts/Shaders/found_footage.gdshader
Normal file
107
Assets/Scripts/Shaders/found_footage.gdshader
Normal file
@@ -0,0 +1,107 @@
|
||||
// https://www.shadertoy.com/view/MdffD7
|
||||
// Fork of FMS_Cat's VCR distortion shader
|
||||
|
||||
shader_type canvas_item;
|
||||
|
||||
// TODO: Add uniforms for tape crease discoloration and image jiggle
|
||||
|
||||
uniform sampler2D screen_texture: hint_screen_texture, filter_linear_mipmap, repeat_disable;
|
||||
|
||||
uniform vec2 vhs_resolution = vec2(320.0, 240.0);
|
||||
|
||||
uniform int samples = 2;
|
||||
uniform float crease_noise: hint_range(0.0, 2.0, 0.1) = 1.0;
|
||||
uniform float crease_opacity: hint_range(0.0, 1.0, 0.1) = 0.5;
|
||||
uniform float filter_intensity: hint_range(0.0, 1.0, 0.1) = 0.1;
|
||||
|
||||
group_uniforms tape_crease;
|
||||
uniform float tape_crease_smear: hint_range(0.0, 2.0, 0.1) = 0.2;
|
||||
uniform float tape_crease_intensity: hint_range(0.0, 1.0, 0.1) = 0.2;
|
||||
uniform float tape_crease_jitter: hint_range(0.0, 1.0, 0.01) = 0.10;
|
||||
uniform float tape_crease_speed: hint_range(-2.0, 2.0, 0.1) = 0.5;
|
||||
uniform float tape_crease_discoloration: hint_range(0.0, 2.0, 0.1) = 1.0;
|
||||
|
||||
group_uniforms bottom_border;
|
||||
uniform float bottom_border_thickness: hint_range(0.0,32.0, 0.1) = 6.0;
|
||||
uniform float bottom_border_jitter: hint_range(0.0, 24.0, 0.5) = 6.0;
|
||||
|
||||
group_uniforms noise;
|
||||
uniform float noise_intensity: hint_range(0.0, 1.0, 0.1) = 0.1;
|
||||
uniform sampler2D noise_texture: filter_linear_mipmap, repeat_enable;
|
||||
|
||||
float v2random(vec2 uv) {
|
||||
return texture(noise_texture, mod(uv, vec2(1.0))).x;
|
||||
}
|
||||
|
||||
mat2 rotate2D(float t) {
|
||||
return mat2(vec2(cos(t), sin(t)), vec2(-sin(t), cos(t)));
|
||||
}
|
||||
|
||||
vec3 rgb2yiq(vec3 rgb) {
|
||||
return mat3(vec3(0.299, 0.596, 0.211), vec3(0.587, -0.274, -0.523), vec3(0.114, -0.322, 0.312)) * rgb;
|
||||
}
|
||||
|
||||
vec3 yiq2rgb(vec3 yiq) {
|
||||
return mat3(vec3(1.0, 1.0, 1.0), vec3(0.956, -0.272, -1.106), vec3(0.621, -0.647, 1.703)) * yiq;
|
||||
}
|
||||
|
||||
vec3 vhx_tex_2D(sampler2D tex, vec2 uv, float rot) {
|
||||
vec3 yiq = vec3(0.0);
|
||||
for (int i = 0; i < samples; i++) {
|
||||
yiq += rgb2yiq(texture(tex, uv - vec2(float(i), 0.0) / vhs_resolution).xyz) *
|
||||
vec2(float(i), float(samples - 1 - i)).yxx / float(samples - 1)
|
||||
/ float(samples) * 2.0;
|
||||
}
|
||||
if (rot != 0.0) {
|
||||
yiq.yz *= rotate2D(rot * tape_crease_discoloration);
|
||||
}
|
||||
return yiq2rgb(yiq);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec2 uvn = UV;
|
||||
vec3 col = vec3(0.0, 0.0, 0.0);
|
||||
|
||||
// Tape wave.
|
||||
uvn.x += (v2random(vec2(uvn.y / 10.0, TIME / 10.0) / 1.0) - 0.5) / vhs_resolution.x * 1.0;
|
||||
uvn.x += (v2random(vec2(uvn.y, TIME * 10.0)) - 0.5) / vhs_resolution.x * 1.0;
|
||||
|
||||
// tape crease
|
||||
float tc_phase = smoothstep(0.9, 0.96, sin(uvn.y * 8.0 - (TIME * tape_crease_speed + tape_crease_jitter * v2random(TIME * vec2(0.67, 0.59))) * PI * 1.2));
|
||||
float tc_noise = smoothstep(0.3, 1.0, v2random(vec2(uvn.y * 4.77, TIME)));
|
||||
float tc = tc_phase * tc_noise;
|
||||
uvn.x = uvn.x - tc / vhs_resolution.x * 8.0 * tape_crease_smear;
|
||||
|
||||
// switching noise
|
||||
float sn_phase = smoothstep(1.0 - bottom_border_thickness / vhs_resolution.y, 1.0, uvn.y);
|
||||
uvn.x += sn_phase * (v2random(vec2(UV.y * 100.0, TIME * 10.0)) - 0.5) / vhs_resolution.x * bottom_border_jitter;
|
||||
|
||||
// fetch
|
||||
col = vhx_tex_2D(screen_texture, uvn, tc_phase * 0.2 + sn_phase * 2.0);
|
||||
|
||||
// crease noise
|
||||
float cn = tc_noise * crease_noise * (0.7 * tc_phase * tape_crease_intensity + 0.3);
|
||||
if (0.29 < cn) {
|
||||
vec2 V = vec2(0.0, crease_opacity);
|
||||
vec2 uvt = (uvn + V.yx * v2random(vec2(uvn.y, TIME))) * vec2(0.1, 1.0);
|
||||
float n0 = v2random(uvt);
|
||||
float n1 = v2random(uvt + V.yx / vhs_resolution.x);
|
||||
if (n1 < n0) {
|
||||
col = mix(col, 2.0 * V.yyy, pow(n0, 10.0));
|
||||
}
|
||||
}
|
||||
|
||||
// ac beat
|
||||
col *= 1.0 + 0.1 * smoothstep(0.4, 0.6, v2random(vec2(0.0, 0.1 * (UV.y + TIME * 0.2)) / 10.0));
|
||||
|
||||
// color noise
|
||||
col *= 1.0 - noise_intensity * 0.5 + noise_intensity * texture(noise_texture, mod(uvn * vec2(1.0, 1.0) + TIME * vec2(5.97, 4.45), vec2(1.0))).xyz;
|
||||
col = clamp(col, 0.0, 1.0);
|
||||
|
||||
// yiq
|
||||
col = rgb2yiq(col);
|
||||
col = vec3(0.9, 1.1, 1.5) * col + vec3(0.1, -0.1, 0.0) * filter_intensity;
|
||||
col = yiq2rgb(col);
|
||||
|
||||
COLOR = vec4(col, 1.0);
|
||||
}
|
||||
1
Assets/Scripts/Shaders/found_footage.gdshader.uid
Normal file
1
Assets/Scripts/Shaders/found_footage.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c5wgkig1b8g0i
|
||||
11
Assets/Scripts/Shaders/grayscale.gdshader
Normal file
11
Assets/Scripts/Shaders/grayscale.gdshader
Normal file
@@ -0,0 +1,11 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable;
|
||||
uniform float saturation : hint_range(0.0, 1.0) = 1.0; // 0 = grayscale, 1 = full color
|
||||
|
||||
void fragment() {
|
||||
vec4 tex = texture(screen_texture, SCREEN_UV);
|
||||
float gray = dot(tex.rgb, vec3(0.299, 0.587, 0.114)); // luminance weights
|
||||
vec3 result = mix(vec3(gray), tex.rgb, saturation);
|
||||
COLOR = vec4(result, tex.a);
|
||||
}
|
||||
1
Assets/Scripts/Shaders/grayscale.gdshader.uid
Normal file
1
Assets/Scripts/Shaders/grayscale.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://xinbgyk6acog
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=22 format=3 uid="uid://cqtabc6coc58l"]
|
||||
[gd_scene load_steps=25 format=3 uid="uid://cqtabc6coc58l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dmtpstry0o0a3" path="res://Assets/Scripts/Player Controls/player_movement.gd" id="1_48dl1"]
|
||||
[ext_resource type="PackedScene" uid="uid://b2mhoeubwtkuo" path="res://Scenes/UI/fade_in_transition.tscn" id="2_cx0fw"]
|
||||
@@ -7,9 +7,15 @@
|
||||
[ext_resource type="PackedScene" uid="uid://b54u8nvjd4p6l" path="res://Scenes/UI/pause_menu.tscn" id="3_cx0fw"]
|
||||
[ext_resource type="Script" uid="uid://chb1dyhl7cyg1" path="res://Assets/Scripts/UI/crosshair.gd" id="3_vwrhx"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmyf6lhbn1x6p" path="res://Scenes/Models/Interior/security_office_model.tscn" id="4_vwrhx"]
|
||||
[ext_resource type="Shader" uid="uid://xinbgyk6acog" path="res://Assets/Scripts/Shaders/grayscale.gdshader" id="5_bn2ya"]
|
||||
[ext_resource type="Script" uid="uid://bfsaxhnb0qpuk" path="res://Assets/Scripts/Misc/flickering_light.gd" id="5_nmbs0"]
|
||||
[ext_resource type="Texture2D" uid="uid://c0qenaw8wxlbv" path="res://Assets/MISC_Textures/DustMote.png" id="6_ayt7b"]
|
||||
[ext_resource type="PackedScene" uid="uid://c670wtpi4n22q" path="res://Scenes/UI/terminal.tscn" id="10_gba58"]
|
||||
[ext_resource type="Script" uid="uid://ckagscjkf3iiu" path="res://Assets/Scripts/UI/terminal/terminal_controls.gd" id="10_gba58"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bn2ya"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("5_bn2ya")
|
||||
shader_parameter/saturation = 0.0
|
||||
|
||||
[sub_resource type="Environment" id="Environment_cumm5"]
|
||||
background_mode = 1
|
||||
@@ -77,6 +83,9 @@ size = Vector3(0.0644531, 0.530029, 0.4646)
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_vwrhx"]
|
||||
viewport_path = NodePath("Interactables/PC/Sprite3D/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_nmbs0"]
|
||||
font_size = 42
|
||||
|
||||
[node name="Node3D" type="Node3D"]
|
||||
|
||||
[node name="PlayerController" type="Node3D" parent="."]
|
||||
@@ -121,6 +130,14 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("3_vwrhx")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="PlayerController/Camera3D/CanvasLayer"]
|
||||
material = SubResource("ShaderMaterial_bn2ya")
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="PauseMenu" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Transition" parent="PauseMenu" instance=ExtResource("2_cx0fw")]
|
||||
@@ -210,10 +227,46 @@ shape = SubResource("BoxShape3D_nmbs0")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Interactables/PC"]
|
||||
transform = Transform3D(0.024902493, 0.0022058422, 0, -0.0022058422, 0.024902493, 0, 0, 0, 0.024999999, 0.053893626, 0.2870214, 0.041617036)
|
||||
layers = 2
|
||||
flip_h = true
|
||||
axis = 0
|
||||
texture = SubResource("ViewportTexture_vwrhx")
|
||||
|
||||
[node name="SubViewport" parent="Interactables/PC/Sprite3D" instance=ExtResource("10_gba58")]
|
||||
[node name="SubViewport" type="SubViewport" parent="Interactables/PC/Sprite3D" node_paths=PackedStringArray("terminalLine")]
|
||||
transparent_bg = true
|
||||
size = Vector2i(1830, 1680)
|
||||
script = ExtResource("10_gba58")
|
||||
terminalLine = NodePath("MarginContainer/ScrollContainer/VBoxContainer/Label")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Interactables/PC/Sprite3D/SubViewport"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer"]
|
||||
clip_contents = true
|
||||
custom_minimum_size = Vector2(1800, 0)
|
||||
layout_mode = 2
|
||||
text = "a0ifjaojkfna"
|
||||
label_settings = SubResource("LabelSettings_nmbs0")
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="Caret" type="ColorRect" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label"]
|
||||
layout_mode = 0
|
||||
offset_right = 24.0
|
||||
offset_bottom = 42.0
|
||||
|
||||
[node name="CaretTimer" type="Timer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label"]
|
||||
wait_time = 0.5
|
||||
autostart = true
|
||||
|
||||
[connection signal="timeout" from="Lighting/OmniLight3D3/Timer" to="Lighting/OmniLight3D3" method="_on_timer_timeout"]
|
||||
[connection signal="timeout" from="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label/CaretTimer" to="Interactables/PC/Sprite3D/SubViewport" method="_on_caret_timer_timeout"]
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
[ext_resource type="Shader" uid="uid://uo56rpfskail" path="res://Assets/Scripts/Shaders/psx.gdshader" id="1_54yrn"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vwrhx"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("1_54yrn")
|
||||
shader_parameter/pixel_resolution = 240.0
|
||||
shader_parameter/color_steps = 16
|
||||
|
||||
21
addons/godot-git-plugin/LICENSE
Normal file
21
addons/godot-git-plugin/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016-2023 The Godot Engine community
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
1346
addons/godot-git-plugin/THIRDPARTY.md
Normal file
1346
addons/godot-git-plugin/THIRDPARTY.md
Normal file
File diff suppressed because it is too large
Load Diff
10
addons/godot-git-plugin/git_plugin.gdextension
Normal file
10
addons/godot-git-plugin/git_plugin.gdextension
Normal file
@@ -0,0 +1,10 @@
|
||||
[configuration]
|
||||
|
||||
entry_symbol = "git_plugin_init"
|
||||
compatibility_minimum = "4.2.0"
|
||||
|
||||
[libraries]
|
||||
|
||||
linux.editor.x86_64 = "linux/libgit_plugin.linux.editor.x86_64.so"
|
||||
macos.editor = "macos/libgit_plugin.macos.editor.universal.dylib"
|
||||
windows.editor.x86_64 = "windows/libgit_plugin.windows.editor.x86_64.dll"
|
||||
1
addons/godot-git-plugin/git_plugin.gdextension.uid
Normal file
1
addons/godot-git-plugin/git_plugin.gdextension.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dxk2quklou2u7
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -24,6 +24,11 @@ GlobalSettings="*res://Assets/Scripts/Player Controls/global_settings.gd"
|
||||
window/size/viewport_width=1920
|
||||
window/size/viewport_height=1080
|
||||
|
||||
[editor]
|
||||
|
||||
version_control/plugin_name="GitPlugin"
|
||||
version_control/autoload_on_startup=true
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/godot-vim/plugin.cfg")
|
||||
|
||||
Reference in New Issue
Block a user