Commit Graph
100 Commits
Author SHA1 Message Date
adminandClaude Fable 5 d6c3e2a3b8 Update README to current project state
The README still described the earliest painting/movement prototype. Bring
it up to date with the playable multiplayer prototype: match loop (Classic/
Conversion), Paint HUD + PBR channels, pose system, NGO/UGS networking,
HTrace Deferred+ rendering, editor tooling (Poly Haven / ambientCG
importers), current controls, Main boot scene flow, real project layout
and an updated roadmap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:30:22 +02:00
adminandClaude Fable 5 78ae0c84d8 Import Chess Set model, add stool prefab and update The Room scene
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 18:01:07 +02:00
adminandClaude Fable 5 450ecb9466 Import Poly Haven models and update The Room scene
Folding Wooden Stool and Gothic Commode 01 imported via the new model
mode (FBX + maps + generated materials), plus The Room scene changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:43:38 +02:00
adminandClaude Fable 5 eab5081354 Add model import support to Poly Haven importer
Browser gets Textures/Models tabs (per-type catalog cache). Model file
JSON is parsed into per-set texture maps (generic set-prefix matching),
FBX is downloaded with resolution fallback, one URP/Lit material is
built per set via the shared PbrMaterialBuilder (which now returns the
created Material), and new ModelImportUtil remaps FBX material slots to
the built materials by set-name matching.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 16:43:24 +02:00
adminandClaude Fable 5 2b9a189d58 Import ambientCG material sets and scene/material tweaks
Imported ambientCG assets plus adjustments to the three Poly Haven
brick materials and The Room scene.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 15:27:12 +02:00
adminandClaude Fable 5 fb4098b9f8 Add ambientCG importer and extract shared web-asset import framework
New Tools/ambientCG Importer window (catalog browser, ZIP download with
selective map extraction, URP/Lit material build). Generic pieces moved
from the PolyHaven tool into Editor/WebAssets (EditorWebRequest,
PbrMapType, PbrMaterialBuilder, ImportUtil, AssetBrowserGrid); PolyHaven
API/window now delegate to the shared code, behavior unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 15:27:02 +02:00
adminandClaude Fable 5 9b35ee2a97 Remove unused source maps from imported Poly Haven brick sets
Drop the roughness (now consumed into _metallic_smoothness), ARM, and
height textures from the three existing brick material sets; no material
referenced them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:47:56 +02:00
adminandClaude Fable 5 dc731a9941 Auto-delete consumed roughness source after metallic-smoothness repack
PolyHavenMaterialBuilder now removes the separate roughness map (asset +
meta) once its data has been packed into the generated
_metallic_smoothness.png; skipped when the repack fails or roughness came
from the ARM texture.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:47:49 +02:00
adminandClaude Fable 5 0e855622c4 Import Poly Haven materials and scene/authoring updates
Three imported PBR texture sets with generated URP/Lit materials
(Brick 4, Brick Floor 002, Brick Wall 003), scene churn in Main and
The Room, ProBuilder palette/settings updates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:30:04 +02:00
adminandClaude Fable 5 897ba57599 Add Poly Haven importer editor tool
Tools/Poly Haven Importer: fetches asset metadata/files via the public
Poly Haven API, browsable texture catalog with searchable thumbnail
grid, per-map resolution selection, async non-blocking downloads, and
automatic URP/Lit material build (roughness->smoothness repacking into
_MetallicGlossMap, ARM unpacking as fallback for missing AO/Rough/Metal
maps, linear import settings for data textures). Thumbnails survive
play mode via HideAndDontSave + destroyed-cache recovery.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:29:38 +02:00
adminandClaude Opus 4.8 3441e3413e content: Lobby-Materialien und Szenen-Authoring
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 08:29:25 +02:00
adminandClaude Opus 4.8 c7e3b6cad7 feat: Camo/Height/Emission-Slider nicht mehr persistieren
Die 8 HUD-Slider (Half Lambert, Brightness, Saturation, Specular Damp,
Occlusion Threshold, Normal/Parallax/Emission Intensity) als
[NonSerialized] markiert: bleiben zur Laufzeit ueber Respawn erhalten,
werden aber nicht mehr im PaintHud.json gespeichert/geladen. Tote
hasCamoValues/hasHeightValues-Flags entfernt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 08:29:25 +02:00
adminandClaude Opus 4.8 0128203160 feat: HTrace WSGI in der Lobby-Szene deaktivieren
Scene-Component HTraceLobbyToggle (in Main) hoert auf additive
Szenen-Events und schaltet die HTraceWSGI-Component aus, solange die
Lobby geladen ist, sonst an. Lobby-Szenenname im Inspector konfigurierbar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 08:29:25 +02:00
adminandClaude Opus 4.8 cdd9fa9532 MeshPainter: Rückseiten-Abweisung über Flächen-Normale bei großem Brush
Zusätzlich zum Kugel-Test wird die Oberflächen-Normale jedes Texels gegen
die Brush-Normale geprüft (CPU/GPU/Preview). Neues Inspector-Feld
"Brush Max Surface Angle" (90-180°, Default 120°). Bei fehlenden Mesh-Normalen
Degradation zur reinen Kugel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:26:35 +02:00
adminandClaude Opus 4.8 9d17baee85 Authoring: T-Pose (Anim/Pose-Asset), Pose-Icons neu gerendert, Szenen
Neue T-Pose (Paintman-TPose.anim, Pose_TPose.asset, Icon_pose_tpose),
UMotion-Projekt erweitert, alle Pose-Icons neu gerendert; dazu Szenen-
Churn (Main, The Room, Pose Icon) und ProBuilder-Settings.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:11:47 +02:00
adminandClaude Opus 4.8 1f42c990fb MeshPainter: Kugel-Brush statt Box, cornerGuard entfernt
Stamp testet den Brush wieder als 3D-Kugel (du²+dv²+dn² = r²) statt
als Box (|du|,|dv|,|dn| = r) — konsistent über CPU, GPU-Brush und
Preview. Die Box reichte diagonal bis r·√3 und spannte einen 2r-dicken
Slab entlang der Normale, wodurch an Nähten/Kanten/dünner Geometrie auf
die Gegenseite/Nachbarinseln gemalt wurde. Die Kugel reicht in jede
Richtung exakt r und überbrückt echte 3D-Nähte weiterhin, greift aber
nicht mehr über r hinaus.

