The eyes of the slutch...

This commit is contained in:
Rob Kelly 2025-04-18 12:19:30 -06:00
parent 4b7eefba74
commit c33efdf9ce
21 changed files with 705 additions and 71 deletions

BIN
asset_dev/beast/slutch/FaceNodule.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/npc/slutch_beast/face_nodule_C.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brxgmw1unyfua"
path="res://.godot/imported/face_nodule_C.png-f0456555c8a80df72a1ad3eec879d8ed.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/npc/slutch_beast/face_nodule_C.png"
dest_files=["res://.godot/imported/face_nodule_C.png-f0456555c8a80df72a1ad3eec879d8ed.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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=0

BIN
assets/npc/slutch_beast/face_nodule_E.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db5pw3nw0h2wy"
path="res://.godot/imported/face_nodule_E.png-11b302d9c67a4f0f49ba07c23dad2b42.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/npc/slutch_beast/face_nodule_E.png"
dest_files=["res://.godot/imported/face_nodule_E.png-11b302d9c67a4f0f49ba07c23dad2b42.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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=0

Binary file not shown.

View File

@ -8,7 +8,14 @@
{
"name":"Scene",
"nodes":[
0
0,
1,
2,
3,
4,
5,
6,
7
]
}
],
@ -16,6 +23,69 @@
{
"mesh":0,
"name":"Slutch"
},
{
"mesh":1,
"name":"FaceNodule",
"translation":[
-0.25755488872528076,
1.3063514232635498,
-0.29665297269821167
]
},
{
"mesh":2,
"name":"Nodule.001",
"translation":[
0.3235247731208801,
0.9696184992790222,
0.08157177269458771
]
},
{
"mesh":3,
"name":"Nodule.002",
"translation":[
-0.025791287422180176,
0.6830007433891296,
0.010160116478800774
]
},
{
"mesh":4,
"name":"Nodule.003",
"translation":[
-0.41702041029930115,
0.8321946859359741,
0.32163435220718384
]
},
{
"mesh":5,
"name":"Nodule.004",
"translation":[
0.5003674030303955,
1.2441285848617554,
-0.20342206954956055
]
},
{
"mesh":6,
"name":"Nodule.005",
"translation":[
0.3826490342617035,
1.4056977033615112,
0.16940319538116455
]
},
{
"mesh":7,
"name":"Nodule",
"translation":[
0.4212178587913513,
0.9415113925933838,
-0.502720057964325
]
}
],
"meshes":[
@ -31,13 +101,104 @@
"indices":3
}
]
},
{
"name":"FaceNodule",
"primitives":[
{
"attributes":{
"POSITION":4,
"NORMAL":5,
"TEXCOORD_0":6
},
"indices":7
}
]
},
{
"name":"Nodule.001",
"primitives":[
{
"attributes":{
"POSITION":8,
"NORMAL":9,
"TEXCOORD_0":10
},
"indices":11
}
]
},
{
"name":"Nodule.002",
"primitives":[
{
"attributes":{
"POSITION":12,
"NORMAL":13,
"TEXCOORD_0":14
},
"indices":15
}
]
},
{
"name":"Nodule.003",
"primitives":[
{
"attributes":{
"POSITION":16,
"NORMAL":17,
"TEXCOORD_0":18
},
"indices":19
}
]
},
{
"name":"Nodule.004",
"primitives":[
{
"attributes":{
"POSITION":20,
"NORMAL":21,
"TEXCOORD_0":22
},
"indices":23
}
]
},
{
"name":"Nodule.005",
"primitives":[
{
"attributes":{
"POSITION":24,
"NORMAL":25,
"TEXCOORD_0":26
},
"indices":27
}
]
},
{
"name":"Nodule",
"primitives":[
{
"attributes":{
"POSITION":28,
"NORMAL":29,
"TEXCOORD_0":30
},
"indices":31
}
]
}
],
"accessors":[
{
"bufferView":0,
"componentType":5126,
"count":312,
"count":326,
"max":[
1.618986964225769,
2.0478501319885254,
@ -53,51 +214,457 @@
{
"bufferView":1,
"componentType":5126,
"count":312,
"count":326,
"type":"VEC3"
},
{
"bufferView":2,
"componentType":5126,
"count":312,
"count":326,
"type":"VEC2"
},
{
"bufferView":3,
"componentType":5123,
"count":324,
"count":330,
"type":"SCALAR"
},
{
"bufferView":4,
"componentType":5126,
"count":174,
"max":[
0.23762282729148865,
0.20167696475982666,
0.18547290563583374
],
"min":[
-0.2717793583869934,
-0.3451462388038635,
-0.32205337285995483
],
"type":"VEC3"
},
{
"bufferView":5,
"componentType":5126,
"count":174,
"type":"VEC3"
},
{
"bufferView":6,
"componentType":5126,
"count":174,
"type":"VEC2"
},
{
"bufferView":7,
"componentType":5123,
"count":180,
"type":"SCALAR"
},
{
"bufferView":8,
"componentType":5126,
"count":60,
"max":[
0.2022053599357605,
0.16918832063674927,
0.19656305015087128
],
"min":[
-0.2022053450345993,
-0.16918843984603882,
-0.19656309485435486
],
"type":"VEC3"
},
{
"bufferView":9,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":10,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":11,
"componentType":5123,
"count":60,
"type":"SCALAR"
},
{
"bufferView":12,
"componentType":5126,
"count":60,
"max":[
0.27359873056411743,
0.26625341176986694,
0.23749792575836182
],
"min":[
-0.27359873056411743,
-0.2662535011768341,
-0.23749792575836182
],
"type":"VEC3"
},
{
"bufferView":13,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":14,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":15,
"componentType":5123,
"count":60,
"type":"SCALAR"
},
{
"bufferView":16,
"componentType":5126,
"count":60,
"max":[
0.16585636138916016,
0.1689516305923462,
0.17375069856643677
],
"min":[
-0.16585639119148254,
-0.16895174980163574,
-0.17375071346759796
],
"type":"VEC3"
},
{
"bufferView":17,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":18,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":19,
"componentType":5123,
"count":60,
"type":"SCALAR"
},
{
"bufferView":20,
"componentType":5126,
"count":60,
"max":[
0.07109105587005615,
0.062039852142333984,
0.06739750504493713
],
"min":[
-0.07109105587005615,
-0.062039852142333984,
-0.06739750504493713
],
"type":"VEC3"
},
{
"bufferView":21,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":22,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":23,
"componentType":5123,
"count":60,
"type":"SCALAR"
},
{
"bufferView":24,
"componentType":5126,
"count":60,
"max":[
0.0909624993801117,
0.07769286632537842,
0.08200663328170776
],
"min":[
-0.09096261858940125,
-0.07769310474395752,
-0.08200664073228836
],
"type":"VEC3"
},
{
"bufferView":25,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":26,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":27,
"componentType":5123,
"count":60,
"type":"SCALAR"
},
{
"bufferView":28,
"componentType":5126,
"count":60,
"max":[
0.1606079339981079,
0.14889538288116455,
0.1551172137260437
],
"min":[
-0.1606079339981079,
-0.14889538288116455,
-0.15511709451675415
],
"type":"VEC3"
},
{
"bufferView":29,
"componentType":5126,
"count":60,
"type":"VEC3"
},
{
"bufferView":30,
"componentType":5126,
"count":60,
"type":"VEC2"
},
{
"bufferView":31,
"componentType":5123,
"count":60,
"type":"SCALAR"
}
],
"bufferViews":[
{
"buffer":0,
"byteLength":3744,
"byteLength":3912,
"byteOffset":0,
"target":34962
},
{
"buffer":0,
"byteLength":3744,
"byteOffset":3744,
"byteLength":3912,
"byteOffset":3912,
"target":34962
},
{
"buffer":0,
"byteLength":2496,
"byteOffset":7488,
"byteLength":2608,
"byteOffset":7824,
"target":34962
},
{
"buffer":0,
"byteLength":648,
"byteOffset":9984,
"byteLength":660,
"byteOffset":10432,
"target":34963
},
{
"buffer":0,
"byteLength":2088,
"byteOffset":11092,
"target":34962
},
{
"buffer":0,
"byteLength":2088,
"byteOffset":13180,
"target":34962
},
{
"buffer":0,
"byteLength":1392,
"byteOffset":15268,
"target":34962
},
{
"buffer":0,
"byteLength":360,
"byteOffset":16660,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":17020,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":17740,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":18460,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":18940,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":19060,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":19780,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":20500,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":20980,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":21100,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":21820,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":22540,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":23020,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":23140,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":23860,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":24580,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":25060,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":25180,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":25900,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":26620,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":27100,
"target":34963
},
{
"buffer":0,
"byteLength":720,
"byteOffset":27220,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":27940,
"target":34962
},
{
"buffer":0,
"byteLength":480,
"byteOffset":28660,
"target":34962
},
{
"buffer":0,
"byteLength":120,
"byteOffset":29140,
"target":34963
}
],
"buffers":[
{
"byteLength":10632,
"byteLength":29260,
"uri":"slutch.bin"
}
]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=21 format=3 uid="uid://bov4ok76woyc"]
[ext_resource type="PackedScene" uid="uid://crydi5cjgfwe5" path="res://levels/ghost_ship/ghost_ship_level.tscn" id="1_aj2m7"]
[ext_resource type="Environment" uid="uid://c6xficnihju5t" path="res://levels/ghost_ship/debug_environment.tres" id="1_h081y"]
[ext_resource type="Environment" uid="uid://bkvij3ljl5ox3" path="res://levels/ghost_ship/environment_3.tres" id="1_h081y"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_0ef5p"]
[ext_resource type="PackedScene" uid="uid://d1kacn4b60ucy" path="res://src/ui/post_processing.tscn" id="3_o7mxe"]
[ext_resource type="AudioStream" uid="uid://dx4d8a3mgpws" path="res://assets/sfx/ambient/drone_loop.wav" id="5_ejh2c"]

View File

@ -92,6 +92,7 @@ shader_parameter/jitter_time_scale = 0.1
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i4yi7"]
albedo_color = Color(0.243137, 0.231373, 0.219608, 1)

View File

@ -125,6 +125,7 @@ shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_qjnj2"]
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)

View File

@ -96,6 +96,7 @@ shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_x2vho"]
data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
@ -164,6 +165,7 @@ shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="ArrayMesh" id="ArrayMesh_r07l4"]
_surfaces = [{
@ -218,6 +220,7 @@ shader_parameter/jitter_magnitude = 0.0
shader_parameter/jitter_time_scale = 0.1
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[node name="SignalTest" type="Node3D"]

View File

@ -53,6 +53,7 @@ shader_parameter/jitter_time_scale = 0.2
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
shader_parameter/overlay_emission_scale = 1.0
[sub_resource type="CapsuleMesh" id="CapsuleMesh_k8gi4"]
material = SubResource("ShaderMaterial_iy8jq")

View File

@ -35,6 +35,11 @@ group_uniforms inflation;
uniform highp float vertex_inflation = 0.0;
uniform highp float inflation_pixellation = 10.0;
group_uniforms overlay;
uniform sampler2D overlay_albedo: hint_default_transparent, filter_nearest;
uniform sampler2D overlay_emission: hint_default_transparent, filter_nearest;
uniform float overlay_emission_scale = 1.0;
void vertex() {
float mixer = VERTEX.x + 0.553 * VERTEX.z + 1.618 * VERTEX.y;
float local_time = floor(TIME * jitter_time_scale * time_pixellation) / time_pixellation;
@ -61,10 +66,17 @@ void fragment() {
float value = texture(gunk_noise, uvt).r;
vec3 color = mix(color_1, color_2, value);
vec3 emission = (1.0 - value) * emission_color * emission_strength;
// overlay texture
vec4 overlay_color = texture(overlay_albedo, UV);
color = mix(color, overlay_color.rgb, overlay_color.a);
vec4 overlay_em = texture(overlay_emission, UV);
emission = mix(emission, overlay_em.rgb * overlay_emission_scale, overlay_em.a);
ALBEDO = color.rgb;
ROUGHNESS = value * roughness;
EMISSION = (1.0 - value) * emission_color * emission_strength;
EMISSION = emission;
SPECULAR = 0.5 * inversesqrt(specular_contribution);
NORMAL_MAP = texture(gunk_normal_map, uvt).xyz;

View File

@ -226,7 +226,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7"
script = ExtResource("11_mbqcc")
mean_time = 4.0
st_dev_time = 0.6
wait_time = 3.81954
wait_time = 3.41713
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"]
@ -272,7 +272,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
script = ExtResource("11_mbqcc")
mean_time = 5.0
st_dev_time = 1.0
wait_time = 6.2286
wait_time = 4.96224
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"]

Binary file not shown.

View File

@ -1,62 +1,34 @@
[gd_scene load_steps=11 format=3 uid="uid://cvq81xegbwv87"]
[gd_scene load_steps=6 format=3 uid="uid://cvq81xegbwv87"]
[ext_resource type="PackedScene" uid="uid://uj7nf8db7sbv" path="res://assets/npc/slutch_beast/slutch.gltf" id="1_ctp72"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="2_htnl6"]
[ext_resource type="Script" uid="uid://dhrky2viceb82" path="res://src/world/grunk_beast/slutch_beast/slutch_beast.gd" id="2_pm58j"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="3_pm58j"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="4_r4p65"]
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_faau1"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("4_r4p65")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_3gbao"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("4_r4p65")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
frequency = 0.0703
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_wffas"]
width = 32
height = 32
depth = 128
noise = SubResource("FastNoiseLite_7fplw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wlv1q"]
resource_local_to_scene = true
render_priority = 0
shader = ExtResource("2_htnl6")
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
shader_parameter/pixellation = 128.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.7
shader_parameter/emission_strength = 0.0
shader_parameter/uv_scale = Vector2(4, 4)
shader_parameter/time_scale = 2.0
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = ExtResource("3_pm58j")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_faau1")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_3gbao")
shader_parameter/jitter_magnitude = 0.6
shader_parameter/jitter_time_scale = 0.2
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_wffas")
shader_parameter/vertex_inflation = 0.0
shader_parameter/inflation_pixellation = 10.0
[ext_resource type="Material" uid="uid://cteakeq7vpx3s" path="res://src/world/grunk_beast/slutch_beast/slutch.material" id="3_htnl6"]
[ext_resource type="Material" uid="uid://c0oc3q305hcsc" path="res://src/world/grunk_beast/slutch_beast/slutch_nodule.material" id="4_pm58j"]
[ext_resource type="Material" uid="uid://dtbobpttpq5ap" path="res://src/world/grunk_beast/slutch_beast/face_nodule.material" id="4_r4p65"]
[node name="SlutchBeast" instance=ExtResource("1_ctp72")]
script = ExtResource("2_pm58j")
[node name="Slutch" parent="." index="0"]
surface_material_override/0 = SubResource("ShaderMaterial_wlv1q")
surface_material_override/0 = ExtResource("3_htnl6")
[node name="FaceNodule" parent="." index="1"]
surface_material_override/0 = ExtResource("4_r4p65")
[node name="Nodule_001" parent="." index="2"]
surface_material_override/0 = ExtResource("4_pm58j")
[node name="Nodule_002" parent="." index="3"]
surface_material_override/0 = ExtResource("4_pm58j")
[node name="Nodule_003" parent="." index="4"]
surface_material_override/0 = ExtResource("4_pm58j")
[node name="Nodule_004" parent="." index="5"]
surface_material_override/0 = ExtResource("4_pm58j")
[node name="Nodule_005" parent="." index="6"]
surface_material_override/0 = ExtResource("4_pm58j")
[node name="Nodule" parent="." index="7"]
surface_material_override/0 = ExtResource("4_pm58j")