commit 46dc40913bcdd2bdb04a55ad0ae9ecdaf637fa32
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Jun 22 22:16:43 2023 +0200

    Fix a bug noticed by Rohan M.

diff --git a/src/main/java/org/distorted/library/effect/EffectQuality.java b/src/main/java/org/distorted/library/effect/EffectQuality.java
index e4af56d..ad443f5 100644
--- a/src/main/java/org/distorted/library/effect/EffectQuality.java
+++ b/src/main/java/org/distorted/library/effect/EffectQuality.java
@@ -34,28 +34,35 @@ import org.distorted.library.main.DistortedEffects;
  */
 public enum EffectQuality
   {
-  HIGHEST  ( 0 ),   // has to start from 0
-  HIGH     ( 1 ),
-  MEDIUM   ( 2 ),
-  LOW      ( 3 );
+  HIGHEST  ( 0, 1.000f ),   // has to start from 0
+  HIGH     ( 1, 0.500f ),
+  MEDIUM   ( 2, 0.250f ),
+  LOW      ( 3, 0.125f );
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-/**
- * Each next Quality level renders into 1/MULTIPLIER smaller buffers.
- */
-  public static final float MULTIPLIER = 0.5f;
 /**
  * Numof of possible qualities.
  */
   public static final int LENGTH = values().length;
 
   private final int level;
+  private final float mipmap;
+
+  private static final EffectQuality[] qualities;
+
+  static
+    {
+    int i=0;
+    qualities= new EffectQuality[LENGTH];
+    for(EffectQuality q: EffectQuality.values()) qualities[i++] = q;
+    }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  EffectQuality(int level)
+  EffectQuality(int level, float mipmap)
     {
     this.level = level;
+    this.mipmap= mipmap;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -68,5 +75,16 @@ public enum EffectQuality
     {
     return level;
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * Only for use by the library itself.
+ *
+ * @y.exclude
+ */
+  public static float getMipmap(int quality)
+    {
+    return qualities[quality].mipmap;
+    }
   }
 
diff --git a/src/main/java/org/distorted/library/effect/PostprocessEffect.java b/src/main/java/org/distorted/library/effect/PostprocessEffect.java
index 2f7095d..95ba061 100644
--- a/src/main/java/org/distorted/library/effect/PostprocessEffect.java
+++ b/src/main/java/org/distorted/library/effect/PostprocessEffect.java
@@ -227,13 +227,12 @@ public abstract class PostprocessEffect extends Effect implements InternalMaster
       {
       job = mJobs.remove(0);
 
-      switch(job.type)
+      if( job.type==MIPMAP )
         {
-        case MIPMAP: int level = job.level;
-                     mQualityLevel = level;
-                     mQualityScale = 1.0f;
-                     for(int j=0; j<level; j++) mQualityScale*= EffectQuality.MULTIPLIER;
-                     break;
+        int level = job.level;
+        mQualityLevel = level;
+        mQualityScale = EffectQuality.getMipmap(level);
+        break;
         }
       }
     }
diff --git a/src/main/java/org/distorted/library/main/InternalOutputSurface.java b/src/main/java/org/distorted/library/main/InternalOutputSurface.java
index 66701ce..5d47cfc 100644
--- a/src/main/java/org/distorted/library/main/InternalOutputSurface.java
+++ b/src/main/java/org/distorted/library/main/InternalOutputSurface.java
@@ -179,9 +179,7 @@ public abstract class InternalOutputSurface extends InternalSurface implements I
     final int   CLEAR_S = 0;
 
     final int queueSize = DistortedLibrary.getQueueSize();
-    float mipmap=1.0f;
-
-    for (int j=0; j<quality; j++) mipmap *= EffectQuality.MULTIPLIER;
+    float mipmap= EffectQuality.getMipmap(quality);
 
     mBuffer[quality] = new DistortedFramebuffer(queueSize,2,BOTH_DEPTH_STENCIL,TYPE_SYST, STORAGE_COMMON, (int)(width*mipmap), (int)(height*mipmap) );
     mBuffer[quality].mMipmap = mipmap;
