diff --git a/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBase.kt b/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBase.kt index b9eb9bf7..6a1a6f18 100644 --- a/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBase.kt +++ b/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBase.kt @@ -34,8 +34,6 @@ open class GradientBase( var spreadMethod: Int by Parameter() var fillUnits: Int by Parameter() var fillFit: Int by Parameter() - var filterWindow: Int by Parameter("filterWindow", 2) - var filterSpread: Double by Parameter("filterSpread", 0.5) init { this.quantization = 0 @@ -93,8 +91,11 @@ open class GradientBase( vec2 dx = p_filterSpread * dFdx(coord) / (float(p_filterWindow) + 1.0); vec2 dy = p_filterSpread * dFdy(coord) / (float(p_filterWindow) + 1.0); - for (int u = -p_filterWindow; u <= p_filterWindow; u++) { - for (int v = -p_filterWindow; v <= p_filterWindow; v++) { + for (int u = 0; u < p_filterWindow; u++) { + for (int v = 0; v < p_filterWindow; v++) { + + float fv = float(v) / (float(p_filterWindow) - 1.0) - 0.5; + float fu = float(u) / (float(p_filterWindow) - 1.0) - 0.5; vec2 scoord = coord + dx * float(u) + dy * float(v); vec2 wcoord = domainWarp(scoord); @@ -135,7 +136,7 @@ open class GradientBase( gradient += m; } } - gradient /= (float(p_filterWindow) * 2.0 + 1.0) * (float(p_filterWindow) * 2.0 + 1.0); + gradient /= float(p_filterWindow) * float(p_filterWindow); if (gradient.a > 0.0) { gradient.rgb /= gradient.a; } diff --git a/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBuilder.kt b/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBuilder.kt index 7d224177..e198e212 100644 --- a/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBuilder.kt +++ b/orx-shade-styles/src/commonMain/kotlin/fills/gradients/GradientBuilder.kt @@ -19,6 +19,8 @@ class GradientBuilder(val colorType: KClass): StyleParameters override var parameterValues: MutableMap = mutableMapOf() override var textureBaseIndex: Int = 2 + var filterWindow: Int by Parameter("filterWindow", 3) + var filterSpread: Double by Parameter("filterSpread", 0.5) var stops = mutableMapOf() var fillUnits = FillUnits.BOUNDS