← back to Quadrille Showroom
PJ polish: true hi-res (4096px) engraved-brass wall wordmark, fix stale book-match comments
a08b36a70317d5bff1dd18bd1dc4965a5c1120d0 · 2026-06-27 10:59:02 -0700 · Steve
Files touched
Diff
commit a08b36a70317d5bff1dd18bd1dc4965a5c1120d0
Author: Steve <steve@designerwallcoverings.com>
Date: Sat Jun 27 10:59:02 2026 -0700
PJ polish: true hi-res (4096px) engraved-brass wall wordmark, fix stale book-match comments
---
public/js/showroom.js | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/public/js/showroom.js b/public/js/showroom.js
index 40420ba..f13bcc0 100644
--- a/public/js/showroom.js
+++ b/public/js/showroom.js
@@ -766,9 +766,10 @@ function buildWingWall() {
const poolIdx = product._poolIdx !== undefined ? product._poolIdx : (i % TEXTURE_POOL.length);
const poolMat = TEXTURE_POOL[poolIdx].material;
- // BOOK-MATCH WING — two leaves hinged at a center spine (x=0).
- // Closed: coplanar on the wall (a flat mirrored pair). Open (proximity ≤4ft):
- // both leaves swing forward like an opening sample book — left mirrored, right normal.
+ // WINGBOARD — two leaves hinged at a center spine (x=0). Together they present
+ // ONE continuous design (left leaf = left half U 0..0.5, right leaf = right half
+ // U 0.5..1; see loadWingBook). Closed: coplanar on the wall. Open (proximity ≤4ft
+ // or focus): both leaves swing forward ~65° to show the whole wallcovering.
const leafW = wingW / 2;
const H = WC.height;
const yC = H / 2 + 0.04;
@@ -892,21 +893,22 @@ function buildWingWall() {
const sectionW = (section.endIdx - section.startIdx + 1) * slotW;
// Vendor label — HIGH-RES engraved-brass gallery plaque (crisp, clean, PJ-style).
- const lc = document.createElement('canvas'); lc.width = 2048; lc.height = 160;
+ const lc = document.createElement('canvas'); lc.width = 4096; lc.height = 320;
const lx = lc.getContext('2d');
- lx.clearRect(0, 0, 2048, 160); // transparent ground (no cheap colour bar)
- lx.fillStyle = '#1a1206'; lx.font = '600 84px Georgia, "Times New Roman", serif';
+ lx.clearRect(0, 0, 4096, 320); // transparent ground (no cheap colour bar)
+ lx.font = '600 168px Georgia, "Times New Roman", serif';
lx.textAlign = 'center'; lx.textBaseline = 'middle';
// letter-spaced uppercase for an engraved-plaque feel
const txt = section.vendor.toUpperCase().split('').join(' ');
- lx.fillStyle = '#b9933f'; lx.fillText(txt, 1024, 86); // brass
+ lx.fillStyle = 'rgba(26,18,6,0.32)'; lx.fillText(txt, 2050, 166); // faint engraved shadow
+ lx.fillStyle = '#c2a052'; lx.fillText(txt, 2048, 160); // soft brass face
const lt = new THREE.CanvasTexture(lc);
if (renderer.capabilities) lt.anisotropy = renderer.capabilities.getMaxAnisotropy();
lt.minFilter = THREE.LinearMipmapLinearFilter; lt.generateMipmaps = true;
- const labelW = Math.max(sectionW * 0.9, 0.4);
- const label = new THREE.Mesh(new THREE.PlaneGeometry(labelW, labelW * 160 / 2048),
+ const labelW = Math.max(sectionW * 0.92, 0.4);
+ const label = new THREE.Mesh(new THREE.PlaneGeometry(labelW, labelW * 320 / 4096),
new THREE.MeshBasicMaterial({ map: lt, transparent: true }));
- label.position.set(centerX, WC.height + 0.18, 0.01);
+ label.position.set(centerX, WC.height + 0.2, 0.01);
wallGroup.add(label);
// Thin vertical divider at section start (except first)
← e7268c6 Photoreal room (SDXL warm-oak floor + limewash plaster walls
·
back to Quadrille Showroom
·
PJ hero framing: focused board presents FLAT/dead-on (near-f b1e3c75 →