← back to Quadrille Showroom

REVIEW.md

169 lines

# REVIEW — Quadrille Showroom vs a real Phillip Jeffries showroom photo

Reviewer: VP Research & Content (officer-yolo). Date: 2026-06-27.
Reference standard: a real PJ showroom photo — a bright white-box gallery, crisp,
evenly-lit, large wallcovering panels you can read at a glance, calm and expensive.

## Verdict (harsh, honest)

**It does not yet look like a PJ showroom photo. It looks like a competent
real-time Three.js demo of a wallpaper rack.** The gap is not "almost there" — it's
a category gap: PJ photos read as *photographs of a real room*; this reads as *a 3D
scene*. The single biggest tell is that **every surface is procedurally drawn** — the
oak floor, the plaster walls, the ceiling — so they have that flat, vector-ish, "drawn
in canvas" quality the eye instantly clocks as not-real. No real material grain, no
believable light falloff, no photographic micro-detail.

Scoring it against a PJ photo, blunt:

| Dimension | PJ photo | This build | Grade |
|---|---|---|---|
| Material realism (floor/walls) | photoreal oak + plaster | procedural canvas — reads as cartoon | **D** |
| Even, bright gallery light | bright, shadow-soft, white-box | dim, warm, museum-murky — too dark | **C-** |
| Panel legibility (read the design) | large, flat, crisp, head-on | OK when open, but boards are tall+narrow slivers | **C+** |
| Framing / staging | clean, uncluttered | mostly clean — olive tree + chairs are fine | **B-** |
| Placards / brand typography | crisp engraved brass | legible but small; "CHINA SEAS" wall text is flat/low-craft | **C** |
| Overall "is this a photo?" | yes | no — clearly a game engine | **D+** |

## Specifics from the actual screenshots

**01-overview.png** — The room is too DARK and too WARM for a PJ gallery. PJ
showrooms are *bright white boxes*; this is a dim amber-lit space. The boards are tall
narrow slabs with chunky dark-brown frames — they read like locker doors, not gallery
panels. The floor is an obvious repeating procedural plank texture (you can see the
tiling). The "CHINA SEAS" wall wordmark is small, flat gold, and low-resolution — it
does not read as a crisp high-res brand mark. The whole frame is busy at the bottom
(two HUD panels + a control bar + a thumbnail) which fights the "calm gallery" goal.

**04-spec-card.png** — This is the BEST frame and it's genuinely close to usable: one
board open, design large and readable, spec card on the right is clean and legible.
BUT: the open board is a single tall panel that doesn't fill the frame the way a PJ
hero panel does; the floor under it is still obviously procedural; and the lighting is
flat/greenish on the pattern rather than the even white light a PJ photo would have.
The wings flare out at the top (perspective) which slightly distorts the design.

**02-bookmatch.png** — Confirms the STEP-2 problem: the open board currently shows a
**mirrored book-match** (left leaf is a flip of the right), so you are NOT seeing the
real continuous design — you're seeing a Rorschach of it. A buyer wants to see the
*actual repeat*, not a mirror.

## The three highest-impact fixes (what I will execute)

1. **Photoreal materials** — replace the procedural canvas floor + plaster with real
   photographic textures (warm-oak floor, honed limewash plaster), 2K, tileable,
   max-anisotropy. This is the #1 lever on "is this a photo."
2. **Brighter, more even gallery light** — lift exposure/ambient toward a white-box PJ
   gallery; kill the amber murk; soften shadows further.
3. **Continuous design on the open board** — left leaf = U 0..0.5, right leaf =
   U 0.5..1 (computeRepeat for vertical tiling) so the open board shows the WHOLE real
   design, not a mirror. Crisp, max-aniso, true colour.

## Single biggest remaining gap (call it now)

**Photographic material fidelity of the room shell.** Until the floor and walls stop
reading as procedurally-drawn canvas and become real photo textures with believable
light, the scene will always say "3D demo," never "PJ showroom photo." Everything else
(framing, placards, brightness) is a B-grade polish problem; the materials are the D.

---

## FINAL — pass 5 (per-board lighting). Reviewer: VP Research & Content, 2026-06-27.

### Overall grade vs a real Phillip Jeffries showroom photo: **B−**

That is two full grade-bands up from the pass-1 **D+** verdict at the top of this file,
and the move is real, not generous. The shell passes (photoreal SDXL floor + walls with
derived normal/roughness maps, a real warm-plaster ceiling, a bright even white-box
wash) closed the category gap that used to scream "game engine." This pass closed the
last named one: the boards.

### What this pass resolved (the per-board lighting gap)

Before pass 5 the wingboard faces were lit flat and uniform — every board the same
brightness top-to-bottom, so they read as evenly-lit *decals stuck on a wall*, the final
CGI tell once the shell was photoreal. Three changes fixed it, each measured + committed
separately:

1. **Per-board light gradient + sheen** (`433800b`). Each 6-ft face now carries a baked
   top-to-bottom luminance falloff — a faint warm specular sheen in the upper third where
   the picture-light grazes it, a neutral true-colour mid-band, a modest warm-charcoal
   shade at the bottom. Plus the board material went satin (roughness 0.85→0.6, a hint of
   envMap) so the grazing light actually catches the surface. Boards now read as physical
   objects in a lit room. Crucially the swatch colour stays **true and legible** — the
   mid-band is neutral so the navy/sage/blush/teal all read correctly; nothing is crushed.
2. **Wall drop-shadow** (`ce3b7f3`). Each board casts a faint soft sprite-shadow onto the
   wall behind it, dropped down+left to match the upper-right key. Boards now have depth
   *off* the wall instead of sitting flush. Zero render cost; auto-hides on focus.