cornerGuard war nur ein Pflaster gegen genau diesen Box-Übergriff und
ist damit überflüssig: Config-Felder, Suppress-Check und Helper
(DabWrapsAroundCorner, CornerWrapFraction, InBrushBox, SquareReach)
entfernt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:11:41 +02:00
adminandClaude Opus 4.8 2195427e6c Content/Authoring: The Room + Hemnes-Shelf-Concealment-Collider
- 24 generierte Concealment-Collider fuer Hemnes Shelf (The Room)
- The Room.unity Umbau, Lobby.unity, Couch_Big-Prefab-Wiring
- White Glow.mat, Majoras Mask.glb.meta

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 21:36:49 +02:00
adminandClaude Opus 4.8 8abcb8b4ff MeshPainter-Pipette: von AVP/*-Shadern picken + Console-Spam-Fix
- Material-Read-Helper (GetColorProp/GetTexProp/GetFloatProp/ApplyST) auf
  variadische Namenslisten umgestellt
- Albedo/Metallic/Smoothness/Emission der AVP-Shader (POM, Glass, Velvet,
  Velvet_Curtains) werden jetzt name- und typ-tolerant gepickt
- typ-gepruefter HasProp (Shader.GetPropertyType) verhindert GetFloat-Spam
  bei _Metallic/_Smoothness als Textur
- ConcealmentVolume: begleitende Anpassung

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 21:36:43 +02:00
adminandClaude Opus 4.8 2a6aeec5e2 Update The Room + Main scene authoring and window/audio settings
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 17:04:32 +02:00
adminandClaude Opus 4.8 c637c566ce Add concealment colliders for The Room light/shelf props
Generate concealment colliders for Big_Light_01, Kallax_Chest and
Kragsta_Tall in The Room; wire the Big_Light_01 prefab and scene
references. Includes incidental ProBuilder settings churn.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 23:00:11 +02:00
adminandClaude Opus 4.8 b2f602589e Content/authoring: concealment colliders, scene + material tweaks, ignore third-party asset packs
- Generated concealment colliders for The Room (Fortuny ON base/top)
- Main + The Room scene edits, Wall_White material variants
- ProjectSettings churn (PackageManager, ProBuilder settings)
- .gitignore: exclude imported Allsky / ArchVizPRO Vol.6 / Isle of Assets packs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 09:17:39 +02:00
adminandClaude Opus 4.8 50c33acb7e Fix bloom firefly flicker: enable clamp, raise threshold
Clamp override was off (value 65472 = effectively unbounded), so single
bright HDR pixels pulsed the bloom frame-to-frame. Clamp on at 80,
threshold 0.6->0.8, intensity 0.2->0.3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 09:17:29 +02:00
adminandClaude Fable 5 14eddbb427 Wire generated pose icons, icon scales and pose button sprite
- Icon_pose_{ball,hold,idle,sit,star,wall}.png (rendered via PoseIconStage) as sprites
- Pose assets: icon references + per-pose iconScale tuning; Hold re-serialized with missing default fields
- Main: pose overview button sprite; Pose Icon scene framing tweaks; Player.mat shader switch

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 21:09:05 +02:00
adminandClaude Fable 5 5f5892047c Add pose icon capture pipeline, icon scale, Esc/Tab opens overview in paint mode
- PoseIconStage: permanent editor capture pipeline (context menu 'Capture All Icons') — renders each entry at 4096x4096, alpha-crops, writes Icon_pose_*.png and wires sprites onto matching PlayerPose assets
- PlayerPose: new iconScale property (0.1-2), applied to the icon child in PoseMenu's radial layout
- OverviewMenu: paint-mode special-case removed — Esc/Tab opens the overview menu in every mode

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 21:08:56 +02:00
adminandClaude Fable 5 2de153d8fe Add toon shader with outline for pose icon stage
Cel-shaded white body with tinted shadow band plus inverted-hull
clip-space outline (constant screen width, works in deferred via
SRPDefaultUnlit). Key light added to the Pose Icon scene, material
wired to the Paintman.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:59:15 +02:00
adminandClaude Fable 5 ed1d171ed3 Authoring: hotkey hints on menu buttons, pose radial radius, Player.mat
Main: Taunt/Pose button labels show their hotkeys (E/C), pose radial
radius 220 -> 150. Player.mat switched to URP Lit (drops invalid
keyword), UMotion project state churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:48:17 +02:00
adminandClaude Fable 5 083d0b8430 Add PoseIconStage editor component and Pose Icon scene
Applies a pose clip plus root position/rotation to the staged Paintman
for authoring pose icons (screenshot pipeline follows later).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:48:07 +02:00
adminandClaude Fable 5 7e9f255de5 Cycle pose directly instead of radial menu with 2 or fewer poses
With a small pose set (hunter) the pose button and C hotkey advance
to the next pose immediately instead of opening the radial overlay.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:48:00 +02:00
adminandClaude Fable 5 21cb0ac8ad Center icon button label with fixed width, drop obsolete per-instance overrides
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 16:22:25 +02:00
adminandClaude Fable 5 292ec430a3 Main: Pose UI wiring (PoseMenu, radial items container, pose button)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 16:17:46 +02:00
adminandClaude Fable 5 3a2e8a7057 Add radial pose menu with hotkeys, remove C cycle hotkey
- PlayerPose: Icon (Sprite) + Title (string) UI properties
- PoseMenu: modal pause overlay building a radial menu from Icon Button
  prefab instances; active pose disabled (hover ring marks it); click
  applies pose via SetPoseIndex and closes
- OverviewMenu: pose button wiring with pause hand-off, Esc/Tab chain
  extended; hotkeys C (toggle pose menu) and V (paint mode) mirroring
  the buttons incl. identical gating
- PlayerPoseController: C cycle hotkey and NextPose() removed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 16:17:40 +02:00
adminandClaude Fable 5 c3d9c06118 Fix wall-climb jitter in pinches between two surfaces
The center re-probe could miss the still-touching climbed face and adopt
a hit on a different collider much farther out, flipping the wall normal
and letting the standoff servo drag the capsule across the pinch every
other frame. When the probed gap is well beyond the standoff and the
full-capsule span still holds a steep surface meaningfully closer, keep
that contact instead of defecting to the far hit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:44:27 +02:00
adminandClaude Fable 5 782c3b4381 Block escape/tab menu while loading locally (join sync + Loading phase)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:30:31 +02:00
adminandClaude Fable 5 cab7590774 Main: taunt icon button wiring in Overview UI
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:22:54 +02:00
adminandClaude Fable 5 c6a22c1643 Add taunt button, Tab as Escape alternative, free cam Q/E removal
- OverviewMenu: taunt button (manual ping + close, hider/seek-only), Tab triggers the Escape chain (TypingGuard-gated)
- GameModeManager: LocalPlayerIsHider helper, allow E-ping in free cam (Q/E no longer used for movement)
- FreeCamController: vertical movement only via Space/Ctrl
- Icons: Icon_taunt (wired), Icon_firstperson_paint (unwired, for later)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 15:22:47 +02:00
adminandClaude Fable 5 1054bcd3d6 Main: Overview UI icon buttons authoring
Scene edits wiring the new Icon Button prefab/icons into the Overview
menu (includes the usual re-save YAML reshuffle) plus TMP font SDF
atlas churn from the UI work.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 14:46:51 +02:00
adminandClaude Fable 5 c6b67faa60 Add Overview UI icon set, Icon Button prefab and hover/disabled ring
- 7 generated icons (settings, statistics, paint, freecam, thirdperson,
  firstperson v3 viewfinder, spectator eye) + hand-painted hover ring,
  full-res PNGs imported as sprites (max size 256)
- Icon Background texture (user asset)
- IconButtonHover: shows the Hover child on pointer hover or while the
  button is non-interactable (doubles as active-mode marker)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 14:46:41 +02:00
adminandClaude Fable 5 bb57a97ed7 Main: Match Results menu wiring
New Match Results menu + button (user authoring), MatchResultScreen
_panelRoot reference; includes the usual re-save YAML reshuffle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:55:13 +02:00
adminandClaude Fable 5 7669ae1b66 Complete Match Results modal: standalone overlay, auto-open on resolution
MatchResultScreen becomes a self-contained modal (IsOpen/Open/Close,
_panelRoot, pause handling); resolution auto-open moves there from the
session browser. OverviewMenu integrates it into the Esc chain and hides
the Match Results button until results exist (same pattern as the
role-scoped mode buttons).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:55:05 +02:00
adminandClaude Fable 5 fdb562bba5 Main: Overview UI wiring for the new escape menu
- Overview UI canvas active, OverviewMenu component wired to panel,
  browser reference and mode buttons; includes YAML reshuffle from the
  scene re-save (content verified unchanged).
- EditorSettings: known 1-line churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:34:21 +02:00
adminandClaude Fable 5 7ac6038121 Add OverviewMenu escape menu, remove Tab mode cycling
- New OverviewMenu component: Esc toggles the pause overlay, buttons
  switch modes via GameModeManager.TrySwitchTo<T>() and close the panel;
  visibility follows the role-scoped mode set, active mode disabled.
- Esc in paint mode exits to camera mode instead (PlayerControlMode,
  hunter falls back to FirstPersonMode) rather than opening the menu.
- Centralized all Esc handling in OverviewMenu (browser close included)
  to avoid frame races; OnlineSessionBrowserUI gains IsOpen/Open/Close.
- GameModeManager: switchKey Tab-cycle removed, TrySwitchTo<T> added.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 12:34:12 +02:00
adminandClaude Fable 5 367bc9cee0 Content: Steam Audio export rename + wall transmission tuning
- The Room export split/renamed to 'The Room Scene.asset' / 'The Room Audio.asset' under Assets/Scenes (old root-level export removed), scene references updated
- Default Steam Audio material: transmission raised (0.8/0.6/0.3) so walls dampen less aggressively
- EditorSettings: enter-play-mode options reset

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 00:26:08 +02:00
adminandClaude Fable 5 4c63a5e5dd Audio: radar taunt at head height + Steam Audio source tuning
- MatchManager: taunt positions resolve the FirstPersonTarget child instead of the player root (shared TauntPosition helper, root fallback)
- SoundEffectInstance: physics-based distance attenuation + raycast occlusion on runtime SteamAudioSource

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 00:26:01 +02:00
adminandClaude Fable 5 7f18dc82f6 Content: The Room Steam Audio geometry export
SteamAudioGeometry on Map root (exportAllChildren) + exported static
mesh asset so occlusion raycasts have scene geometry to hit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:33:38 +02:00
adminandClaude Fable 5 706100e322 Audio: per-SoundEffect occlusion via Steam Audio + 3D flag refactor
- New occlusion opt-in on SoundEffect: spatialized instances get a
  SteamAudioSource with raycast occlusion + frequency-dependent
  transmission (walls muffle instead of hard-mute)
- Replace SoundEffectDistanceRange asset indirection with an explicit
  _3d bool (user refactor); rolloff/distance now left to defaults
- Hey.asset: occlusion enabled

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:33:29 +02:00
adminandClaude Fable 5 c25d0777c2 Content: Hey taunt asset, audio folder, radar sound wiring
New Assets/Audio/ with Hey.asset (+ ogg samples), Sound Effect
Distance Range moved there; Main.unity wires Hey.asset to the
MatchManager radar ping; The Room AudioSource tweak and regenerated
Player.prefab GlobalObjectIdHash (editor churn).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:11:46 +02:00
adminandClaude Fable 5 0172a1e834 Radar ping taunt sound + per-SoundEffect spatialize opt-in
MatchManager: new Radar Ping Sound property; MsgRadarPing now goes to
all clients (spawnBlips flag keeps blips hunter-only), sound plays 3D
at each pinged hider. Distance-based stagger (speed of sound + 35 ms
min gap) prevents phase cancellation when multiple hiders ping.

SoundEffect: new spatialize toggle (per asset, applied only to 3D
instances -> Steam Audio HRTF); removed unused fade field.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:11:39 +02:00
adminandClaude Fable 5 a36f398b94 Add Steam Audio 4.8.1 spatializer plugin
Official Unity package under Assets/Plugins/SteamAudio; enabled as
Spatializer + Ambisonic Decoder in the audio settings (HRTF: sounds
behind the listener are filtered/muffled directionally). Download
staging Tools/SteamAudio/ gitignored.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:11:30 +02:00
adminandClaude Fable 5 1093e22ff9 Player prefab: regenerated Netcode GlobalObjectIdHash
Editor-side churn from a prefab re-save (NetworkObject hash regen).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 22:22:02 +02:00
adminandClaude Fable 5 1d5676ab3c Stop paint particles when no stamp lands during a held stroke
Particles kept playing at the last hit position when the cursor left the
mesh mid-stroke. New _stampLandedThisFrame flag: reset before each stamp
attempt, set only where the dab actually paints (after placement and
corner guard); no landed stamp -> StopPaintParticles immediately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 22:21:56 +02:00
adminandClaude Fable 5 094cf3a493 Paint-Partikel beim Malen: Emission pro Stamp, Scale = Brush-Radius, Farbe = Brush-Albedo mit Helligkeits-Streuung
- MeshPainter: Paint Particles Prefab, lazy Instanz, Play/Stop am Stroke, MinMaxGradient (Albedo +-25%/15% dunkel/hell)
- PaintSplatter.prefab + Paint Particle Material/Textur, Wiring am Player.prefab
- FurShellRenderer: Kill-Switch-Destroy nur im Play-Mode (Edit-Mode-Error beim Prefab-Load)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 22:13:16 +02:00
adminandClaude Fable 5 a5438cf5a0 Main: normalisierte Cursor-Hotspots am CursorController
Enthält zwangsläufig auch den PaintHud-RectTransform-Churn (Prefab-Override-Anker/Größen) — Szenen-File nicht splitbar.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:35:46 +02:00
adminandClaude Fable 5 423a2d15ec Cursors: Krea-Grafiken in voller Auflösung, Blank-Cursor beim Malen, normalisierte Hotspots
- Cursor_Normal/Paint/Pipette: generierte Grafiken jetzt in Vollauflösung (766-829 px, Max Size im Importer steuert Anzeigegröße), Paint-Ring-Inneres freigestellt
- Neuer Cursor_Blank (transparent): wird während eines Strokes auf dem Mesh gesetzt statt Cursor.visible zu togglen (fixt Flicker-Kampf mit dem Orbit-Input)
- CursorController: Hotspots normalisiert (0-1, unabhängig von Import Max Size); Zustandskette Pipette > (Stroke ? Blank : Paint) > Normal; off-mesh während Stroke -> Normal
- MeshPainter: StrokeInProgress-Flag (Maustaste auf Paint-Pfad gehalten)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:35:36 +02:00
adminandClaude Fable 5 653bc79236 Main: wire Cursor Controller into scene (+ UI RectTransform churn)
Scene file can't be split: also carries PaintHud anchor/size re-serialization
from the layout pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:09:22 +02:00
adminandClaude Fable 5 ae5fa63141 Custom mouse cursor: normal/paint/pipette with recorder-aware software mode
- CursorController: polls painter state in LateUpdate; paint cursor only
  while the brush preview decal actually draws (MeshPainter.BrushPreviewVisible),
  pipette while held/toggled, fallback to normal over UI (InputUtil.PointerOverUi)
- Auto ForceSoftware while Unity Recorder is recording (reflection into
  editor-only assembly, 0.5s poll, editor-only) so the cursor is captured;
  back to hardware cursor when recording stops
- 3 placeholder cursor PNGs (32x32, cursor import type) with per-cursor hotspots

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 18:09:14 +02:00
adminandClaude Fable 5 9decea3501 The Room: scene pass (generated skybox reflection cubemap churn)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:48:29 +02:00
adminandClaude Fable 5 03c7243fa6 PaintHud: layout pass (anchors/size tweaks, one element disabled)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:48:29 +02:00
adminandClaude Fable 5 39ab1a3ced Disable FurShellRenderer globally (not production-ready yet)
IsGloballyEnabled() kill switch: Awake destroys the component at
runtime, OnEnable self-disables in the editor. Flip the constant to
re-enable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 17:48:29 +02:00
adminandClaude Fable 5 0541a6416f The Room: Fur-Wiring (rootAO 0.4, neuer FurShellRenderer), Wall_White ohne Env-Reflections, Mobile_Renderer XRay-Umbenennung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:59:38 +02:00
adminandClaude Fable 5 b4e4c19e54 FurShell: Performance-Umbau (Distanz-LOD, Cutout+Early-Z, Tip-to-Root) + Deferred+/HTrace-Fixes
- Distanz-LOD am Renderer (Start/End/Min Shells, pro Kamera), Rendering Layer Mask wie beim MeshRenderer
- Cutout in der AlphaTest-Queue statt Transparent-Blend (Early-Z killt Overdraw), Shells tip-to-root submitted
- LightMode UniversalForwardOnly (Deferred+ hatte den Opaque-Pass sonst nicht gezeichnet)
- FurGBuffer-Pass (ComplexLit-Muster): HTrace WSGI sieht das Fell, kein Durchscheinen mehr
- Root-AO-Fix: Grading straehnen-relativ (gradeH) statt absoluter Shell-Hoehe -- schwarze Streifen weg
- Distanz-Aggregations-Fade wieder entfernt (auf Wunsch, Fern-Straehnen bleiben voll)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 16:59:38 +02:00
adminandClaude Fable 5 4ed74a5005 The Room: fur test object wiring + cubemap churn
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 14:30:53 +02:00
adminandClaude Fable 5 874ddccb4f FurShell: per-pixel z-order between fur objects (ZWrite On + coverage clip)
Transparent queue sorted fur draws per object, so overlapping fur
renderers swapped in front of each other frame to frame. FurForward
now writes depth; new Depth Sort Clip tunable discards low-coverage
fragments before they write depth (avoids halo punch-through).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 14:30:47 +02:00
adminandClaude Fable 5 38b9369051 Fix master volume not applied on startup
The mixer's start snapshot overwrites exposed params set before the
first frame, so the BeforeSceneLoad SetFloat was discarded. Re-apply
the saved volume after one frame (Awaitable.NextFrameAsync).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 13:06:44 +02:00
adminandClaude Fable 5 46b8d532b6 Enable third-person camera collision against BlockCam layer only
- Main: Deoccluder CollideAgainst = BlockCam (256), CameraRadius 0.01,
  HeroCutout.replaceDeoccluderPullIn off (re-enables AvoidObstacles at runtime)
- Lobby: Floor moved to BlockCam layer

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:50:27 +02:00
adminandClaude Fable 5 720a4c96f7 Content: frame texture maps, scene passes, BlockCam layer prep
- Generated _normal/_height maps for all frame photo textures (DeepBump)
- The Room: picture frame pass; Lobby/Test Map scene passes
- AudioMixer: unmute group
- New layer 8 "BlockCam" (TagManager) + Main Camera culling mask includes it

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:30:31 +02:00
adminandClaude Fable 5 57a4627b81 PictureFrameBuilder/Shader: lighting parity, HTrace GBuffer pass, absolute frame metrics
Shader (PictureTessellationLit):
- Lighting parity with URP Lit: lightmaps, shadowmask/mixed, APV, DBuffer
  decals, vertex additional lights, rendering layers, fragment fog
- UniversalGBuffer pass (with tessellation + graded albedo) so HTrace WSGI
  composes correct GI instead of a cyan veil over pictures
- Skip GPU tessellation entirely when strength/displacement is 0
- Inspector ranges matched to builder (-3..3 bump, -10..10 tessellation)

Builder:
- Frame Thickness & Padding are now absolute meters (size-independent)
  instead of fractions of the picture size
- Tooltip updates for the new default/range semantics

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 12:30:19 +02:00
adminandClaude Fable 5 0c7ac11023 The Room: generated normal/height maps on picture frames, Frame Picture.mat
Generated _normal/_height PNGs for the P10027xx photo set, wired height maps
and strength values on scene frames, Frame Picture material switched to the
new PictureTessellationLit shader.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:25:56 +02:00
adminandClaude Fable 5 defd970cf8 PictureFrameBuilder: normal/height maps, strengths, crop, subdivisions
- Optional Picture Normal Map + Height Map fields on the per-frame material
  instance (_BumpMap/_NORMALMAP keyword, _HeightMap; height doubles as
  occlusion map when the material has none)
- Sliders: Normal Map Strength, Occlusion Strength, Tessellation Strength
  (0-3, default 1), Occlusion Contrast (-1-3), Brightness (0-3)
- Picture Crop left/right/top/bottom via UV window remap; aspect follows
  the cropped pixel dimensions
- Picture Subdivisions (1-64): picture surface as triangle grid for
  tessellation displacement

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:25:49 +02:00
adminandClaude Fable 5 d0d7028ebb Add PictureTessellationLit shader (tessellation + height displacement)
Hull/domain tessellation with height-map displacement, occlusion map with
strength/contrast controls, height-weighted brightness multiplier, standard
PBR (base/normal/metallic/smoothness). ComplexLit pattern (UniversalForwardOnly)
so custom shading survives Deferred+; ShadowCaster/DepthOnly/DepthNormalsOnly
all run through the same displacement domain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:25:38 +02:00
adminandClaude Fable 5 8a5f5fd832 Add DeepBump normal + height map generator editor tool
Right-click a texture > Process > Generate Normal + Height Map (DeepBump):
runs the DeepBump ML CLI (color_to_normals, then normals_to_height) in the
background with progress display. Sources larger than 2048px are downscaled
via Pillow/Lanczos first (quadratic tile cost, avoids grid seams). Normal
imports as Normal Map, height as linear (sRGB off). Tool lives outside
Assets under Tools/DeepBump (gitignored: cloned repo + local venv).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 00:25:30 +02:00
adminandClaude Fable 5 adcd1db73b The Room content pass: 10 new photo textures, picture frames, mipmaps on photos
Enable mipmaps on the existing photo texture imports and add the new
IMG_20250412 photo set; scene pass in The Room.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:28 +02:00
adminandClaude Fable 5 27fe8775e1 Fix radar camera back to Overlay type
The renderer wiring had flipped it to Base; as a Base camera with
Don't Clear it rendered fullscreen into an uninitialized target
(RenderGraph debug yellow). Overlay restores stack compositing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:19 +02:00
adminandClaude Fable 5 eeaf45aa8f Nameplates: run positioning in Update instead of LateUpdate
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:19 +02:00
adminandClaude Fable 5 a2a0e85831 Spawn hider statues in resolution phase for classic mode too
Classic hit path now captures a statue record like conversion does;
rename the statue infrastructure (CaptureStatue/SpawnStatues/
DespawnStatues/_statueRecords) since it is no longer conversion-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:11 +02:00
adminandClaude Fable 5 14015d7134 Ignore drag-releases in slider double-click reset; tune HUD slider defaults
A pointer-up after a drag no longer counts as a click (dragging flag +
press-to-release distance within the existing tolerance), so drag ->
release -> click cannot trigger a reset anymore. PaintHud prefab:
pointer tolerance 4 px, HalfLambert default back to 0.5.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 22:37:03 +02:00
adminandClaude Fable 5 07839d0a7e The Room content pass: new photo textures, shelf prefab tweaks, AudioMixer update; remove test SoundEffect asset; ignore PSD~ sources
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:34 +02:00
adminandClaude Fable 5 90da315fbd Switch to Deferred+ with dedicated forward renderer for radar camera; rendering-layer setup across scenes
Also serializes wallStepOffset on Player prefab and includes SliderDoubleClickReset wiring in Main (mixed scene edits).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:32 +02:00
adminandClaude Fable 5 7fb0ff54b1 Add double-click-to-reset on all sliders (interval + pointer tolerance) and sync PaintHud slider defaults
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 cf794643a6 Fix camo forward pass on Deferred+ (ComplexLit forward-only path, HalfLambert/X-ray restored)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 b30db72e0c Add ledge grab: walking over an edge attaches to the wall below (not while sprinting)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:28:22 +02:00
adminandClaude Fable 5 ec7ab45ff1 The Room: scene pass, photo texture import settings (no mips/compression), remove Chameleon Background
Plus NetworkSimulator preset rid churn in Main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:26:04 +02:00
adminandClaude Fable 5 66f890869f Move Play Scene window menu entry to Tools/Play Scene
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:26:04 +02:00
adminandClaude Fable 5 0be503c927 Add SoundEffect audio system (ScriptableObject-based) with test assets
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 13:25:56 +02:00
admin 75f5704ab8 Ignore FR2_Cache.asset.meta 2026-07-10 08:13:36 +02:00
adminandClaude Fable 5 04514b83c7 The Room: replace photo quads/prefabs with picture frames
Content pass: new photo textures, picture frames built with
PictureFrameBuilder in the scene, Frame Inner.mat tweak; removed the
now-obsolete photo materials and Paint prefab variants.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 07:54:03 +02:00
adminandClaude Fable 5 5dbdc0e6b2 Add Picture Texture field to PictureFrameBuilder
Assigned texture drives the picture material BaseMap via a per-frame
material instance (asset untouched, frames sharing a material stay
independent) and takes priority for aspect resolution. New default
picture material Frame Picture.mat wired in the script defaults.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 07:53:54 +02:00
adminandClaude Fable 5 d1f7b79013 The Room: migrate test frame to relative properties, Frame.mat tweaks
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:32:26 +02:00
adminandClaude Fable 5 6a15a68a2e Make picture frame properties relative and fix picture aspect ratio
Frame thickness, corner radius, padding, inner depth and picture depth
are now normalized factors (scale with Size, no dead clamp zones).
Picture aspect is computed inside-out so padding and frame thickness
no longer distort the image. New Frame Inner.mat as inner default.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:32:19 +02:00
adminandClaude Fable 5 07aef0c7b2 The Room: picture frame authoring pass (size/aspect migration, Frame.mat)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:25 +02:00
adminandClaude Fable 5 850c92bcce Derive picture frame size from picture texture aspect ratio
Replace Width/Height with a single Size (longer side); the shorter side
follows the picture material's base map source-image aspect (editor-
resolved, serialized for builds, 1:1 fallback). Add Range attributes on
all frame parameters and default material references (new Frame.mat).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:18 +02:00
adminandClaude Fable 5 bac32a87a9 The Room: test frame collider wiring + pedestal picture depth
PictureFrameBuilder test frame now carries its 6 generated BoxColliders
(pictureDepth -0.05 pedestal case) plus the usual regenerated
SkyboxReflection cubemap churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:08:03 +02:00
adminandClaude Fable 5 5c6657d9d0 PictureFrameBuilder: auto box colliders + coalesced rebuild in Update
Rebuild now runs once per frame via ExecuteAlways Update (OnValidate only
sets a dirty flag + QueuePlayerLoopUpdate), fixing inspector drag stutter
from stacked delayCalls. Adds automatic BoxCollider generation (4 frame
bars, opening slab, optional pedestal box for raised pictures) with an
ownership list so manual colliders stay untouched. Corner radius is
intentionally ignored for colliders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:07:54 +02:00
adminandClaude Fable 5 a4d4c9ac91 The Room: add PictureFrameBuilder test frame, paint prefab scale tweaks
Includes the migrated frame values (Inner Depth 0.1, Picture Depth -0.05)
and the usual regenerated SkyboxReflection cubemap churn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:20:06 +02:00
adminandClaude Fable 5 210d0adc3e Add PictureFrameBuilder procedural picture frame component
Editor-tunable frame mesh: sliced scaling (constant profile), 4 material
submeshes (picture/interior/frame/back), padding, frame thickness/depth,
rounded outer edges (quarter-cylinder strips + eighth-sphere corner caps).
Frame Inner Depth sets the interior plane; Picture Depth is relative to it
(positive = recessed, negative = raised pedestal) with auto perimeter walls.
Meshes are per-instance, DontSave, rebuilt in OnEnable/OnValidate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:19:59 +02:00
adminandClaude Fable 5 bdce9ea0c8 Move HeroCutout shader files from Unused to Shaders
HeroCutoutLit.shader and its HeroCutout.hlsl include are in active use
(hero cutout occluder material); Assets/Shaders/ is the established
home for shader code. GUIDs preserved via .meta move, relative include
path unchanged - no references break.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 18:34:01 +02:00
adminandClaude Fable 5 2a59a32705 Clip hero cutout in MotionVectors pass to fix HTrace depth corruption
The MotionVectors pass (drawn by HTrace and URP against the real camera
depth buffer) was stock URP: no cutout clip and ZWrite on, so it wrote
the wall depth back into the hole after opaques. The skybox then failed
the depth test there (black disc) and all screen-space effects
(SSAO/GI) shaded the hole with the occluded wall's depth.

The pass now runs ApplyHeroCutout before URP's fragment entry point.
ObjectMotionVectors.hlsl forces its own entry via include_with_pragmas,
so the pragmas are declared explicitly and the file is plain-included.
Complements the earlier GBuffer clip; XR MV pass and ShadowCaster stay
stock on purpose. Includes render-queue churn on the occluder material.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 18:33:25 +02:00
adminandClaude Fable 5 fb3588cc7d The Room: wire VideoClipPlaylist on plasma TV with ping-pong clip
Adds the ping-pong processed TV video and a VideoClipPlaylist on the
Video object (one item, full range, loop). Includes regenerated
SkyboxReflection cubemap churn from SkyboxEnvironmentUpdater.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:39:10 +02:00
adminandClaude Fable 5 36ce4a66df Add VideoClipPlaylist component for sequential gapless clip playback
Plays a list of items (clip + percentage range) on a VideoPlayer.
Double-buffers via a second player (auto-created child incl. AudioSource
copy) and drives the screen texture through a MaterialPropertyBlock,
flipping only once the next player delivers frames - no black/freeze gap.
Editor drawer renders each item as clip row + min-max percent range slider.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:38:57 +02:00
adminandClaude Fable 5 ff01e07fa1 Add editor tool to create ping-pong videos from VideoClips via ffmpeg
Right-click a VideoClip -> Process -> Ping-Pong Video: runs ffmpeg in the
background (forward + reversed video concat, audio played twice), writes
<name>_pingpong.mp4 next to the source and imports it. Supports
multi-select, silent clips (video-only retry), progress display and
unique output paths.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 16:09:34 +02:00
adminandClaude Fable 5 2f38cb384e The Room map pass: TV video, photo materials, prefab cleanup
- New TV Video material + environment video clip on the plasma TV
- New P1002728 photo material/texture, P1002712 texture, three new
  paint prefab variants
- Living-room prefab variants updated across the set
- Remove stale generated concealment collider PolyShape assets
- The Room scene content pass

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 15:45:44 +02:00