Files
CosmicClash/Game/scenes/arena_02.tscn
T
Josh Creek 6f5ce488a9 feat: lit particle shader for nebula dust weather effect
Replace NebulaDust's flat unshaded glow material with a custom
ShaderMaterial: a fake per-pixel puff normal on the billboarded quad
feeds a light() override so motes catch the directional light and a
nebula-core color bias, alpha gets a depth-texture soft-particle fade
so motes no longer hard-clip through boundary/decoration geometry,
and a per-particle hash adds subtle sparkle.
2026-08-04 07:42:34 +01:00

164 lines
6.3 KiB
Plaintext

[gd_scene load_steps=16 format=3]
[ext_resource type="Script" path="res://scripts/arena.gd" id="1_iywne"]
[ext_resource type="PackedScene" path="res://objects/arena_boundary.tscn" id="2_bndry"]
[ext_resource type="PackedScene" uid="uid://cofdcxo5170rs" path="res://objects/goal.tscn" id="6_p57ef"]
[ext_resource type="Texture2D" path="res://assets/textures/sky_nebula.png" id="7_nebula"]
[ext_resource type="PackedScene" path="res://assets/models/nebula_station.glb" id="8_station"]
[ext_resource type="PackedScene" path="res://assets/models/nebula_debris.glb" id="9_debris"]
[ext_resource type="Texture2D" path="res://assets/textures/particle_glow.png" id="10_dust"]
[ext_resource type="PackedScene" path="res://assets/models/nebula_planet.glb" id="11_planet"]
[ext_resource type="Shader" path="res://shaders/nebula_dust.gdshader" id="12_dust_shader"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_nebula"]
panorama = ExtResource("7_nebula")
[sub_resource type="Sky" id="Sky_nebula"]
sky_material = SubResource("PanoramaSkyMaterial_nebula")
[sub_resource type="Environment" id="Environment_nebula"]
background_mode = 2
sky = SubResource("Sky_nebula")
sdfgi_enabled = true
ambient_light_source = 2
ambient_light_color = Color(0.65, 0.35, 0.75, 1)
ambient_light_energy = 0.45
glow_enabled = true
glow_levels/1 = 0.0
glow_levels/2 = 0.4
glow_levels/3 = 0.8
glow_levels/4 = 0.6
glow_levels/5 = 0.2
glow_intensity = 0.8
glow_strength = 1.0
glow_bloom = 0.03
glow_blend_mode = 1
glow_hdr_threshold = 1.1
glow_hdr_scale = 2.0
adjustment_enabled = true
adjustment_brightness = 1.0
adjustment_contrast = 1.05
adjustment_saturation = 1.08
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dust"]
shader = ExtResource("12_dust_shader")
shader_parameter/albedo_tex = ExtResource("10_dust")
shader_parameter/core_bias_color = Color(1, 0.6, 0.85, 1)
shader_parameter/core_bias_amount = 0.35
shader_parameter/emission_strength = 2.5
shader_parameter/soft_fade_distance = 1.0
[sub_resource type="QuadMesh" id="QuadMesh_dust"]
material = SubResource("ShaderMaterial_dust")
size = Vector2(0.4, 0.4)
[sub_resource type="Gradient" id="Gradient_dust"]
offsets = PackedFloat32Array(0, 0.15, 0.85, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0.55, 1, 1, 1, 0.55, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_dust"]
gradient = SubResource("Gradient_dust")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_dust"]
emission_shape = 3
emission_box_extents = Vector3(26, 11, 28)
direction = Vector3(0, 1, 0)
spread = 180.0
initial_velocity_min = 0.1
initial_velocity_max = 0.45
gravity = Vector3(0, 0, 0)
turbulence_enabled = true
turbulence_noise_strength = 0.7
turbulence_noise_scale = 0.6
turbulence_influence_min = 0.35
turbulence_influence_max = 0.65
scale_min = 0.5
scale_max = 1.6
color_ramp = SubResource("GradientTexture1D_dust")
[node name="Arena" type="Node3D"]
script = ExtResource("1_iywne")
[node name="Boundary" parent="." instance=ExtResource("2_bndry")]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.866025, -0.383022, 0.321394, 0, 0.642788, 0.766044, -0.5, -0.663414, 0.55667, 0, 11, 0)
light_color = Color(0.85, 0.75, 1, 1)
shadow_enabled = true
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_nebula")
[node name="ReflectionProbe" type="ReflectionProbe" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, 0)
size = Vector3(26, 14, 40)
box_projection = true
update_mode = 0
[node name="GoalTeam0" parent="." instance=ExtResource("6_p57ef")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.79, 18)
[node name="GoalTeam1" parent="." instance=ExtResource("6_p57ef")]
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.79, -18)
team = 1
[node name="BallSpawn" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
[node name="SpawnsTeam0" type="Node3D" parent="."]
[node name="Spawn1" type="Marker3D" parent="SpawnsTeam0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.8, 13.5)
[node name="SpawnsTeam1" type="Node3D" parent="."]
[node name="Spawn1" type="Marker3D" parent="SpawnsTeam1"]
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 2.8, -13.5)
[node name="NebulaDust" type="GPUParticles3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0)
amount = 500
lifetime = 22.0
preprocess = 8.0
randomness = 1.0
visibility_aabb = AABB(-30, -14, -32, 60, 28, 64)
process_material = SubResource("ParticleProcessMaterial_dust")
draw_pass_1 = SubResource("QuadMesh_dust")
[node name="Decoration" type="Node3D" parent="."]
[node name="NebulaStationA" parent="Decoration" instance=ExtResource("8_station")]
transform = Transform3D(1.8, 0, 0, 0, 1.8, 0, 0, 0, 1.8, 28, 5, -6)
rotation = Vector3(0, -0.436332, 0)
[node name="NebulaDebrisA" parent="Decoration" instance=ExtResource("9_debris")]
transform = Transform3D(1.2, 0, 0, 0, 1.2, 0, 0, 0, 1.2, -22, 9, 11)
rotation = Vector3(0.261799, 0.698132, 0.087266)
[node name="NebulaDebrisB" parent="Decoration" instance=ExtResource("9_debris")]
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 34, 3, 15)
rotation = Vector3(-0.174533, 1.919862, 0.349066)
[node name="NebulaDebrisC" parent="Decoration" instance=ExtResource("9_debris")]
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, -30, 11, -21)
rotation = Vector3(0.087266, -1.047198, -0.261799)
[node name="NebulaStationB" parent="Decoration" instance=ExtResource("8_station")]
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, -32, 7, 9)
rotation = Vector3(0.05, 1.134464, -0.02)
[node name="NebulaStationC" parent="Decoration" instance=ExtResource("8_station")]
transform = Transform3D(1.3, 0, 0, 0, 1.3, 0, 0, 0, 1.3, 9, 8, 42)
rotation = Vector3(-0.03, 2.740167, 0.06)
[node name="NebulaDebrisD" parent="Decoration" instance=ExtResource("9_debris")]
transform = Transform3D(1.0, 0, 0, 0, 1.0, 0, 0, 0, 1.0, 13, 15, -35)
rotation = Vector3(0.4, 1.3, -0.2)
[node name="NebulaDebrisE" parent="Decoration" instance=ExtResource("9_debris")]
transform = Transform3D(0.9, 0, 0, 0, 0.9, 0, 0, 0, 0.9, -11, 4, 33)
rotation = Vector3(-0.3, -0.9, 0.15)
[node name="NebulaPlanet" parent="Decoration" instance=ExtResource("11_planet")]
transform = Transform3D(30, 0, 0, 0, 30, 0, 0, 0, 30, -55, 38, -80)