Przeglądaj źródła

[gradients] Fix gradient baking off by one error

Clement Espeute 1 rok temu
rodzic
commit
493aecce6d
2 zmienionych plików z 3 dodań i 3 usunięć
  1. 1 1
      hide/comp/GradientEditor.hx
  2. 2 2
      hrt/impl/Gradient.hx

+ 1 - 1
hide/comp/GradientEditor.hx

@@ -483,7 +483,7 @@ class GradientView extends Component {
 
         for (x in 0...innerValue.resolution) {
             var index = x * 4;
-            Gradient.evalData(innerValue, x / innerValue.resolution, color);
+            Gradient.evalData(innerValue, x / (innerValue.resolution-1), color);
             image_data.data[index] = Std.int(color.r * 255.0);
             image_data.data[index+1] = Std.int(color.g * 255.0);
             image_data.data[index+2] = Std.int(color.b * 255.0);

+ 2 - 2
hrt/impl/Gradient.hx

@@ -81,7 +81,7 @@ class Gradient {
                     outVector.x = lerp_angle(start.x, end.x, blend);
                 }
             case Constant:
-                outVector.load(start);
+                outVector.load(blend < 0.5 ? start : end);
             case Cubic:
                 // Honteusement copié de https://github.com/godotengine/godot/blob/c241f1c52386b21cf2df936ee927740a06970db6/scene/resources/gradient.h#L159
                 var i0 = firstStopIdx-1;
@@ -181,7 +181,7 @@ class Gradient {
 
             var vec = new Vector4();
             for (x in 0...data.resolution) {
-                evalData(data, x / data.resolution, vec);
+                evalData(data, x / (data.resolution-1), vec);
                 pixels.setPixelF(x * xScale,x*yScale, vec);
             }
             return pixels;