diff --git a/projects/fire_works/shaders/generation.comp b/projects/fire_works/shaders/generation.comp index 4b7ba4f5020f7c219893ee330fa6fac2a1768ece..3b4d2b94cb451af4a9c03fb8a17c27a63678372c 100644 --- a/projects/fire_works/shaders/generation.comp +++ b/projects/fire_works/shaders/generation.comp @@ -122,7 +122,7 @@ void main() { direction = events[event_id].direction; } - vec3 color = events[event_id].color; + vec3 color = normalize(events[event_id].color); const float v = events[event_id].velocity; vec3 velocity = vec3(0.0f); diff --git a/projects/fire_works/shaders/smoke.inc b/projects/fire_works/shaders/smoke.inc index 87eaa36b135043034c329842f475841e949a2b3a..8886a788273cd5fa5c871749e0c9012f2722ed41 100644 --- a/projects/fire_works/shaders/smoke.inc +++ b/projects/fire_works/shaders/smoke.inc @@ -19,9 +19,12 @@ float smokeDensity(float size) { } vec4 smokeBlend(vec4 dst, vec4 src) { + const float f = max(1.0f - dst.a, 0.0f); + const float a = clamp(0.0f, 1.0f, src.a); + return vec4( - dst.rgb + src.rgb * src.a * (1.0f - dst.a), - dst.a + src.a * (1.0f - dst.a) + dst.rgb + src.rgb * a * f, + dst.a + a * f ); }