Commit graph

230 commits

Author SHA1 Message Date
MiTHRAL
7b949a312b submodule: repoint rexglue-sdk to the self-hosted fork
third_party/rexglue-sdk now fetches from the migrated copy on
git.mithraic.cloud (ad3laid3/rexglue-skate3, skate3-sdk-clean) instead of
the upstream GitHub fork, so the project no longer depends on the original
author's repo for its rexglue SDK.
2026-08-26 20:21:04 -04:00
MiTHRAL
bfb504db7d ghost multiplayer: full skater skeleton pose + character-model ghosts
Phase 2: replace the placeholder-cube ghost rendering with real character
models driven by the remote player's skeleton.

- Wire: POSE now carries the sender's skater skeleton (up to 64 bones, 3
  float4 rows each, index-ordered exactly like DrawItem::bones), padded with
  identity rows so every mesh's referenced bones stay in range. The relay
  forwards POSE payloads verbatim (re-stamping only the sender session id),
  so the protocol can grow without a relay update.
- Capture: OnFrameSceneBuilt (called from BuildFrameScene pre-publish)
  snapshots the local player's body item bone palette (highest-bone-count
  skinned non-ropa non-LivingWorld char item near the camera) as the
  broadcast pose; defaults the broadcast rate to 15 Hz.
- Render: in RenderScene, each remote ghost is drawn by cloning this
  player's own character pieces (body + nearby skinned char items) and
  substituting the remote skeleton into the bone ring - same meshes,
  textures and cached GPU decodes, no mesh transfer. Ghosts without a pose
  (older peers / capture not ready) fall back to the solid-color cube, which
  skate3_ghost_draw_local still uses for the self-check.

Known Phase-2 limitations (documented in code): ghosts render with this
player's own character model/outfit, cloth (ropa) garments are skipped (no
remote cloth sim), and hair/alpha pieces render opaque. All confined to
src/native and the hand-written scene hooks.
2026-08-26 20:16:42 -04:00
MiTHRAL
269fbcee32 Add ghost multiplayer: UDP relay + pose broadcasting + placeholder cubes
Bolt-on multiplayer layer confined to src/native and hand-written code (no
codegen output touched):

- GhostRelay core (src/native/skate3_native_ghost_relay.*): small UDP relay
  matching clients into rooms by a shareable code; forwards each client's
  pose to the other room members. Used by both the standalone binary and
  the in-game LAN host fallback.
- Standalone server (tools/ghost_relay_main.cpp, ghost_relay target): runs
  on a public VPS or behind a free tunnel; clients connect OUTBOUND, so no
  port forwarding is needed on any client.
- In-game module (skate3_native_ghost.*): captures the local player's world
  transform at Sk8::UpdateBoneTransforms exit (pack-owner entity +416,
  verified layout) and broadcasts it at a fixed rate; auto-connects to the
  default public relay, falls back to LAN auto-host + UDP broadcast
  discovery when unreachable.
- Renderer: draws a solid-color cube per remote player in RenderScene via
  the existing scene PSO tint.a>0 branch (no new shader/SPIR-V).
- UI: GhostDialog (M key) with enable toggle, room code, relay override,
  status readout. Off by default.

