diff options
| author | hachem <im@hachem.wtf> | 2025-08-14 01:41:19 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-14 01:41:19 +0200 |
| commit | f949a0aafe9825b8209c3a9d139a7bf5e22a7897 (patch) | |
| tree | 423b0f8242b156596f2bb9a89fd96a6c099b93d3 /Assets/ParticleSystem.glsl | |
| parent | 613f99e937e55f73dcec1251fdce4a9fda077a0f (diff) | |
[add]: Custom UI Font
Diffstat (limited to 'Assets/ParticleSystem.glsl')
| -rw-r--r-- | Assets/ParticleSystem.glsl | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/Assets/ParticleSystem.glsl b/Assets/ParticleSystem.glsl deleted file mode 100644 index d40726d..0000000 --- a/Assets/ParticleSystem.glsl +++ /dev/null @@ -1,58 +0,0 @@ -#type compute -#version 430 core - -layout(local_size_x = 256) in; - -struct Particle -{ - vec4 position; // xyz = position, w = lifetime - vec4 velocity; // xyz = velocity, w = mass - vec4 color; // rgba = color -}; - -layout(std430, binding = 0) buffer ParticleBuffer -{ - Particle particles[]; -} particleBuffer; - -uniform float u_DeltaTime; -uniform vec3 u_Gravity; -uniform vec3 u_EmitterPosition; -uniform float u_EmissionRate; -uniform float u_ParticleLifetime; -uniform float u_Time; - -void main() -{ - uint index = gl_GlobalInvocationID.x; - - if (index >= particles.length()) - return; - - Particle particle = particleBuffer.particles[index]; - - particle.position.w -= u_DeltaTime; - - if (particle.position.w <= 0.0) - { - particle.position.xyz = u_EmitterPosition; - particle.position.w = u_ParticleLifetime; - - float angle = fract(sin(dot(vec2(index, u_Time), vec2(12.9898, 78.233))) * 43758.5453) * 2.0 * 3.14159; - float speed = 2.0 + fract(sin(dot(vec2(index + 1, u_Time), vec2(12.9898, 78.233))) * 43758.5453) * 3.0; - particle.velocity.xyz = vec3(cos(angle) * speed, 5.0, sin(angle) * speed); - particle.velocity.w = 1.0; - - particle.color = vec4(1.0, 0.5 + 0.5 * fract(sin(index * 123.456) * 43758.5453), 0.2, 1.0); - } - else - { - particle.velocity.xyz += u_Gravity * u_DeltaTime; - particle.position.xyz += particle.velocity.xyz * u_DeltaTime; - - float lifeRatio = particle.position.w / u_ParticleLifetime; - particle.color.a = lifeRatio; - } - - particleBuffer.particles[index] = particle; -} |
