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