diff --git a/scenes/blockout_room.tscn b/scenes/blockout_room.tscn index aa42dc1..5ad06cb 100644 --- a/scenes/blockout_room.tscn +++ b/scenes/blockout_room.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=21 format=3 uid="uid://gq33ysuit61b"] +[gd_scene load_steps=28 format=3 uid="uid://gq33ysuit61b"] +[ext_resource type="Script" uid="uid://o17v5m75ew03" path="res://scenes/custom_render.gd" id="1_gcpng"] [ext_resource type="PackedScene" uid="uid://c70o7nk6wxcmx" path="res://models/UndertakerBlockout.fbx" id="2_gfayn"] [ext_resource type="PackedScene" uid="uid://be7u1kn41g2ww" path="res://addons/interaction/interactable.tscn" id="3_u0nvw"] [ext_resource type="PackedScene" uid="uid://bxuveo0hlwy33" path="res://prefabs/character.tscn" id="4_tedjo"] @@ -8,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://cx052x8qp7oj2" path="res://prefabs/lid_crane.tscn" id="6_oslft"] [ext_resource type="Script" uid="uid://bmxu5xdxlq0e6" path="res://scenes/flickering_oven_light.gd" id="7_sve1f"] [ext_resource type="VoxelGIData" uid="uid://bfwtxdvx4w12w" path="res://scenes/blockout_room.VoxelGI_data.res" id="8_dp7jk"] +[ext_resource type="Shader" uid="uid://bf2nxtrto5u5r" path="res://scenes/main_render.gdshader" id="9_k5i88"] [sub_resource type="BoxShape3D" id="BoxShape3D_gfayn"] size = Vector3(12.2438965, 0.48779297, 13.901489) @@ -18,6 +20,9 @@ size = Vector3(0.24987793, 1, 1) [sub_resource type="BoxMesh" id="BoxMesh_oslft"] size = Vector3(7, 0.1, 10) +[sub_resource type="BoxMesh" id="BoxMesh_gcpng"] +size = Vector3(0.1, 0.02, 2.155) + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_oslft"] emission_enabled = true emission = Color(1, 1, 1, 1) @@ -87,65 +92,115 @@ glow_strength = 1.04 glow_bloom = 0.16 volumetric_fog_enabled = true -[node name="BlockoutRoom" type="Node3D"] +[sub_resource type="Curve" id="Curve_gcpng"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.055555545, 0.022194743), 0.984991, 0.984991, 0, 0, Vector2(0.30246913, 0.3828606), 1.409688, 1.409688, 0, 0, Vector2(0.5864197, 0.6313193), 1.2172475, 1.2172475, 0, 0, Vector2(0.882716, 0.94389635), 1.9908764, 1.9908764, 0, 0, Vector2(1, 1), 0.063336894, 0.0, 0, 0] +point_count = 6 + +[sub_resource type="CurveTexture" id="CurveTexture_5747v"] +curve = SubResource("Curve_gcpng") -[node name="UndertakerBlockout" parent="." instance=ExtResource("2_gfayn")] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_gcpng"] +shader = ExtResource("9_k5i88") +shader_parameter/color_steps = 24.0 +shader_parameter/color_min = 0.0 +shader_parameter/color_max = 0.999999977648 +shader_parameter/color_curve = SubResource("CurveTexture_5747v") + +[sub_resource type="ViewportTexture" id="ViewportTexture_dp7jk"] +viewport_path = NodePath("SubViewportContainer/SubViewport") + +[node name="BlockoutRoom" type="Node3D"] -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="SubViewportContainer" type="SubViewportContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +stretch = true +script = ExtResource("1_gcpng") + +[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"] +handle_input_locally = false +gui_snap_controls_to_pixels = false +size = Vector2i(1152, 648) +render_target_update_mode = 4 + +[node name="UndertakerBlockout" parent="SubViewportContainer/SubViewport" instance=ExtResource("2_gfayn")] + +[node name="OmniLight3D" type="OmniLight3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00014138222, 2.43762, 0.07469213) light_color = Color(0.9973013, 0.8734352, 0.72215354, 1) light_energy = 0.0 shadow_enabled = true -[node name="OmniLight3D2" type="OmniLight3D" parent="."] +[node name="OmniLight3D2" type="OmniLight3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00014138222, 2.43762, 2.7512703) light_color = Color(0.9973013, 0.8734352, 0.72215354, 1) light_energy = 0.0 shadow_enabled = true -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(0.7260458, 0.59701693, -0.34121642, 0.64276195, -0.41287616, 0.6452829, 0.24436492, -0.6878258, -0.6835067, 6.874206, 4.957541, 1.7799606) +[node name="OmniLight3D4" type="OmniLight3D" parent="SubViewportContainer/SubViewport"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.91611, 1.4419059, 2.38809) +light_color = Color(0.99215686, 0.99215686, 0.99215686, 1) +light_energy = 0.086 +shadow_enabled = true + +[node name="OmniLight3D5" type="OmniLight3D" parent="SubViewportContainer/SubViewport"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.91611, 1.4419059, 1.3589917) +light_color = Color(0.99215686, 0.99215686, 0.99215686, 1) +light_energy = 0.086 +shadow_enabled = true + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewportContainer/SubViewport"] +transform = Transform3D(0.72604597, 0.5970169, -0.34121582, 0.6427621, -0.41287613, 0.64528304, 0.24436498, -0.68782574, -0.6835068, 6.874206, 4.957541, 1.7799606) light_color = Color(0, 0, 0, 1) -[node name="StaticBody3D" type="StaticBody3D" parent="."] +[node name="StaticBody3D" type="StaticBody3D" parent="SubViewportContainer/SubViewport"] -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="SubViewportContainer/SubViewport/StaticBody3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.1646729, -0.25610352, 1.5601196) shape = SubResource("BoxShape3D_gfayn") -[node name="Interactable" parent="." instance=ExtResource("3_u0nvw")] +[node name="Interactable" parent="SubViewportContainer/SubViewport" instance=ExtResource("3_u0nvw")] -[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactable"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="SubViewportContainer/SubViewport/Interactable"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.1487448, 1.3621653, -0.7917821) shape = SubResource("BoxShape3D_ui586") -[node name="DebugPrinter" type="Node" parent="."] +[node name="DebugPrinter" type="Node" parent="SubViewportContainer/SubViewport"] script = ExtResource("4_ui586") -[node name="Character" parent="." instance=ExtResource("4_tedjo")] +[node name="Character" parent="SubViewportContainer/SubViewport" instance=ExtResource("4_tedjo")] -[node name="Lever" parent="." instance=ExtResource("5_tedjo")] +[node name="Lever" parent="SubViewportContainer/SubViewport" instance=ExtResource("5_tedjo")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 1.884376, 1.4100053, 4.976951) -[node name="LidCrane" parent="." instance=ExtResource("6_oslft")] +[node name="LidCrane" parent="SubViewportContainer/SubViewport" instance=ExtResource("6_oslft")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 5.0008087) -[node name="Cieling" type="Node3D" parent="."] +[node name="Cieling" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 1.884376, 1.4100053, 4.976951) -[node name="MeshInstance3D" type="MeshInstance3D" parent="Cieling"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/Cieling"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.8011624, 1.3881333, 4.8832793) mesh = SubResource("BoxMesh_oslft") -[node name="back wall" type="Node3D" parent="."] +[node name="MeshInstance3D2" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/Cieling"] +transform = Transform3D(-4.371138e-08, -1, -8.742278e-08, 1, -4.371139e-08, 8.742278e-08, -8.742278e-08, -8.742278e-08, 1, -1.085567, 0.17431808, 3.1567752) +mesh = SubResource("BoxMesh_gcpng") + +[node name="back wall" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 1.884376, 1.4100053, 4.976951) -[node name="MeshInstance3D" type="MeshInstance3D" parent="back wall"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/back wall"] transform = Transform3D(1, -8.742278e-08, 8.742278e-08, 8.742278e-08, -4.371139e-08, -1, 8.742278e-08, 1, -4.371138e-08, 1.8011621, -0.67389727, 6.4336667) mesh = SubResource("BoxMesh_oslft") -[node name="SpotLight3D" type="SpotLight3D" parent="."] -transform = Transform3D(0.44974717, 0.47692466, -0.75516254, 0.36746177, 0.67182255, 0.64313793, 0.81406355, -0.5667428, 0.12689872, -1.7417114, 2.1152334, 4.1011653) +[node name="SpotLight3D" type="SpotLight3D" parent="SubViewportContainer/SubViewport"] +transform = Transform3D(0.44974717, 0.47692466, -0.75516254, 0.36746177, 0.67182255, 0.64313793, 0.81406355, -0.5667428, 0.1268987, -1.7417114, 2.1152334, 4.1011653) light_color = Color(0.87831414, 0.9912934, 0.9985295, 1) light_energy = 0.206 light_bake_mode = 1 @@ -155,14 +210,14 @@ spot_attenuation = 1.44 spot_angle = 80.73 spot_angle_attenuation = 2.828428 -[node name="MeshInstance3D" type="MeshInstance3D" parent="SpotLight3D"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/SpotLight3D"] transform = Transform3D(0.9999997, 5.9604645e-08, 2.9802322e-08, -2.9802322e-08, -9.685755e-08, -0.9999995, -5.9604645e-08, 0.99999964, 7.450581e-09, -0.01551342, 0.0023140907, 0.006446123) mesh = SubResource("CylinderMesh_sve1f") skeleton = NodePath("../../Fake lights") -[node name="Fake lights" type="Node3D" parent="."] +[node name="Fake lights" type="Node3D" parent="SubViewportContainer/SubViewport"] -[node name="OmniLight3D3" type="OmniLight3D" parent="."] +[node name="OmniLight3D3" type="OmniLight3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.4813757, 1.2506423, 4.327849) light_color = Color(1, 0.6068378, 0.4258487, 1) light_indirect_energy = 0.0 @@ -170,66 +225,76 @@ shadow_enabled = true omni_range = 11.183 omni_attenuation = 1.538 -[node name="AnimationPlayer" type="AnimationPlayer" parent="OmniLight3D3"] +[node name="AnimationPlayer" type="AnimationPlayer" parent="SubViewportContainer/SubViewport/OmniLight3D3"] libraries = { &"": SubResource("AnimationLibrary_dp7jk") } script = ExtResource("7_sve1f") -[node name="VoxelGI" type="VoxelGI" parent="."] +[node name="VoxelGI" type="VoxelGI" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3855438, 2.5112534, 2.3712463) size = Vector3(9.520233, 5.2458344, 7.907776) data = ExtResource("8_dp7jk") -[node name="TubeLight" type="Node3D" parent="."] +[node name="TubeLight" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.0993485, 1.5864359, 1.2863536) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 1.0000001, 0, 0, 0, 0) mesh = SubResource("CylinderMesh_k5i88") -[node name="TubeLight2" type="Node3D" parent="."] +[node name="TubeLight2" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.0993485, 1.5864359, 2.379497) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight2"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight2"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 1.0000001, 0, 0, 0, 0) mesh = SubResource("CylinderMesh_k5i88") -[node name="TubeLight3" type="Node3D" parent="."] +[node name="TubeLight3" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.881829, 1.3714095, 2.238455) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight3"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight3"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 0.41135335, 0, 0, 0, 0.31269455) mesh = SubResource("CylinderMesh_k5i88") -[node name="TubeLight4" type="Node3D" parent="."] +[node name="TubeLight4" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.881829, 1.3714095, 1.2320452) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight4"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight4"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 0.41135335, 0, 0, 0, 0.31269455) mesh = SubResource("CylinderMesh_k5i88") -[node name="TubeLight5" type="Node3D" parent="."] +[node name="TubeLight5" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.881829, 1.3714095, 0.24469495) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight5"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight5"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 0.41135335, 0, 0, 0, 0.31269455) mesh = SubResource("CylinderMesh_k5i88") -[node name="TubeLight6" type="Node3D" parent="."] +[node name="TubeLight6" type="Node3D" parent="SubViewportContainer/SubViewport"] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2.172572, 1.6270136, 4.6471157) -[node name="MeshInstance3D" type="MeshInstance3D" parent="TubeLight6"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/TubeLight6"] transform = Transform3D(1, 0, 0, 0, 0, -1.0000001, 0, 0.41135335, 0, 0, 0, 0.23260427) mesh = SubResource("CylinderMesh_k5i88") -[node name="FogVolume" type="FogVolume" parent="."] +[node name="FogVolume" type="FogVolume" parent="SubViewportContainer/SubViewport"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4094696, 1.0683594, 2.2607956) size = Vector3(9.70578, 4.1367188, 8.059006) material = SubResource("FogMaterial_dp7jk") -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewportContainer/SubViewport"] environment = SubResource("Environment_dp7jk") -[connection signal="on_hit" from="Interactable" to="DebugPrinter" method="_on_interactable_on_hit"] -[connection signal="changed" from="Lever" to="LidCrane" method="set_grab"] +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_gcpng") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("ViewportTexture_dp7jk") + +[connection signal="on_hit" from="SubViewportContainer/SubViewport/Interactable" to="SubViewportContainer/SubViewport/DebugPrinter" method="_on_interactable_on_hit"] +[connection signal="changed" from="SubViewportContainer/SubViewport/Lever" to="SubViewportContainer/SubViewport/LidCrane" method="set_grab"] diff --git a/scenes/custom_render.gd b/scenes/custom_render.gd new file mode 100644 index 0000000..c3b3b92 --- /dev/null +++ b/scenes/custom_render.gd @@ -0,0 +1 @@ +extends SubViewportContainer diff --git a/scenes/custom_render.gd.uid b/scenes/custom_render.gd.uid new file mode 100644 index 0000000..903efdf --- /dev/null +++ b/scenes/custom_render.gd.uid @@ -0,0 +1 @@ +uid://o17v5m75ew03 diff --git a/scenes/main_render.gdshader b/scenes/main_render.gdshader new file mode 100644 index 0000000..13f0669 --- /dev/null +++ b/scenes/main_render.gdshader @@ -0,0 +1,35 @@ +shader_type canvas_item; + +uniform float color_steps:hint_range(1.0, 255.0, 1.0); +uniform float color_min:hint_range(0.0, 1.0, 0.01) = 0; +uniform float color_max:hint_range(0.0, 1.0, 0.01) = 1; +uniform sampler2D color_curve; + +void vertex() { + // Called for every vertex the material is visible on. +} + +void fragment() { + vec2 texSize = vec2(textureSize(TEXTURE,0)); // For performance reasons, this function should be avoided as it always performs a full texture read. When possible, you should pass the texture size as a uniform instead. + texSize = texSize / 4.; + ivec2 intUv = ivec2(texSize * UV); + vec2 flooredUv = vec2(intUv) / texSize; + vec3 fullColor = texture(TEXTURE,flooredUv).rgb; + //vec3 strechedColor = (fullColor - color_min) / color_max; + vec3 strechedColor = vec3( + texture(color_curve,vec2(fullColor.r,0)).r, + texture(color_curve,vec2(fullColor.g,0)).r, + texture(color_curve,vec2(fullColor.b,0)).r); + vec3 scaledColor = strechedColor * color_steps; + vec3 roundColor = round(scaledColor); + vec3 backScaledColor = roundColor / color_steps; + COLOR = vec4(backScaledColor,1); + //COLOR = vec4(flooredUv,0,1); + //COLOR = vec4(vec3(float(textureQueryLevels(TEXTURE)/1)),1); + //COLOR = vec4(1,0,0,1); +} + +//void light() { +// // Called for every pixel for every light affecting the CanvasItem. +// // Uncomment to replace the default light processing function with this one. +//} diff --git a/scenes/main_render.gdshader.uid b/scenes/main_render.gdshader.uid new file mode 100644 index 0000000..ea76abe --- /dev/null +++ b/scenes/main_render.gdshader.uid @@ -0,0 +1 @@ +uid://bf2nxtrto5u5r