Powers are straight lines on log-log axes
Take the log of a power and the exponent comes down in front:
effect = c × xp ⇒ log effect = log c + p × log x
Against log x, that's a straight line with slope p. The slope has a
plain meaning too: 1% more input gives about p% more effect. No cap is
p = 1; a square-root softcap is p = 0.5 past the cap, so it takes
100 times the input to get 10 times the effect.
Joining at the cap
A softcap is written so the two pieces meet. For a root softcap with cap c:
x ≤ c: effect = x · x > c: effect = c × (x ÷ c)p
At x = c both give c, so there's no jump. The slope does change at once,
from 1 to p: a kink, which players can feel as the moment an upgrade
suddenly got worse. The log softcap, c × (1 + ln(x ÷ c)), joins with the
same value and the same slope, so it bends without a kink, and from
then on every tenfold of input adds the same c × ln 10.
Closing in on a limit
effect = L × x ÷ (L + x) · L − effect = L2 ÷ (L + x)
While x is small next to L, the effect is about x. Once x is much
bigger, the gap to the limit is about L² ÷ x, so doubling the input
halves what's left. League of Legends' armor works this way: damage
taken is × 100 ÷ (100 + armor), so each point of armor is worth the
same extra effective health, yet the reduction never reaches 100%.
Turning it around
How much input does a target effect y need? Undo the softcap:
x = c × (y ÷ c)1 ÷ p
With p = 0.5, the input needed grows as the square of the effect
wanted; past a log softcap it grows exponentially. That's the same
slowdown as a steep cost curve, built from the other side.