Feel: ambient motion layer + art look locked (clean dark-Synty, pixel OFF)

Art look LOCKED by the operator from the artlook_* side-by-sides:
clean dark-Synty; PixelOutline._MasterEnabled=0 shipped (feature stays
dev-toggleable via F3; other fullscreen effects remain backlog).

New AmbientMotionSystem (client-only PresentationSystemGroup, the
"world alive" anti-static beat, zero netcode):
- per-biome DRIFT particles from one world-space emitter following the
  camera (meadow motes / arid wind-blown dust / cavern motes / blight
  spores; palette keys on camera-X region + replicated room biome,
  mirroring WorldAtmosphereSystem's switch)
- idle SWAY on the ACTIVE cosmetic flora prop roots near the camera
  (LOD children follow the root; probed: none static-batched)
- walk-through RUSTLE: flora brushed by the local player
  (GhostOwnerIsLocal idiom) gets a decaying energy shake
Rotations write around a cached base (lossless when toggled off);
knobs in AmbientMotionConfig (scene object, code defaults when absent).

Verified live: drift palettes exact in both regions (meadow
0.62/0.85/0.60 -> arid 0.85/0.68/0.45 on region cross), flora beside
the player rocked (0,0)->(-4.0,+5.0) deg within the rustle+sway
envelope, 466/466 EditMode, console clean. Discovery for follow-up:
the BASE biome's flora props are authored INACTIVE (84 bushes etc.) -
the base has no sway targets until some are re-enabled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 21:01:14 -07:00
parent edc476adfd
commit 90d4bed381
6 changed files with 405 additions and 6 deletions
+6 -6
View File
@@ -28,16 +28,16 @@ Material:
- _Brightness: 1.1
- _ColorLevels: 12
- _Contrast: 1.05
- _DepthEdgesEnabled: 0
- _DepthEdgesEnabled: 1
- _DepthThreshold: 0.08
- _EdgeStrength: 1
- _MasterEnabled: 1
- _NormalEdgesEnabled: 0
- _MasterEnabled: 0
- _NormalEdgesEnabled: 1
- _NormalThreshold: 1
- _OutlineThickness: 1
- _PixelHeight: 200
- _PixelateEnabled: 0
- _PosterizeEnabled: 0
- _PixelHeight: 399.82455
- _PixelateEnabled: 1
- _PosterizeEnabled: 1
- _Saturation: 1.35
m_Colors:
- _OutlineColorInner: {r: 0, g: 0, b: 0, a: 1}