Commit graph

113 commits

Author SHA1 Message Date
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
mchughalex
ebe14fcd1f render: recover streaming-revoked guest read faults on linux and macos 2026-07-24 19:03:31 +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
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
ceb98c34ec render: march sun shafts at quarter res with reach-proportional steps 2026-07-24 13:38:01 +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
b1cbbc263d render: swap unfixed caster-bank publishes for the last main-view capture 2026-07-21 08:27:09 +01:00
mchughalex
c03ef926eb render: hold shadow-caster parity through short ortho-capture gaps 2026-07-21 08:11:38 +01:00
mchughalex
b6d9442b45 render: add a Vulkan-only static sun receiver bias margin for toolchain rounding differences 2026-07-21 07:57:12 +01:00
mchughalex
fbcffc1445 render: fill one-to-two frame dyn publish gaps with the previous capture 2026-07-21 06:19:40 +01:00
mchughalex
f6d0136168 render: demote per-frame capture diagnostics to debug, align example config with texture-load defaults 2026-07-21 05:24:40 +01:00
mchughalex
b8a8180475 render: drop the static sun forced-failure debug hook 2026-07-21 03:33:42 +01:00
mchughalex
77283fe3fb render: surface the sticky-failure fallback (EMULATED readout, F5 retry, forced-failure debug hook) 2026-07-21 03:31:11 +01:00
mchughalex
33b7465d2e render: showcase decals/dyn layers, blackout bookends, and hot-rebuild fixes 2026-07-21 02:40:19 +01:00
mchughalex
32eb60337a render: true ultrawide through the native renderer 2026-07-20 00:36:16 +01:00
mchughalex
035d3e22a0 app: move the showcase hotkey to Ctrl+Shift+B 2026-07-20 00:08:18 +01:00
mchughalex
cb14799e47 render: apply MSAA and shadow map resolution changes live 2026-07-19 23:50:32 +01:00
mchughalex
404cec3378 app: gate diagnostic captures and logging behind debug cvars, native renderer on by default 2026-07-19 22:45:33 +01:00
mchughalex
275fa431c3 render: character normal maps and specular lighting 2026-07-19 21:59:58 +01:00
mchughalex
ccf84fade3 render: graphics build-up showcase mode 2026-07-19 19:58:30 +01:00
mchughalex
2e03593801 render: free-fly drone camera with guest camera takeover 2026-07-19 19:46:17 +01:00
mchughalex
a5f54b4827 render: fingerprint DXT alpha blocks by their color half (stale menu art) 2026-07-19 18:51:25 +01:00
mchughalex
cbc492a407 render: exact scrollincandescent port - the LED chyron scrolls and glows 2026-07-19 18:49:29 +01:00
mchughalex
e518d0ef8f render: bias the sun-override cascade re-fit along the shadow direction 2026-07-19 17:09:38 +01:00
mchughalex
f11aa9ece4 render: cascaded static sun-shadow map with contact-hardening soft shadows 2026-07-19 16:55:36 +01:00
mchughalex
9088059ed5 render: keep character smoothing coherent at very high frame rates 2026-07-19 14:42:29 +01:00
mchughalex
ae07a1c1c1 render: calibrate the default bloom intensity down to 0.025 2026-07-19 14:07:47 +01:00
mchughalex
f2aaf4081e render: volumetric sun shafts, directional haze, and a movable-sun lighting lab 2026-07-19 14:05:10 +01:00
mchughalex
75c8487ee6 render: port the water and ocean shaders to exact native branches 2026-07-19 13:02:10 +01:00
mchughalex
e591f76f21 render: split the scene renderer into capture and GPU translation units 2026-07-19 10:19:22 +01:00
mchughalex
b97d6dcadc render: drop the retired vehicle-flick detector; quiet diagnostics by default 2026-07-19 09:39:43 +01:00
mchughalex
1f8166e21c render: rename renderer identifiers and perf labels 2026-07-19 09:35:42 +01:00
mchughalex
cb92f6aec5 render: promote the palette serve into its own module, retire the shadow observers 2026-07-19 09:32:57 +01:00
mchughalex
4ee3c458bf render: remove the shadow-mat observers and other dead diagnostics 2026-07-19 09:25:26 +01:00
mchughalex
80499b9f06 render: screen-space reflections (experimental, off by default) 2026-07-17 13:42:44 +01:00
mchughalex
3e09f33daf render: HDR scene pipeline + real bloom (SDK bump) 2026-07-17 12:07:38 +01:00
mchughalex
ae9720bf1a render: retire inert capture-inference guards superseded by the identity store 2026-07-17 12:01:40 +01:00
mchughalex
bfb3c07839 render: skater-family character fade from the entity opacity field 2026-07-17 11:19:34 +01:00
mchughalex
e19657a45d render: presentation-entity identity store + ROPA garment lifecycle 2026-07-17 11:15:27 +01:00