mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-07-24 05:41:53 +00:00
* Add aspect-aware framing for ultra-wide highway panes
On a top/bottom 2-player split each 3D highway pane is full-width /
half-height (~32:9). The camera's vertical FOV was locked at a single
value, so at that aspect the horizontal cone ballooned past 130deg and
squeezed the fixed-width neck into a thin central sliver with large dead
margins on either side.
Add a "horizontal-FOV-hold" path: past a configurable start aspect the
effective vertical FOV is lowered so the horizontal cone stays roughly
constant, letting the neck fill a wide pane. At/under the start aspect it
is an exact no-op, so normal ~16:9 single-player and most 2x2 panes are
unchanged. Optional pose nudges (height / dolly / pitch / look-depth)
further flatten the view toward a low, immersive angle.
Everything is driven by a runtime bridge (window.__h3dAspectTune) with a
live tuner panel (Shift+A in the player) exposing every knob plus a live
aspect/FOV readout, localStorage persistence, and a Copy button. Toggling
the feature off restores the exact prior framing, so it doubles as an A/B
control. Shipped on by default for wide panes for testing feedback.
Source-pinned by tests/js/highway_3d_wide_fov.test.js.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: topkoa <topkoa@gmail.com>
* fix(highway_3d): ship wide-pane framing default-OFF with a coherent config
Review fixes for the aspect-aware framing. The first cut shipped
_ASPECT_DEFAULTS = { enabled:true, baseVfov:30, blend:0, minVfovDeg:36 },
which contradicted the PR's own "default off → byte-for-byte prior behaviour"
claim:
- enabled:true made the tune active for everyone, and baseVfov:30 forced every
pane's vertical fov from 70° to 30° (normal single-player/2x2 panes included —
a drastic global zoom, not the advertised no-op).
- blend:0 collapsed the Hor+ math back to base, so the actual horizontal-FOV-
hold did nothing even on wide panes — the only net effect was the zoom.
- minVfovDeg:36 > baseVfov:30 was an inverted floor (clamped wide panes UP to
36° rather than flooring a real reduction).
New defaults: { enabled:false, baseVfov:BASE_VFOV(70), blend:1,
minVfovDeg:HORPLUS_MIN_VFOV(28) }. Now:
- OFF by default → camUpdate passes a null tune → effectiveVfov returns
BASE_VFOV → exact no-op on every pane (verified: 70° at 16:9 and 32:9).
- When a tester enables it (Shift+A), baseVfov==BASE_VFOV keeps normal/≤start
panes at 70° (still a no-op there) and blend:1 makes the hold actually engage
on genuinely wide panes (47.7° at 32:9, flooring toward 28° as aspect grows).
- minVfovDeg < baseVfov is a real floor.
Also bumps the localStorage key (h3d_aspect_tune → h3d_aspect_tune2) so a
machine that persisted the old broken default gets the corrected one, and adds
source-pin tests guarding default-off + the coherent base/blend/floor so this
can't silently regress to default-on again. The pose-nudge values are left as
the author's in-progress wide-pane look (dormant until enabled). 110/110 tests
pass; node --check clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Signed-off-by: topkoa <topkoa@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: byrongamatos <xasiklas@gmail.com>
|
||
|---|---|---|
| .. | ||
| alpha_warning_banner.test.js | ||
| app_tour_library.test.js | ||
| audio_effects_host.test.js | ||
| audio_effects_test_harness.js | ||
| audio_element_accessor.test.js | ||
| audio_session_compat.test.js | ||
| audio_session_host.test.js | ||
| audio_session_input.test.js | ||
| audio_session_mix.test.js | ||
| audio_session_monitoring.test.js | ||
| audio_session_routes.test.js | ||
| audio_session_stems_bridge.test.js | ||
| audio_session_stems.test.js | ||
| audio_session_test_harness.js | ||
| autoplay_exit.test.js | ||
| beats_loaded.test.js | ||
| capabilities_claims.test.js | ||
| capabilities_diagnostics.test.js | ||
| capabilities_lifecycle.test.js | ||
| capabilities_manifest_runtime.test.js | ||
| capabilities_multi_provider.test.js | ||
| capabilities_ownership.test.js | ||
| capabilities_test_harness.js | ||
| capabilities_versioning.test.js | ||
| capability_inspector_nav.test.js | ||
| capability_inspector_render.test.js | ||
| diagnostics_summary.test.js | ||
| edit_metadata_modal.test.js | ||
| handshapes_pipeline.test.js | ||
| highway_3d_arp_deferral.test.js | ||
| highway_3d_camera_framing.test.js | ||
| highway_3d_fret_label_render_order.test.js | ||
| highway_3d_fret_row_labels.test.js | ||
| highway_3d_fret_spacing.test.js | ||
| highway_3d_lean_sustain.test.js | ||
| highway_3d_lefty.test.js | ||
| highway_3d_overlay_full_cover.test.js | ||
| highway_3d_panel_controls.test.js | ||
| highway_3d_pool_warm.test.js | ||
| highway_3d_render_order.test.js | ||
| highway_3d_resize_reframe.test.js | ||
| highway_3d_slide_target.test.js | ||
| highway_3d_smooth_clock_pause.test.js | ||
| highway_3d_sustain_bloom.test.js | ||
| highway_3d_sustain_rail.test.js | ||
| highway_3d_wide_fov.test.js | ||
| highway_adaptive_scale.test.js | ||
| highway_audio_barrier.test.js | ||
| highway_bend_curve.test.js | ||
| highway_chord_harmony.test.js | ||
| highway_chord_render_cache.test.js | ||
| highway_colors_facade.test.js | ||
| highway_filtered_notes.test.js | ||
| highway_monotonic_clock.test.js | ||
| highway_note_state.test.js | ||
| highway_pause_throttle.test.js | ||
| highway_phrases.test.js | ||
| highway_renderer_swap_canvas_reset.test.js | ||
| highway_string_colors.test.js | ||
| highway_teaching_marks.test.js | ||
| highway_visibility.test.js | ||
| juce_engine_reroute.test.js | ||
| legacy_shim_hits.test.js | ||
| library_card_actions.test.js | ||
| live_guitar_tone_source.test.js | ||
| live_performance_hud.test.js | ||
| loop_api.test.js | ||
| loop_restart.test.js | ||
| midi_input_domain.test.js | ||
| note_detection_domain.test.js | ||
| pedal_cables.test.js | ||
| play_button_reroute_guard.test.js | ||
| playback_app_adapter.test.js | ||
| playback_compat.test.js | ||
| playback_diagnostics.test.js | ||
| playback_domain.test.js | ||
| playback_test_harness.js | ||
| plugin_style_injection.test.js | ||
| plugins_page.test.js | ||
| progress_calibration.test.js | ||
| progression_notifications.test.js | ||
| progression_progress_events.test.js | ||
| section_practice_dismiss.test.js | ||
| settings_autosave.test.js | ||
| song_close.test.js | ||
| song_credits_overlay.test.js | ||
| song_event_payload.test.js | ||
| song_restart.test.js | ||
| song_seek.test.js | ||
| speed_reset.test.js | ||
| test_utils.js | ||
| tour_engine.test.js | ||
| tuner_auto_open.test.js | ||
| tuner_core.test.js | ||
| tuning_display.test.js | ||
| tuning_targets.test.js | ||
| v3_add_to_playlist_menu.test.js | ||
| v3_az_rail.test.js | ||
| v3_collections.test.js | ||
| v3_keep_practicing.test.js | ||
| v3_library_refresh.test.js | ||
| v3_playlist_cover.test.js | ||
| v3_songs_score_badge_refresh.test.js | ||
| v3_songs_scroll.test.js | ||
| v3_songs_tuning.test.js | ||
| v3_user_select_policy.test.js | ||
| venue_instrument_pov.test.js | ||
| venue_mood_fx.test.js | ||
| venue_scene_3d.test.js | ||
| venue_viz.test.js | ||
| visualization_domain.test.js | ||