Parameters
Name | Type | Description |
---|---|---|
x | f32 | Input value. |
midpoint | f32 | Curve midpoint (inflection point). |
steepness | f32 | Curve steepness factor. |
min | f32 | Minimum output value. |
max | f32 | Maximum output value. |
Returns
vec2<f32>value and derivative.
WGSL Code
fn logisticCurve(x: f32, midpoint: f32, steepness: f32, minValue: f32, maxValue: f32) -> vec2<f32> {// Scale factor for steepnesslet k = max(0.001, steepness);// Shift x relative to midpointlet z = -k * (x - midpoint);// Calculate the exponentlet expTerm = exp(z);// Calculate the logistic function valuelet logistic = 1.0 / (1.0 + expTerm);// Scale to min-max rangelet range = maxValue - minValue;let value = minValue + range * logistic;// Calculate the derivativelet derivative = range * k * expTerm / ((1.0 + expTerm) * (1.0 + expTerm));return vec2<f32>(value, derivative);}