diff --git a/.github/workflows/commit-v36-soft.yml b/.github/workflows/commit-v36-soft.yml new file mode 100644 index 0000000..2917c0b --- /dev/null +++ b/.github/workflows/commit-v36-soft.yml @@ -0,0 +1,77 @@ +name: Commit V36 Retail Soft decode + +on: + push: + branches: + - test/v36-retail-jfa-soft + +permissions: + contents: write + +jobs: + commit-v36-soft: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: test/v36-retail-jfa-soft + + - name: Apply V36 decode + shell: bash + run: | + set -euo pipefail + python3 <<'PY' + from pathlib import Path + p = Path('src/outline/d3d9_hook.zig') + s = p.read_text() + if 'V36 RETAIL-SOFT' in s: + raise SystemExit(0) + start = s.index('/// V32 POLISH: hard 3px outline, no feather.') + end = s.index('/// Debug: composite silhouette RT directly.') + lines = [ + '/// V36 RETAIL-SOFT: keep the proven V34 JFA, soften only final decode.', + '/// c0 = (screen_width, screen_height, core_radius_px, halo_radius_px).', + '/// Uses the same two texture reads as V34: no 17-tap full-screen morphology.', + 'const jfa_decode_src =', + ' "ps_3_0\\n" ++', + ' "def c1, 0.0, 0.22, 0.82, -0.002\\n" ++', + ' "def c2, 1.0, 0.95, 0.58, 0.0\\n" ++', + ' "dcl_2d s0\\n" ++', + ' "dcl_2d s1\\n" ++', + ' "dcl_texcoord0 v0\\n" ++', + ' "texld r0, v0, s0\\n" ++', + ' "sub r1.xy, v0.xy, r0.xy\\n" ++', + ' "mul r1.xy, r1.xy, c0.xy\\n" ++', + ' "dp2add r1.z, r1, r1, c1.x\\n" ++', + ' "mul r3.x, c0.z, c0.z\\n" ++', + ' "mul r3.y, c0.w, c0.w\\n" ++', + ' "sub r4.x, r1.z, r3.y\\n" ++', + ' "cmp r6.w, r4.x, c1.x, c1.y\\n" ++', + ' "sub r4.x, r1.z, r3.x\\n" ++', + ' "cmp r6.w, r4.x, r6.w, c1.z\\n" ++', + ' "texld r5, v0, s1\\n" ++', + ' "add r5.x, r5.a, c1.w\\n" ++', + ' "cmp r6.w, r5.x, c1.x, r6.w\\n" ++', + ' "mov r6.xyz, c2.xyz\\n" ++', + ' "mov oC0, r6\\n";', + '', + '', + ] + s = s[:start] + '\n'.join(lines) + s[end:] + old = ' // V34: hard 3px edge unchanged; JFA seed precision is now full-float.\n c0 = [4]f32{ fw, fh, 3.0, 0.0 };' + new_cpu = ' // V36: thin 1.5px core plus a subtle 3px halo.\n c0 = [4]f32{ fw, fh, 1.5, 3.0 };' + if old not in s: + raise SystemExit('V34 CPU decode constants not found') + p.write_text(s.replace(old, new_cpu)) + PY + + - name: Commit source + shell: bash + run: | + set -euo pipefail + if git diff --quiet; then exit 0; fi + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add src/outline/d3d9_hook.zig + git commit -m "V36: soft Retail-style JFA decode" + git push origin HEAD:test/v36-retail-jfa-soft