GunkBody instantiates its own gunk material

This commit is contained in:
Rob Kelly 2025-03-09 22:28:24 -06:00
parent 530131084e
commit 3c04a21b0d
5 changed files with 28 additions and 157 deletions

View File

@ -36,7 +36,7 @@ seamless = true
seamless_blend_skirt = 0.5 seamless_blend_skirt = 0.5
noise = ExtResource("6_3kphg") noise = ExtResource("6_3kphg")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_p11ap"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ruwlj"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = 0 render_priority = 0
shader = ExtResource("5_1njh5") shader = ExtResource("5_1njh5")
@ -57,7 +57,6 @@ shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"]
resource_local_to_scene = true resource_local_to_scene = true
next_pass = SubResource("ShaderMaterial_p11ap")
albedo_texture = ExtResource("3_1chi6") albedo_texture = ExtResource("3_1chi6")
metallic = 1.0 metallic = 1.0
metallic_texture = ExtResource("4_3ryvr") metallic_texture = ExtResource("4_3ryvr")
@ -101,7 +100,7 @@ shadow_mesh = SubResource("ArrayMesh_7kdnt")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_yvipw"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_yvipw"]
data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5) data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2pd8h"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_0idgf"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = 0 render_priority = 0
shader = ExtResource("5_1njh5") shader = ExtResource("5_1njh5")
@ -122,7 +121,6 @@ shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"]
resource_local_to_scene = true resource_local_to_scene = true
next_pass = SubResource("ShaderMaterial_2pd8h")
albedo_texture = ExtResource("9_p11ap") albedo_texture = ExtResource("9_p11ap")
metallic = 1.0 metallic = 1.0
metallic_texture = ExtResource("10_d1yty") metallic_texture = ExtResource("10_d1yty")
@ -182,7 +180,7 @@ size = Vector2(1.5, 0.5)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_3kphg"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_3kphg"]
data = PackedVector3Array(0.75, -0.25, 0, -0.75, -0.25, 0, 0.75, 0.25, 0, -0.75, -0.25, 0, -0.75, 0.25, 0, 0.75, 0.25, 0) data = PackedVector3Array(0.75, -0.25, 0, -0.75, -0.25, 0, 0.75, 0.25, 0, -0.75, -0.25, 0, -0.75, 0.25, 0, 0.75, 0.25, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v8y1j"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_fll4m"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = 0 render_priority = 0
shader = ExtResource("5_1njh5") shader = ExtResource("5_1njh5")
@ -203,7 +201,6 @@ shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"]
resource_local_to_scene = true resource_local_to_scene = true
next_pass = SubResource("ShaderMaterial_v8y1j")
albedo_texture = ExtResource("13_fll4m") albedo_texture = ExtResource("13_fll4m")
metallic = 1.0 metallic = 1.0
metallic_texture = ExtResource("14_dly4i") metallic_texture = ExtResource("14_dly4i")
@ -246,7 +243,7 @@ shadow_mesh = SubResource("ArrayMesh_d8x4t")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p11ap"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p11ap"]
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) 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)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_d1yty"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_dly4i"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = 0 render_priority = 0
shader = ExtResource("5_1njh5") shader = ExtResource("5_1njh5")
@ -267,7 +264,6 @@ shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"]
resource_local_to_scene = true resource_local_to_scene = true
next_pass = SubResource("ShaderMaterial_d1yty")
albedo_texture = ExtResource("13_fll4m") albedo_texture = ExtResource("13_fll4m")
metallic = 1.0 metallic = 1.0
metallic_texture = ExtResource("14_dly4i") metallic_texture = ExtResource("14_dly4i")
@ -302,6 +298,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12)
[node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")] [node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")]
source_gunk_material = SubResource("ShaderMaterial_ruwlj")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"]
mesh = SubResource("ArrayMesh_ruwlj") mesh = SubResource("ArrayMesh_ruwlj")
@ -312,6 +309,7 @@ shape = SubResource("ConcavePolygonShape3D_yvipw")
[node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")] [node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")]
transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 3, 0) transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 3, 0)
source_gunk_material = SubResource("ShaderMaterial_0idgf")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"]
mesh = SubResource("ArrayMesh_0idgf") mesh = SubResource("ArrayMesh_0idgf")
@ -387,6 +385,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.5)
[node name="LeftWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")] [node name="LeftWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -3, 1.5, 0) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -3, 1.5, 0)
mask_dim = 64 mask_dim = 64
source_gunk_material = SubResource("ShaderMaterial_fll4m")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/LeftWall"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/LeftWall"]
mesh = SubResource("ArrayMesh_1njh5") mesh = SubResource("ArrayMesh_1njh5")
@ -397,6 +396,7 @@ shape = SubResource("ConcavePolygonShape3D_p11ap")
[node name="RightWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")] [node name="RightWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 3, 1.5, 0) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 3, 1.5, 0)
mask_dim = 64 mask_dim = 64
source_gunk_material = SubResource("ShaderMaterial_dly4i")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/RightWall"] [node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/RightWall"]
mesh = SubResource("ArrayMesh_fll4m") mesh = SubResource("ArrayMesh_fll4m")

