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 steepness let k = max(0.001, steepness); // Shift x relative to midpoint let z = -k * (x - midpoint); // Calculate the exponent let expTerm = exp(z); // Calculate the logistic function value let logistic = 1.0 / (1.0 + expTerm); // Scale to min-max range let range = maxValue - minValue; let value = minValue + range * logistic; // Calculate the derivative let derivative = range * k * expTerm / ((1.0 + expTerm) * (1.0 + expTerm)); return vec2<f32>(value, derivative); }