Wire protocol in skate3_native_ghost_proto.h (JOIN/HELLO/POSE/PING/LEAVE).
2026-08-26 20:12:45 -04:00
mchughalex
f6e0ae87fd render: declare copy-source usage on the readback source textures 2026-07-24 21:49:05 +01:00
mchughalex
d1a3e3d255 installer: read the ISO install directory before the wizard moves the paths (SDK bump) 2026-07-24 20:47:39 +01:00
mchughalex
ceefe4dc37 docs: drop the antivirus section from the readme 2026-07-24 20:20:59 +01:00
mchughalex
15db3f9adb sdk: bump for the startup build-title log line 2026-07-24 19:54:03 +01:00
mchughalex
27667a79a5 docs: explain antivirus false positives in the readme 2026-07-24 19:40:48 +01:00
mchughalex
671e74ba59 build: embed version resources in the windows binaries (SDK bump) 2026-07-24 19:40:48 +01:00
mchughalex
12e71d3172 sdk: bump for the opt-in inexact vulkan render target transfer cvar 2026-07-24 19:39:41 +01:00
mchughalex
b6c6196c3e build: raise the dev version floor to 2.0.0 2026-07-24 19:13:37 +01:00
mchughalex
ebe14fcd1f render: recover streaming-revoked guest read faults on linux and macos 2026-07-24 19:03:31 +01:00
mchughalex
a37e74fb4d render: derive the auto frame cap from a refresh-scaled margin (SDK bump) 2026-07-24 13:38:02 +01:00
mchughalex
49690b290b sdk: bump for present-cadence logging and the native_rhi cstddef fix 2026-07-24 13:38:02 +01:00
mchughalex
a16314df0c capture: place sort-list batched piece clones with their instance matrix 2026-07-24 13:38:02 +01:00
mchughalex
14acde031b render: key rigid pose rings by instance identity and make their mispair gates rotation-aware 2026-07-24 13:38:02 +01:00
mchughalex
020af8ae90 capture: serve rigid instance worlds from the guest mesh context owner matrix 2026-07-24 13:38:02 +01:00
mchughalex
89360e53fc capture: pair deferred rigid clone worlds by identity instead of submission order 2026-07-24 13:38:02 +01:00
mchughalex
186c7de6f4 render: stand the static sun shadows down in venues with no sane world lighting capture 2026-07-24 13:38:02 +01:00
mchughalex
c9e501e298 render: pin the guest auto-exposure at its zone max while luminance readbacks are unavailable 2026-07-24 13:38:01 +01:00
mchughalex
5e52ef82e4 render: never adopt a material's own surface map as streamed ad art 2026-07-24 13:38:01 +01:00
mchughalex
a6efbc9553 readme: point the showcase link at the new video 2026-07-24 13:38:01 +01:00
mchughalex
587f5dc17f src: include cstddef in headers that use size_t 2026-07-24 13:38:01 +01:00
mchughalex
b046a436c5 video: use the 2x first-run render scale on macOS too 2026-07-24 13:38:01 +01:00
mchughalex
414015f525 macos: name the app bundle and window title skate3recomp 2026-07-24 13:38:01 +01:00
mchughalex
b2e4fc48a7 readme: link the native rendering showcase video 2026-07-24 13:38:01 +01:00
mchughalex
7329af15a8 render: default the frame cap to Auto (display refresh - 4) 2026-07-24 13:38:01 +01:00
mchughalex
7b0d690cf3 render: skip rebuilding occlusion-culled statics on most frames 2026-07-24 13:38:01 +01:00
mchughalex
8f8642aec2 render: time the submit-record loop and pre-size per-frame bookkeeping 2026-07-24 13:38:01 +01:00
mchughalex
2aef1222a0 render: skip guest draw-list dispatch for occlusion-culled statics 2026-07-24 13:38:01 +01:00
mchughalex
73c19c8cd3 render: occlusion-cull statics hidden behind rendered geometry 2026-07-24 13:38:01 +01:00
mchughalex
13447a041f render: profile the per-item CPU pipeline with occlusion-grid visibility attribution 2026-07-24 13:38:01 +01:00
mchughalex
70a7c55183 app: unload stream-probe cells before map transitions tear them down 2026-07-24 13:38:01 +01:00
mchughalex
87b27dc2a9 app: keep the stream-probe fan out of map loads 2026-07-24 13:38:01 +01:00
mchughalex
c0ba909c86 render: accumulate the static world-shadow map incrementally (SDK bump) 2026-07-24 13:38:01 +01:00
mchughalex
ceb98c34ec render: march sun shafts at quarter res with reach-proportional steps 2026-07-24 13:38:01 +01:00
mchughalex
4d616e4d45 render: mark the native scene passes for GPU-time attribution (SDK bump) 2026-07-24 13:38:01 +01:00
mchughalex
5fa92705a5 third_party: bump rexglue-sdk 2026-07-24 13:38:01 +01:00
mchughalex
e1ec3ac6b0 third_party: bump rexglue-sdk 2026-07-24 13:38:00 +01:00
mchughalex
dbb049bed4 third_party: bump rexglue-sdk 2026-07-24 13:38:00 +01:00
mchughalex
5a18cd8960 docs: README overhaul for the v2.0.0 native renderer release 2026-07-24 13:38:00 +01:00
mchughalex
b32b4332a8 third_party: bump rexglue-sdk 2026-07-21 11:40:02 +01:00
mchughalex
2b43fb2474 macos: self-contained application bundle with user files beside it (SDK bump) 2026-07-21 11:40:02 +01:00
mchughalex
25c68a89d7 ui: guard the settings-menu gamepad poll against runtime teardown 2026-07-21 10:50:13 +01:00
mchughalex
9fb6e5505f render: widen the content-store count caps now that byte budgets bound VRAM 2026-07-21 10:34:23 +01:00
mchughalex
6a52dcad6e system: macOS crash-free exit and Finder app launcher docs (SDK bump) 2026-07-21 10:33:27 +01:00
mchughalex
0224fdf74e render: budget the content stores by GPU bytes and LRU-evict the cube cache 2026-07-21 10:21:37 +01:00
mchughalex
1185533295 input: SDL controller backend option, res-scale seam and MnK stuck-bind fixes (SDK bump) 2026-07-21 10:11:01 +01:00
mchughalex
7fa9585285 render: compile the showcase gates out of the standard shader variants 2026-07-21 09:50:17 +01:00
mchughalex
137d97c190 render: keep showcase staging fully inert while no showcase frame is live 2026-07-21 09:31:00 +01:00