agxSigmoid function

Vector3 agxSigmoid(
  1. Vector3 color
)

AgxSigmoid from composite.frag: the log sigmoid, display-encoded out.

Implementation

Vector3 agxSigmoid(Vector3 color) {
  const minEv = -12.47393;
  const maxEv = 4.026069;

  double curve(double channel) {
    final logged = (math.log(math.max(channel, 1e-10)) / math.ln2).clamp(
      minEv,
      maxEv,
    );
    final v = (logged - minEv) / (maxEv - minEv);
    final v2 = v * v;
    final v4 = v2 * v2;
    final shaped =
        15.5 * v4 * v2 -
        40.14 * v4 * v +
        31.96 * v4 -
        6.868 * v2 * v +
        0.4298 * v2 +
        0.1191 * v -
        0.00232;
    return shaped.clamp(0.0, 1.0);
  }

  return Vector3(curve(color.x), curve(color.y), curve(color.z));
}