diff --git a/metadata/extra-animations.xml b/metadata/extra-animations.xml index c424e9b..272800a 100644 --- a/metadata/extra-animations.xml +++ b/metadata/extra-animations.xml @@ -120,6 +120,11 @@ <_name>Hard + <_short>Dodge Settings diff --git a/src/extra-animations/burn.hpp b/src/extra-animations/burn.hpp index 5121bd7..df5fc98 100644 --- a/src/extra-animations/burn.hpp +++ b/src/extra-animations/burn.hpp @@ -64,6 +64,7 @@ uniform int flame_smooth_1; uniform int flame_smooth_2; uniform int flame_smooth_3; uniform int flame_smooth_4; +uniform vec4 flame_color; // procedural noise from IQ vec2 hash( vec2 p ) @@ -138,7 +139,11 @@ void main() c = clamp(c, 0.0, 1.0); c1 = clamp(c1, 0.0, 1.0); - vec3 col = vec3(1.5 * c1, 1.5 * c1 * c1 * c1, c1 * c1 * c1 * c1 * c1 * c1); + float r = 1.0 / flame_color.r; + float g = 1.0 / flame_color.g; + float b = 1.0 / flame_color.b; + + vec3 col = vec3(1.5 * pow(c1, r), 1.5 * pow(c1, g), 1.5 * pow(c1, b)); float a = clamp(c * (1.0 - pow(uvpos.y, 10.0)), 0.0, 1.0); vec4 wfrag = get_pixel(uvpos); @@ -167,6 +172,7 @@ static std::string burn_transformer_name = "animation-burn"; wf::option_wrapper_t burn_flame_speed{"extra-animations/burn_flame_speed"}; wf::option_wrapper_t burn_flame_width{"extra-animations/burn_flame_width"}; wf::option_wrapper_t burn_flame_height{"extra-animations/burn_flame_height"}; +wf::option_wrapper_t burn_flame_color{"extra-animations/burn_flame_color"}; wf::option_wrapper_t burn_flame_smoothness{"extra-animations/burn_flame_smoothness"}; class burn_transformer : public wf::scene::view_2d_transformer_t @@ -286,6 +292,13 @@ class burn_transformer : public wf::scene::view_2d_transformer_t self->program.uniform1i("flame_smooth_4", 0); } + glm::vec4 flame_color{ + wf::color_t(burn_flame_color).r, + wf::color_t(burn_flame_color).g, + wf::color_t(burn_flame_color).b, + wf::color_t(burn_flame_color).a}; + self->program.uniform4f("flame_color", flame_color); + self->program.set_active_texture(tex); GL_CALL(glDrawArrays(GL_TRIANGLE_FAN, 0, 4));