Changelog

What's shipped

Every commit pushed to myrtle.moe, pulled live from GitHub and grouped by day.

Eltik/myrtle
7
commits · today
1
contributor
just now
last synced

Today

7 commits
  • Featurebackend

    Backend startup logs

    Eltik6501b81
  • Update

    dynchar: ?gammadomain=entrance confines the fitted gamma to its calibrated domain

    Details

    Every calibration point in GAMMA_CAL is an entrance-capture sweep minimum, yet the exponent applies at settle through the single createHDRScene call. The arm restores exponent 1.0 at the handoff so the fitted term acts only where it has data; IHDRScene grows setGamma for the runtime switch. Missing param is the previous behaviour exactly (verified: five table rows byte-stable at 0.0 move). Measured with predictions written first, and the misses taught the durable lesson: a shared monotone transfer largely cancels in a two-arm delta, so the art-basis table barely moved (mly -27.3 -> -27.4 vs a predicted -34.5) while the one-sided gaps moved a little (mly vs game -17.0 -> -15.6, exc -13.9 -> -12.7, fugue -31.3 -> -33.4). No clean winner, so the default stays the fitted gamma everywhere and the arm ships as a diagnostic; the register carries the decision rule and the numbers.

    Eltik588d011
  • Update

    dynchar: export the serialized settle binding, measure it, keep Idle at rest

    Details

    The main dyn_illust SkeletonMecanim serializes _animationName, and a census over every dynchar bundle (104 bindings) reads 86 Idle, 15 Start, plus exactly two others: Interact on char_245_cello_sale#12 and Special on char_391_rosmon_2, both on their MAIN skeletons. The exporter now emits it as settleAnimation (null when absent or Start), and the renderer can bind it under ?settleclip=1. Measured before defaulting, and the hypothesis died: bound to Interact, cel's settled mean moves AWAY from the game (133.1 -> 141..143 against the game's flat 133.8, which matches our Idle plateau to 0.7 luma) and the control-validated edge instrument drops 0.101 -> 0.022 over 105 scanned phases. So the serialized name is the inspector's initial value; the runtime action system (DynIllust.ChangeAction in the IL2CPP dump) plays Idle at rest, and Interact/Special are action responses. The default binding stays Idle, bit-exact with the previous behaviour; the field and the arm ship as data for action-response work. All 16 entrance keys verified bit-identical after the export install.

    Eltikca4bba7
  • Update

    dynchar: ?dsta=1, the carve-composite measurement arm, measured and refuted

    Details

    Every Particles-L2D pass writes alpha Zero OneMinusSrcAlpha into a target cleared at a=0, so if the game's UI composited the RT with straight alpha, additive-heavy regions would dim in proportion to draw count, which had the right shape for the entrance surface's need for EFFECT_SCENE_GAIN 0.3. The arm sets the carve on the ADD blend modes and multiplies the tonemap output by the carved target alpha, additive-only since the spine does not carry the family convention. Measured and refuted, predictions written first: count-scaling over 9 keys reads Spearman 0.483 with cel moving the wrong way (+3.59 under a mechanism that can only dim), and the entrance arm explodes on mly (+7.060) and fugue (+7.050) with r falling. The register carries the full table and the reopening measurement: read the client's actual RT composite blend from the IL2CPP dump before building another arm. Default off; a missing param is the previous behaviour exactly.

    Eltika7e72a1
  • Update

    dynchar: the settled camera opens at the terminus, the pull-out is not replayed

    Details

    The authored transform -> duration pull-out happens inside the cinematic: the game performs it before duration and then cuts to a STATIC settled frame (measured cut at dur +0.116..0.267 on fugue/kalts/chyue; cel_settled2 settled camera phase-corr shift (0,0) scale 1.00). The hand-off path replayed that dolly on the main composite AFTER the cut, so our settled camera kept moving for duration - transform seconds per skin, cel 6.0, mue 7.0, ska 12.833, kalts 4.4, each matching its audited settle transient, and every settled table row taken at dur+3 on a transform skin sampled a moving camera. The main composite now opens at the terminus. The removed replay's duration was always read from the authored fields, never chosen; no skin id appears in the change. ?handoffdolly=1 restores the previous behaviour exactly (verified: cel t=21 reproduces 128.0). Measured: all 16 entrance keys bit-identical (no beat list crosses its duration); the settled transient is gone (cel flat 133.1 vs the game's flat 133.8; mue 161.5; kalts 102.1; ska quotable for the first time at 130.1..131.6); plateau values land on the pre-fix audit's plateaus key by key.

    Eltik989a4eb
  • Update

    dynchar: ?ldr=1 renders the scene target fixed-point, the LDR saturation arm

    Details

    Unity's dynchar camera does not serialize m_AllowHDR and the mobile tier default is an RGBA8 framebuffer, where every blend saturates into [0,1] as it accumulates. The half-float HDR target never clamps, so additive stacks accumulate unbounded until the knee. This gate renders the scene target UNSIGNED_BYTE so each draw clamps at the documented GL ceiling; the bright-pass (threshold 1.0) is then empty, so bloom is off in the same arm, which is part of the semantic. Missing param keeps HALF_FLOAT, verified bit-identical default. Measured (register, Item 3): the clamp is real but it is not the 0.3. Under ldr=1 with scenegain=1 the entrance surface worsens (exc 6.358 -> 9.189, mly +2.413, kalts +2.385), so the entrance excess the taming compensates is sub-1 additive brightness the clamp never touches. Settled holds or improves (exc 101.7 vs static 103.3; whitw2 151.0 -> 133.5), and Mlynar's held flash survives at t254 100%. Kept as the measurement arm for the composite-by-destination-alpha experiment the register names.

    Eltikaae6fb7
  • Update

    export(dynchar): static plain-L2D scene layers take the family tint too

    Details

    legacy_tint_scale admitted the Particles-L2D plain families (AlphaBlend, Additive, ...) to the x2 _TintColor convention only for layers the cinematic ANIMATES, a caution written when the idle surface had no recording to verify against. Static layers fell to the _Color reading, which is white, so a static glow lost its authored tint entirely. Executor the Ex Foedere is the case, reported by Ian: her idle layer 14, GO glow, a 64 px radial white glow on Torappu/Particles-L2D/Additive, authors _TintColor (0.368, 0.314, 0.257, a 0.378) and exported tint [1,1,1,1], rendering a blown white disc that obscured the face: 55% of the authored eye slot boxes above luma 250 with mean 237.8, where the 60 fps capture reads 0% and 225.4. The attribution chain ran through all-removed controls: not a particle, not the wash seats, not the overlay, not the HDR pass alone; abl=src:14 alone drops the eyes to 5% and 169.7. The Additive program (vs_COLOR0 = in_COLOR0 * _TintColor; col = vs_COLOR0 + vs_COLOR0, read from [uc]shaders.ab) is the same x2 already baked for animated layers. DYNCHAR_STATIC_L2D_TINT=0 reverts. Census: 82 layers change tint across 21 scene JSONs; in the corpus only exc (2 idle + 2 entrance layers), mue (4 + 3) and fugue (1 idle) are touched. Predicted movers: exc and excunew small with no sign disagreement, mue possibly, thirteen identical. Measured, sixteen keys: exc 6.382 -> 6.358, excunew 6.643 -> 6.619, both r flat, fourteen bit-identical including mue (her changed layers are invisible at her beats, the predicted mue move missed). With the fix the settled face is readable and the eye mean lands at 220.0 in the game's family (225.4); the residual 54% above 250 in those boxes is the tonemap's achroma release passing near-neutral highlights to 255, the already-parked coverage-gate item, now with an eye-box number attached.

    Eltik8f3a36f

Older history is capped - see the full log on GitHub.