From 6a505dd09610b16332c86e2f243967cdb8a849e8 Mon Sep 17 00:00:00 2001 From: Sahin Habermann Date: Sun, 25 Feb 2018 15:09:30 +0100 Subject: [PATCH] Fix AA performance --- common/menu.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/common/menu.c b/common/menu.c index efd9b5c..bae6800 100644 --- a/common/menu.c +++ b/common/menu.c @@ -201,7 +201,6 @@ static void drawEntry(menuEntry_s* me, int off_x, int is_active) { } color_t frontWaveGradient[720]; -color_t aaColors[3][256*256*256][10]; void computeFrontGradient(color_t baseColor, int height) { int y; @@ -245,9 +244,8 @@ color_t waveBlendAdd(color_t a, color_t b, float alpha) { void drawWave(int id, float timer, color_t color, int height, float phase, float speed) { int x, y; - float wave_top_y, alpha; + float wave_top_y, alpha, one_minus_alpha; color_t existing_color, new_color; - color_t *aa_color_ptr; height = 720 - height; @@ -263,22 +261,20 @@ void drawWave(int id, float timer, color_t color, int height, float phase, float if (themeCurrent.enableWaveBlending) { existing_color = FetchPixelColor(x, y); new_color = waveBlendAdd(existing_color, color, clamp(alpha, 0.0, 1.0) * 0.3); - } - else if (alpha < 0.3) { // anti-aliasing - existing_color = FetchPixelColor(x, y); - alpha = fabs(alpha); - aa_color_ptr = &aaColors[id][existing_color.abgr & 0xFFFFFF][(int)(alpha * 10) - 1]; - new_color = *aa_color_ptr; - - if (new_color.abgr == 0) { - new_color = *aa_color_ptr = MakeColor(color.r * (1.0 - alpha) + existing_color.r * alpha, color.g * (1.0 - alpha) + existing_color.g * alpha, color.b * (1.0 - alpha) + existing_color.b * alpha, 255); + } + else if (alpha >= 0.3) { + if (id == 2) { + new_color = frontWaveGradient[y]; + } + else { // no anti-aliasing + new_color = color; } } - else if (id == 2) { // darken closer to bottom of the front wave - new_color = frontWaveGradient[y]; - } - else { - new_color = color; + else { // anti-aliasing + existing_color = FetchPixelColor(x, y); + alpha = fabs(alpha); + one_minus_alpha = (1.0 - alpha); + new_color = MakeColor(color.r * one_minus_alpha + existing_color.r * alpha, color.g * one_minus_alpha + existing_color.g * alpha, color.b * one_minus_alpha + existing_color.b * alpha, 255); } DrawPixelRaw(x, y, new_color);