mirror of
https://github.com/MichaelScottsman/LiquidAss-Frame.git
synced 2026-10-17 19:01:07 +02:00
Stereo (glassd cap stereo, flag glassStereo, on) - The window glass was one image both eyes saw on the glass plane, so the room behind it read as a picture pasted on the glass. glassd now renders each eye's view (SteamVR's eye-to-head offsets, refreshed every 5 s): every region of a stereo surface's texture is a pair, left eye's copy then right eye's, and the scene graph's panel spans the pair with stereoscopy Parallel. - Measured on the device with a lab probe (lgs_sg test.stereoProbe): SteamVR splits a Parallel panel at the middle of the panel's own uv rect, not at the texture's halves; hence the pair layout, and stereo only where the scene graph shows a surface whole (main, SteamVR's panels). The bar, the frame menu and popups show crops and stay mono. A slab clipped sideways is left out while it is. - GPU about 2.9 -> 3.5 ms a frame. Sidebar without the laser - frame.menu is no longer laser-only: SteamVR shows it in gamepad mode (laser mouse off) and beside its own pages; keyed on the gamepad flag its native glass went off and the CSS glass showed. Verified with the flag forced to gamepad on Home and in VR Settings: the cover stays. Home -> Library - The shell stamps the leaving Home view with the moment it starts leaving (only on a way out of Home, kept across Steam's /library redirect); Home fades on the route exit and the reporter lets its plates go on that clock. Measured: all Home discs reported leaving in the first report, gone with the page. - Plates whose element leaves the DOM are reported leaving from the mutation itself (no measuring), not after a frame-driven tick the new route's render starves. Glass tuner - The popup fits Steam's 600 px bar popup cap (rows 76 px: label and value on one line over a 40 px slider); open()/close() for tests.
170 lines
5.0 KiB
CSS
170 lines
5.0 KiB
CSS
/* Glass Shell: the paintbrush on the bar (the glass tuner, device/rt/33-tune.js, flag glassTune) and
|
|
its bar popup. Wrapped as html.lgs-on { ... }.
|
|
|
|
- .lgs-tune: a glass piece of its own after the system capsule, the Home circle's glass and size
|
|
(30-bar.css §1: liquid over the room, 80 pp). Its native cover is in theme/layers/30-bar.json.
|
|
The button inside is Steam's small bar button (VRDashboardBarSmallButton > Highlight), so
|
|
30-bar.css §1.2 lights it like the other discs (laser hover, gamepad focus, the white disc while
|
|
its popup is open).
|
|
- .lgs-tune-panel: the popup (%{DashboardBarPopupContents}: 30-bar.css §2 draws its panel glass).
|
|
One 300 pp column: the colour swatches, then Steam's sliders. Selection is light, never a ring
|
|
(P-42, P-43): the chosen colour carries a white dot and the white glow. */
|
|
|
|
|
|
/* 1. The circle */
|
|
.lgs-tune {
|
|
position: relative;
|
|
flex: none;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-sizing: border-box;
|
|
width: 80px;
|
|
height: 80px;
|
|
background: var(--lgs-mat-liquid-room-bg);
|
|
box-shadow: var(--lgs-mat-liquid-shade);
|
|
border-radius: var(--lgs-r-capsule);
|
|
--lgs-edge: liquid;
|
|
}
|
|
/* 56 pp disc at a 64 pp pitch, as in the system capsule */
|
|
.lgs-tune .VRDashboardBarSmallButton {
|
|
font-size: 28px;
|
|
padding: 0 4px;
|
|
}
|
|
.lgs-tune-icon {
|
|
display: flex;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
.lgs-tune-icon svg {
|
|
display: block;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
|
|
/* 2. The panel: about 560 pp tall: Steam's bar popup contents stop at 600 (max-height, overflow hidden) */
|
|
.lgs-tune-panel {
|
|
box-sizing: border-box;
|
|
width: 300px;
|
|
max-width: 100%;
|
|
padding: 10px 12px 12px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
/* the theme's 64 pp slider capsule, at 40 in this compact column (knob and fill follow it) */
|
|
--lgs-slider: 40px;
|
|
}
|
|
.lgs-tune-title {
|
|
font: var(--lgs-type-headline);
|
|
color: var(--lgs-text-1);
|
|
padding: 0 12px 4px;
|
|
}
|
|
.lgs-tune-note {
|
|
font: var(--lgs-type-footnote);
|
|
color: var(--lgs-text-2);
|
|
padding: 0 12px 6px;
|
|
}
|
|
/* a row's name and value on one line */
|
|
.lgs-tune-label {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 12px;
|
|
font: var(--lgs-type-subhead);
|
|
color: var(--lgs-text-1);
|
|
white-space: nowrap;
|
|
padding: 2px 12px 0;
|
|
}
|
|
.lgs-tune-label > span {
|
|
font-variant-numeric: tabular-nums;
|
|
color: var(--lgs-text-2);
|
|
}
|
|
|
|
/* 2.1 Colour swatches: 8 x 26 pp discs, 7 pp apart (fits 276 pp) */
|
|
.lgs-tune-swatches {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 6px 12px 8px;
|
|
}
|
|
.lgs-tune-swatch {
|
|
position: relative;
|
|
flex: none;
|
|
width: 26px;
|
|
height: 26px;
|
|
border-radius: 50%;
|
|
background: var(--lgs-sw);
|
|
/* a little glass of its own: lit from above, shaded below; no line */
|
|
box-shadow: inset 0 1.5px 1.5px -1px rgb(255 255 255 / .55), inset 0 -2px 3px rgb(0 0 0 / .22);
|
|
cursor: pointer;
|
|
transition: box-shadow var(--lgs-motion-hover-in, 294ms ease), scale var(--lgs-motion-hover-in, 294ms ease);
|
|
}
|
|
/* None: a clear disc with a diagonal */
|
|
.lgs-tune-swatch.is-none {
|
|
background: rgb(255 255 255 / .10);
|
|
}
|
|
.lgs-tune-swatch.is-none::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 6px;
|
|
border-radius: 50%;
|
|
background: linear-gradient(135deg, transparent calc(50% - 1.25px), rgb(255 255 255 / .75) calc(50% - 1.25px),
|
|
rgb(255 255 255 / .75) calc(50% + 1.25px), transparent calc(50% + 1.25px));
|
|
}
|
|
/* the chosen colour: a white dot and the white glow */
|
|
.lgs-tune-swatch.is-on::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 9px;
|
|
border-radius: 50%;
|
|
background: rgb(255 255 255 / .95);
|
|
box-shadow: 0 1px 2px rgb(0 0 0 / .30);
|
|
}
|
|
.lgs-tune-swatch.is-on {
|
|
box-shadow: inset 0 1.5px 1.5px -1px rgb(255 255 255 / .55), inset 0 -2px 3px rgb(0 0 0 / .22),
|
|
0 0 10px 2px rgb(255 255 255 / .35);
|
|
}
|
|
/* laser hover and gamepad focus: lift and light (no ring) */
|
|
&:not(.lgs-input-pad) .lgs-tune-swatch:hover,
|
|
&:not(.lgs-input-laser) .lgs-tune-swatch.gpfocus {
|
|
scale: 1.18;
|
|
box-shadow: inset 0 1.5px 1.5px -1px rgb(255 255 255 / .65), inset 0 -2px 3px rgb(0 0 0 / .22),
|
|
0 0 14px 3px rgb(255 255 255 / .45);
|
|
}
|
|
.lgs-tune-swatch.gpfocus {
|
|
outline: none;
|
|
}
|
|
|
|
/* 2.2 Sliders: Steam's own, bare (no label of theirs), fitted like the Control Center's (31-cc.css) */
|
|
.lgs-tune-row {
|
|
padding: 0 0 4px;
|
|
}
|
|
.lgs-tune-row %{*GamepadDialogContent>Field} {
|
|
padding: 0 4px !important;
|
|
margin: 0 !important;
|
|
min-height: 0 !important;
|
|
background: transparent !important;
|
|
box-shadow: none !important;
|
|
}
|
|
.lgs-tune-row %{*GamepadDialogContent>Field}::after {
|
|
display: none;
|
|
}
|
|
.lgs-tune-row %{*GamepadDialogContent>FieldLeftColumn},
|
|
.lgs-tune-row %{*GamepadDialogContent>FieldLeftColumn} > %{*GamepadDialogContent>FieldChildrenWithIcon} {
|
|
padding: 0 !important;
|
|
margin: 0 !important;
|
|
min-height: 0 !important;
|
|
}
|
|
.lgs-tune-row %{*SliderControlAndNotches>SliderControlPanelGroup} {
|
|
padding-block: 0;
|
|
}
|
|
.lgs-tune-row.is-disabled {
|
|
opacity: .45;
|
|
}
|
|
|
|
/* 2.3 Reset */
|
|
.lgs-tune-reset {
|
|
margin: 6px 8px 0;
|
|
min-height: 48px;
|
|
border-radius: var(--lgs-r-capsule);
|
|
}
|