Files
behind_glass/docs/qa-window-immersion/verification.md
T
2026-10-06 12:16:46 +09:00

4.7 KiB

창문 뒤 반려동물 경험 개선 검증

2026-09-22. 비교 기준은 docs/ref1-option-2.md의 Ref1 옵션 2다.

적용 내용

  • src/objects/WindowReveal.ts, src/main.ts: 앞쪽 창문 개구부와 사진의 기준 평면 사이를 연결하는 네 면의 안쪽 창틀을 추가했다. 뒤쪽 사각형은 수동 확대·팬과 독립적이며, 사진 구도나 카메라 이동 한계를 보정 수단으로 바꾸지 않는다. 형상은 구도·깊이·리사이즈 변경 시 갱신하며 기존 버퍼를 재사용한다.
  • src/shaders/mosaic.frag: 기본 Mosaic의 REGION_ATLAS에서 표본당 고정된 주변 네 지점을 추가로 조사한다. 같은 장면 UV에서 RGB와 앞쪽 깊이 증거를 읽으며, 더 강한 가까운 어두운 특징이 있을 때 대표색 혼합을 최대 0.4로 제한한다. 최종 화면의 원본 눈·코 픽셀 복원은 추가하지 않았다.
  • index.html, src/main.ts, src/input/PointerController.ts, src/style.css: 안내를 “화면을 드래그해서 시점을 움직여보세요”로 명시했다. 안내는 첫 유효 드래그까지 유지하고 새 미디어에서 다시 표시한다. 같은 미디어에서 이미 드래그했다면 AI 깊이 완료가 안내를 다시 띄우지 않는다. 드래그 중 커서도 구분한다.

기존 Grid 13, 굴곡 +1, 광택 0.30, 색면·굴절 강도 1, Camera Offset 기본 0.50/최대 0.90, 70ms history 및 DPR 상한 1.5를 유지한다. 사진은 기존의 단일 깊이 변위 표면이다.

실행 검증

npm.cmd run build 통과. TypeScript와 Vite 빌드가 완료됐으며 메인 청크 524.46 kB에 대한 기존 500 kB 초과 경고는 남아 있다.

다음 여섯 검사 각각 통과:

node --experimental-strip-types scripts/test-camera-history.mjs
node --experimental-strip-types scripts/test-region-axis-split.mjs
node --experimental-strip-types scripts/test-mosaic-depth-distance.mjs
node --experimental-strip-types scripts/test-mosaic-continuity.mjs
node --experimental-strip-types scripts/test-region-atlas-dark-sampling.mjs
node --experimental-strip-types scripts/test-window-reveal-coverage.mjs

창틀 검사는 실제 Three.js 메시와 Raycaster를 사용한다. 종횡비 0.7/1.6, 깊이 강도 0/0.25/0.4, 정면 및 ±0.5/±0.9의 가로·세로·대각선 조합 17개에서 개구부 광선 49개씩, 총 4,998개를 확인했다. 기존 네 개의 얕은 창틀 박스와 사진만으로는 146개가 빗나갔고 새 안쪽 면과 사진으로는 모두 교차했다. 형상·위치 버퍼 재사용과 형상별 한 번의 dispose 이벤트도 확인했다. 이는 정해진 형상 표본의 검사이며 모든 실제 사진·렌더링 결과를 보장하지 않는다.

어두운 특징 검사는 production GLSL의 연결·표본 수·문턱값을 확인하고, 복제한 JavaScript 계산으로 합성 좁은 어두운 특징과 먼 표면·무효 표면·균일 색의 결과를 검사한다. 합성 검사는 GLSL을 실행하는 GPU 검사가 아니며 사진별 시각 품질 개선의 증명으로 해석하지 않는다.

브라우저에서 확인한 범위

  • dog1의 자동 AI 상대 깊이 생성 완료, 정면 Final에서 큰 사각 색면과 두 눈·코 표현을 확인했다.
  • AI 작업 완료 후에도 안내가 유지됐고, 실제 드래그 후 안내 opacity가 0으로 바뀌었다.
  • No Glass의 정면과 우측 이동 화면, 같은 이동 상태의 Final을 확인했다. Camera Offset 0.50 및 0.90 설정에서 안쪽 창틀 면과 사진이 접하는 결과를 확인했다. 이번 성공한 드래그의 정규화 이동은 약 +0.8이므로 ±1 끝점 전체의 브라우저 검증으로 기록하지 않는다.
  • 다른 기존 샘플로 변경한 뒤 안내가 다시 표시되고 “수작업 테스트 Depth · AI 추정 아님”이 유지됨을 확인했다.
  • 조회한 콘솔 로그에 실행 오류는 없었다. 기존 셰이더 X3595 경고(가변 반복문 안 gradient 연산)는 남아 있다.

일부 추가 브라우저 드래그는 자동 승인 검토에서 보안 상태를 결정하지 못해 차단됐다. 전체 좌우·상하·대각선 끝점은 위 형상 검사에서 검증했으며 전체 실화면 검증은 완료하지 못했다. 모바일 FPS, 연속 영상의 깜빡임 계측, 실제 변위 정점의 유리 간격 측정도 이번 검증에 포함하지 않는다.

비교 자료와 한계

수정 전 Mosaic 셰이더는 baseline-mosaic.frag에 보존되어 있다. UI·창틀의 수정 전 스냅샷은 없으며, 이번 검증에서 수정 전후의 동일 프레임 GPU 비교는 실행하지 않았다. 작은 눈·코가 모든 사진과 시점에서 보존된다고 보장하지 않는다. 숨겨진 옆면이나 배경을 복원하는 기능은 추가하지 않았다.