3. **Real picture-light shadows** (`ac87a36`). FPS headroom allowed enabling genuine
   shadow-casting on the gallery picture-light, so the focused hero board throws a
   physically-correct soft shadow the fake sprite couldn't. Measured min **59 FPS** on the
   2-min soak — above the ≥55 real-shadow gate — so it stays.

Verification (hard gate, all passed): walkthrough **72 FPS**; 2-min soak **min 59 / avg
68 FPS**; **errorCount 0**; spec card intact (Width 27″ / Repeat 27″ V / Straight match /
Hand screen-printed on paper / China Seas); `01-overview.png` + `04-spec-card.png`
confirm boards read dimensional **without** any loss of swatch legibility.

### Top 1–2 things still separating it from a true photograph

1. **The wallcovering swatch itself is the weakest-resolution surface in the frame now.**
   The room shell is photoreal and the boards are now lit like physical objects — which,
   ironically, throws focus onto the *pattern texture* on the board face. On the procedural
   pool patterns (Damask/Grasscloth/Stripe drawn at 128×256) and on lower-res catalog
   images, the design reads slightly soft / vector-ish at hero distance compared to the
   crisp plaster and oak around it. A real PJ photo has the wallcovering as the *sharpest*
   thing in frame; here it's competitive but occasionally the softest. The fix is source-
   side: higher-res seamless tiles per SKU, not a render change.

2. **Light is plausible but not yet photographically *grounded* in a single coherent
   key.** The scene reads bright and even (correct for a PJ white-box), but a photograph
   has one dominant light direction that rules every shadow, highlight, and falloff in
   lockstep. Here the ambient/hemi/key/fill/rim/picture stack reads *even* more than it
   reads *lit-by-one-window* — so shadows are soft and a touch directionless, the giveaway
   that no single real luminaire is in charge. A real PJ interior shot has a clear window
   or track-light authoring the whole frame. Pushing one key harder (and trimming ambient)
   would trade a hair of evenness for a lot of "this is a photograph."

Net: the build now reads as a **convincing CGI render of a real showroom** — a viewer has
to look for the tell. It is no longer "obviously a 3D demo." Closing the remaining gap is
a source-asset problem (sharper swatch tiles) plus one lighting-authoring decision (commit
to a dominant key), not a structural one.

## Pass 6 (2026-06-27) — hi-res source check + dominant key
- GAP A (swatch resolution): NO higher-res native China Seas source available. Shopify = 1000×1250 native (?width=2048 returns same 1000px); vendor quadrillefabrics.com S3 = 950×653, no larger variants (403). Within Steve's no-upscale rule, 1000px is the genuine CEILING — closing this needs re-shooting/scanning physical samples (Steve's decision). Not pursued (no upscaling, no invented imagery).
- GAP B (lighting): committed to one dominant warm key (key 0.7→1.05, ambient 0.72→0.5, hemi 0.58→0.45). Photographic modelling/direction without crushing swatch legibility. FPS 72, errorCount 0, specs intact.
- Grade: ~B (render side now near its ceiling; the remaining distance to A is the source-side swatch resolution).

## Pass 7 (2026-06-27) — SENIOR-FIRST navigation (officer-yolo, DTD verdict A) + subtle bloom
Main complaint addressed: "hard to navigate / must be usable for a 65-year-old."

### Senior-usability (PRIORITY 1)
- GUIDED MODE is now the boot default. On load the camera flies to the MIDDLE board open
  and presents its design — no keyboard, no 3D walking needed. (DTD 2/2: Claude+Codex → A.)
- Big bottom-centre control bar: ◀ Previous · ▷ Auto Tour (brass hero) · Next ▶ · ⛶ All
  Designs. Every button 60px tall (≥56 gate), word-labelled, high-contrast, generously spaced.
- Always-visible plain instruction: "Tap Next to see the next design — or Auto Tour to watch
  them all." Updates to a Pause hint while touring.
- Large readable pattern title top-centre (serif 30px) + "Design N of 883" so the senior
  always knows what they're looking at and where they are.
- Auto Tour = the existing Peruse, hands-free; the same big button toggles ❚❚ Pause.
- "All Designs" big-thumbnail grid overlay (familiar web-grid browse path); tap a picture →
  flies to that board. 52px Close button.
- WASD/orbit DEMOTED behind an "Explore: Off" toggle (top-right), OFF by default, persisted.
  When Explore is on, the compact Now-Viewing strip + minimap return; guided bar hides.
- Verified by scripts/test-senior.js — drives ONLY the big mouse buttons (NO keyboard):
  guided boots focused (Design 5/883), Next×6 advances board-to-board, window auto-pages
  past 8 to reach Design 24, Auto Tour starts + Pause stops, All Designs grid opens+jumps,
  buttons≥56px, China Seas specs intact, errorCount 0, FPS 57/68. End-to-end no-keyboard
  browse CONFIRMED.

### Realism (PRIORITY 2)
- Subtle additive-blend bloom halo around the two ceiling cove light-strips so the light
  bleeds into the ceiling like a real fixture — WITHOUT a postprocessing/EffectComposer
  stack (none bundled; that would be a render-loop rewrite). FPS-neutral: walkthrough 63,
  2-min soak min 65 / avg 70. (No engine switch, no risky rewrite, per the brief.)

### Verify gate — all passed
walkthrough 63 FPS · 2-min soak min 65 / avg 70 · errorCount 0 · China Seas 27″×27″ straight
match intact · senior button-only browse confirmed end-to-end.