Make erf rise shape causal by shifting to [0, tr] interval
The centered erf (50% at wavefront arrival) was non-causal with a visible
precursor ahead of the front. Replace with shifted erf:
0.5*(1+erf(k*(2*dt/tr-1))), clamped to 0/1 outside [0, tr].
Both rise shapes (linear ramp and erf S-curve) now share the same tr
parameter and are strictly causal. Unify model.riseTimeTau/riseTimeTr
into model.riseTimeTr + model.riseShape ("step"|"linear"|"erf").
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>