Squashed commit of the following:
commitd8496f4cc7Author: Matteo Sonaglioni <sonaglioni.matteo7@gmail.com> Date: Wed Apr 29 11:01:07 2026 +0200 tweak enviromentconfig commit84538679f3Author: Matteo Sonaglioni <sonaglioni.matteo7@gmail.com> Date: Wed Apr 29 09:29:48 2026 +0200 museum_map
This commit is contained in:
@@ -1,31 +1,26 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded;
|
||||
|
||||
global uniform float global_wind_speed = 1.0; //0.0 = calm, 1.0 = normal, 2.0+ = strong
|
||||
global uniform vec2 global_wind_direction = vec2(1.0, 0.0);
|
||||
|
||||
uniform float wave_frequency = 1.0;
|
||||
uniform float base_amplitude = 0.5;
|
||||
uniform float secondary_ratio = 0.6;
|
||||
uniform float time_scale_base = 3.0;
|
||||
// --- PARAMETRI ---
|
||||
uniform float time_scale = 3.0;
|
||||
uniform float wave_amplitude = 0.5; // Quanto curva a destra/sinistra
|
||||
uniform float wave_frequency = 1.0; // Ogni quanto fa la curva
|
||||
|
||||
void vertex() {
|
||||
float random_seed_offset = INSTANCE_CUSTOM.x * 100.0;
|
||||
float scaled_time = (TIME + random_seed_offset) * (time_scale_base * global_wind_speed);
|
||||
float amplitude = base_amplitude * global_wind_speed;
|
||||
|
||||
vec2 wind_dir = normalize(global_wind_direction);
|
||||
vec2 wind_perp = vec2(-wind_dir.y, wind_dir.x); //90° perpendicular
|
||||
|
||||
float primary_sway = sin(VERTEX.y * wave_frequency + scaled_time) * amplitude;
|
||||
float secondary_sway = sin(VERTEX.y * wave_frequency * 1.3 + scaled_time * 0.7 + 1.57)
|
||||
* (amplitude * secondary_ratio);
|
||||
|
||||
VERTEX.x += primary_sway * wind_dir.x + secondary_sway * wind_perp.x;
|
||||
VERTEX.z += primary_sway * wind_dir.y + secondary_sway * wind_perp.y;
|
||||
// Creiamo un offset unico per ogni particella in modo che non si muovano tutte uguali
|
||||
float random_seed_offset = INSTANCE_CUSTOM.x * 100.0;
|
||||
float scaled_time = (TIME + random_seed_offset) * time_scale;
|
||||
|
||||
// Applichiamo SOLO la curva morbida all'asse X (o Z, a seconda di come orienti la scena)
|
||||
// Usiamo VERTEX.y per far sì che la curva si propaghi lungo tutta la lunghezza della scia
|
||||
VERTEX.x += sin(VERTEX.y * wave_frequency + scaled_time) * wave_amplitude;
|
||||
|
||||
// Niente più "VERTEX.y += t;", quindi niente più teletrasporti!
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
// Il colore e l'alpha (per lo spawn dolce e la morte lenta)
|
||||
// vengono comandati dalla Color Ramp del GPUParticles3D!
|
||||
ALBEDO = COLOR.rgb;
|
||||
ALPHA = COLOR.a;
|
||||
}
|
||||
Reference in New Issue
Block a user