File diff suppressed because one or more lines are too long

View File

@ -1,55 +1,15 @@
[gd_scene load_steps=27 format=4 uid="uid://b6eg8t04rkh0c"] [gd_scene load_steps=21 format=4 uid="uid://b6eg8t04rkh0c"]
[ext_resource type="Script" uid="uid://bkmn5m47mt1gh" path="res://src/props/wall_switch/wall_switch.gd" id="2_kfvqd"] [ext_resource type="Script" uid="uid://bkmn5m47mt1gh" path="res://src/props/wall_switch/wall_switch.gd" id="2_kfvqd"]
[ext_resource type="Texture2D" uid="uid://1wjcyqynwlb6" path="res://assets/props/wall_switch/wall_switch_C.png" id="2_vufqs"] [ext_resource type="Texture2D" uid="uid://1wjcyqynwlb6" path="res://assets/props/wall_switch/wall_switch_C.png" id="2_vufqs"]
[ext_resource type="PackedScene" uid="uid://d0yq007888oq5" path="res://assets/props/wall_switch/wall_switch.gltf" id="2_whafo"] [ext_resource type="PackedScene" uid="uid://d0yq007888oq5" path="res://assets/props/wall_switch/wall_switch.gltf" id="2_whafo"]
[ext_resource type="Texture2D" uid="uid://bur4dtt4irwgd" path="res://assets/props/wall_switch/wall_switch_M.png" id="3_3fhmv"] [ext_resource type="Texture2D" uid="uid://bur4dtt4irwgd" path="res://assets/props/wall_switch/wall_switch_M.png" id="3_3fhmv"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="4_km3i7"]
[ext_resource type="Texture2D" uid="uid://ddve6jcfcuthx" path="res://assets/props/wall_switch/wall_switch_N.png" id="4_pg3hp"] [ext_resource type="Texture2D" uid="uid://ddve6jcfcuthx" path="res://assets/props/wall_switch/wall_switch_N.png" id="4_pg3hp"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="5_382wj"]
[ext_resource type="Texture2D" uid="uid://rq5e0a3sco88" path="res://assets/props/wall_switch/wall_switch_R.png" id="5_555wb"] [ext_resource type="Texture2D" uid="uid://rq5e0a3sco88" path="res://assets/props/wall_switch/wall_switch_R.png" id="5_555wb"]
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="7_3ib1l"] [ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="7_3ib1l"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="10_qw6jt"] [ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="10_qw6jt"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_ow0bp"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jtkkw"]
load_path = "res://.godot/imported/debug_mask.png-fd2bc783338ed9439fe81a4eef9d86da.s3tc.ctex"
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_d70or"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("5_382wj")
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_0ksu8"]
width = 256
height = 256
depth = 32
seamless = true
seamless_blend_skirt = 0.5
noise = ExtResource("5_382wj")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_6aabu"]
render_priority = 0
shader = ExtResource("4_km3i7")
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 = 32.0
shader_parameter/time_pixellation = 30.0
shader_parameter/roughness = 0.15
shader_parameter/specular_contribution = 0.8
shader_parameter/emission_strength = 0.02
shader_parameter/uv_scale = Vector2(2, 2)
shader_parameter/time_scale = 0.2
shader_parameter/edge_bleed = 0.25
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_ow0bp")
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_d70or")
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_0ksu8")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7shuc"]
next_pass = SubResource("ShaderMaterial_6aabu")
albedo_texture = ExtResource("2_vufqs") albedo_texture = ExtResource("2_vufqs")
metallic = 1.0 metallic = 1.0
metallic_texture = ExtResource("3_3fhmv") metallic_texture = ExtResource("3_3fhmv")
@ -67,7 +27,7 @@ _surfaces = [{
"format": 34359745559, "format": 34359745559,
"index_count": 252, "index_count": 252,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADQAMAA8ADQAPABAAEQASABMAEgARABQAEgAUABUAFgAXABgAFgAZABcAGgAXABkAGwAXABoAGgAZABwAGwAdABcAHAAZAB4AHwAdABsAHAAeAB8AHwAeAB0AIAAhACIAIAAjACEAJAAlACYAJAAnACUAKAApACoAKAArACkALAAtAC4ALAAvAC0AMAAxADIAMAAzADEANAA1ADYANAA3ADUANAA4ADcANAA5ADgAOQA6ADgAOwA8AD0AOwA+ADwAOwA/AD4AOwBAAD8AQQBCAEMAQQBEAEIAQQBFAEQAQQBGAEUARgBHAEUASABJAEoASABLAEkASABMAEsASABNAEwATgBPAFAAUQBOAFAAUQBQAFIAUwBUAFUAUwBWAFQAVwBYAFkAVwBaAFgAWwBcAF0AWwBeAFwAXwBgAGEAXwBiAGAAYwBkAGUAYwBmAGQAYwBnAGYAYwBoAGcAaQBqAGsAaQBsAGoAbQBuAG8AbQBwAG4AbQBxAHAAbQByAHEAcwB0AHUAcwB2AHQAdwB4AHkAegB3AHkAegB5AHsAfAB9AH4AfAB/AH0AgACBAIIAgACDAIEAhACFAIYAhACHAIUAiACJAIoAiACLAIkA"), "index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADQAMAA8ADQAPABAAEQASABMAEgARABQAEgAUABUAFgAXABgAFgAZABcAGgAXABkAGwAXABoAGgAZABwAGwAdABcAHAAZAB4AHwAdABsAHAAeAB8AHwAeAB0AIAAhACIAIAAjACEAJAAlACYAJAAnACUAKAApACoAKAArACkALAAtAC4ALAAvAC0AMAAxADIAMAAzADEANAA1ADYANAA3ADUANAA4ADcANAA5ADgAOQA6ADgAOwA8AD0AOwA+ADwAOwA/AD4AOwBAAD8AQQBCAEMAQQBEAEIAQQBFAEQAQQBGAEUARgBHAEUASABJAEoASABLAEkASABMAEsASABNAEwATgBPAFAAUQBOAFAAUQBQAFIAUwBUAFUAUwBWAFQAVwBYAFkAVwBaAFgAWwBcAF0AWwBeAFwAXwBgAGEAXwBiAGAAYwBkAGUAYwBmAGQAYwBnAGYAYwBoAGcAaQBqAGsAaQBsAGoAbQBuAG8AbQBwAG4AbQBxAHAAbQByAHEAcwB0AHUAcwB2AHQAdwB4AHkAegB3AHkAegB5AHsAfAB9AH4AfAB/AH0AgACBAIIAgACDAIEAhACFAIYAhACHAIUAiACJAIoAiACLAIkA"),
"material": SubResource("StandardMaterial3D_7shuc"), "material": SubResource("StandardMaterial3D_jtkkw"),
"primitive": 3, "primitive": 3,
"skin_data": PackedByteArray("AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAA="), "skin_data": PackedByteArray("AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAA="),
"uv_scale": Vector4(0, 0, 0, 0), "uv_scale": Vector4(0, 0, 0, 0),

View File

@ -15,6 +15,9 @@ const CLEAR_TOTAL_EPSILON := 1
@export var mesh_instance: MeshInstance3D @export var mesh_instance: MeshInstance3D
@export var initial_mask: Texture @export var initial_mask: Texture
@export var source_gunk_material: ShaderMaterial
@export var material_surface: int = 0
var meshtool := MeshDataTool.new() var meshtool := MeshDataTool.new()
var _polyline_buffer: Array[Vector2] = [] var _polyline_buffer: Array[Vector2] = []
@ -49,13 +52,20 @@ func _ready() -> void:
assert(mesh_instance, "GunkBody %s has no associated mesh!" % str(self)) assert(mesh_instance, "GunkBody %s has no associated mesh!" % str(self))
mask_viewport.size = Vector2(mask_dim, mask_dim) mask_viewport.size = Vector2(mask_dim, mask_dim)
var gunk_mat: ShaderMaterial = mesh_instance.mesh.surface_get_material(0).next_pass
gunk_mat.set_shader_parameter("gunk_mask", mask_viewport.get_texture()) # Create a new instance of the gunk material
meshtool.create_from_surface(mesh_instance.mesh as ArrayMesh, 0) var mat_instance: ShaderMaterial = source_gunk_material.duplicate()
# Set material gunk mask to our mask viewport texture
mat_instance.set_shader_parameter("gunk_mask", mask_viewport.get_texture())
# Set gunk material as the next-pass material of the base surface material
mesh_instance.mesh.surface_get_material(material_surface).next_pass = mat_instance
if initial_mask: if initial_mask:
mask_texture.texture = initial_mask mask_texture.texture = initial_mask
# Initialize meshtool
meshtool.create_from_surface(mesh_instance.mesh as ArrayMesh, 0)
_thread = Thread.new() _thread = Thread.new()
_thread.start(_async_compute_clear_total) _thread.start(_async_compute_clear_total)

View File

@ -1,11 +1,13 @@
[gd_scene load_steps=4 format=3 uid="uid://c2omlx4ptrc01"] [gd_scene load_steps=5 format=3 uid="uid://c2omlx4ptrc01"]
[ext_resource type="Script" uid="uid://hbl5u20wlwr5" path="res://src/world/gunk_body/gunk_body.gd" id="1_qqbpr"] [ext_resource type="Script" uid="uid://hbl5u20wlwr5" path="res://src/world/gunk_body/gunk_body.gd" id="1_qqbpr"]
[ext_resource type="Material" uid="uid://kkyg6jrp3d53" path="res://assets/materials/gunk_material.tres" id="2_hrldx"]
[ext_resource type="Script" uid="uid://bom5qysgfvap1" path="res://src/world/gunk_body/draw_controller.gd" id="2_kkcjw"] [ext_resource type="Script" uid="uid://bom5qysgfvap1" path="res://src/world/gunk_body/draw_controller.gd" id="2_kkcjw"]
[ext_resource type="Script" uid="uid://ba7480ara8eo" path="res://levels/sandbox/debug_draw.gd" id="3_m8wx4"] [ext_resource type="Script" uid="uid://ba7480ara8eo" path="res://levels/sandbox/debug_draw.gd" id="3_m8wx4"]
[node name="GunkBody" type="StaticBody3D"] [node name="GunkBody" type="StaticBody3D"]
script = ExtResource("1_qqbpr") script = ExtResource("1_qqbpr")
source_gunk_material = ExtResource("2_hrldx")
[node name="MaskViewport" type="SubViewport" parent="."] [node name="MaskViewport" type="SubViewport" parent="."]
unique_name_in_owner = true unique_name_in_owner = true