Files
behind_glass/docs/qa-mosaic-improvement/review.md
T
2026-10-06 12:16:46 +09:00

66 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Mosaic 개선 실험 결과
2026-09-13. 사용자 요청에 따라 원인 분석 후 실제 개선을 수행했다. Astra 설계·독립 검토, Luna 코드 수정, 주 에이전트 브라우저 검증. 사진은 로컬 테스트용이며 외부 게시하지 않았다.
## 채택 결과
최종 C2: 조각 유리의 근원본/확대/축소 기대 비중을 60/30/10에서 30/60/10으로 변경했다. 기존 샘플 폭 범위·중심 이동·퍼짐 반경은 유지한다. 실제 얼굴 영역의 셀 비율은 해시와 구도에 따라 다르다.
유리 법선은 기존 .16셀 폭으로 연결한다. 조각 유리의 RGB는 각 셀의 독립 affine/transform에 공통 굴절 변위를 적용해 기존 5탭으로 샘플한 뒤 .06셀 폭에서 색으로 연결한다. .06~.16 띠에서도 독립 중심 셀 샘플을 유지해 혼합 UV의 압축이 재도입되지 않게 했다. 촘촘 유리는 기존 UV 경로를 사용한다.
공유 법선, 굴곡 기본+.65, 굴곡0의 기울기/샘플 변환, 광택 후처리1회, 기존2-pass 및 수작업 Depth 경로를 유지했다. Distortion<=.001의 raw RenderTarget 우회도 유지한다.
## 고정 비교 조건과 후보
1280×720, dog1, 확대2.3 / X-.10 / Y-.30, 조각 유리 Grid8 / Distortion.90, 시점 중앙. A/B/C/C2 비교는 광택0, 굴곡+.65. 평탄0 캡처는 별도 진단이며 동일 굴곡 비교와 구분한다. final 캡처는 광택.15로 복원했다.
| 후보 | 변경 | 실제 관찰 | 결정 |
|---|---|---|---|
| 원본 | baseline-mosaic.frag | 기존 QA의 원본에 가까운 넓은 영역, 물결 인상 | 원본 보존 |
| A | 비중만30/60/10 | 확대면 증가, 입 왼쪽 수평 압축선 부각 | 단독 미채택 |
| B | A의 확대 셀 면적을 유지하며 축비율2:1/1:2 | 오른눈 세로 늘어짐·코 비대칭 증가 | 제외 |
| C | A + .16폭 완전 색 혼합 | 입 왼쪽 압축선 감소, 넓은 중첩/흐림으로 사각면 약화 | 단독 미채택 |
| C2 | C의 색 혼합만.06, 법선.16 유지 | C보다 사각면 명확, A보다 입 압축선 감소, 눈·코·혀 식별 유지 | 채택 |
원본 비교는 기존 docs/qa-five-photos/dog1-tuned.png와 docs/qa-followup/dog1-flat.png를 참고했다. 이번 A/B/C/C2는 같은 브라우저에서 새로 캡처했다. 이전 캡처와 이번 캡처는 저장 경로·인코딩이 달라 픽셀 단위 유사도 평가를 하지 않았다.
## 사진별 최종 검증
| 사진 | 확대 / X / Y | Grid / Distortion / 굴곡 / 광택 | 관찰 |
|---|---|---|---|
| sample | 3 / -.15 / -.35 | 8 / .90 / +.65 / .15 | 사각 얼굴 조각 증가, 두눈·코·입 식별. 눈/입 경계 잘림은 남음 |
| dog1 | 2.3 / -.10 / -.30 | 8 / .90 / +.65 / .15 | 가장 안정적인 비교. 확대면·사각 경계 개선, 코·혀 약한 중첩 잔존 |
| dog2 | 2.2 / +.60 / -.60 | 8 / .90 / +.65 / .15 | 볼/귀/배경 조각 차이 증가. 어두운 눈 주변 구분은 여전히 제한적 |
| dog3 | 1.3 / +.50 / 0 | 12 / .75 / +.65 / .15 | 두 얼굴 식별 유지. 작은 얼굴과 배경 세부의 한계 |
| dog4 | 1.55 / +.10 / -.85 | 12 / .65 / +.35 / .15 | 눈·코·입 식별, 사각 윤곽 증가. 측면 코의 조각 잘림 남음 |
사진 전환은 위 값을 자동 적용하지 않는다. 기존과 같이 수동 적용했다. 추가4장은 Depth 없는 평면 입력이다.
## 실행한 검증
- 모든 후보 및 최종 C2의 npm run build (tsc -b && vite build) 통과. 셰이더 실제 컴파일/화면은 브라우저에서 별도로 확인했다.
- 실제 브라우저 1280×720: 5장 위 설정으로 렌더링·사진 전환 확인.
- 390×844: dog1/dog4 동일 설정, 두 사진의 수평 드래그에서 창틀/셀 정렬과 표정 확인. 데스크톱 dog1 수평 드래그도 확인. 전체 드래그 경로에 대한 프레임 단위 분석은 하지 않았다.
- Glass OFF에서 기존 sample 기본 구도2.4/-.10/-.35 parallax 재확인: cameraX0→.063 관측 시 nose projectedX531.509→529.658, body350.477→350.490. 위치 변화가 부위마다 다름. Depth는 수작업 근사이며 AI 추정/측정값이 아니다.
- 촘촘 유리 Grid28/.85, Reeded, Frosted 실제 렌더링을 확인했다. 수치적 이전버전 동일성 비교나 영상 전체 회귀로 해석하지 않는다.
- Distortion0에서 기존 창틀 밖 raw 출력 유지 확인.
- QA 브라우저 error 로그0.
- Astra 최종 정적 검토: 가중치 분리·이웃좌표 초기화·셀별 퍼짐·법선 공유에 즉시 수정할 결함 없음.
## 성능과 남은 한계
조각 경계의 텍스처 샘플은 활성셀당5탭, 최악20탭이다. .06 색 혼합에서 완전한 정사각 셀을 가정한 이론 평균은 약6.27탭으로 기존5보다 증가한다. GPU의 분기실행·캐시·해상도가 영향을 주므로 실제 실행시간/FPS로 환산하지 않았다. 실제 휴대폰 성능·자이로·영상·일반 업로드·수동 Depth 업로드 전체 회귀는 미검증이다.
레퍼런스2 달성으로 판정하지 않는다. 셀별 큰 정보량 대비는 여전히 부족하고, 검은 눈·코·혀 및 측면 얼굴의 경계 잘림/중첩이 남는다. 12셀 정량 분류 등 앞서 제안한 모든 평가표를 실행한 것은 아니며 이번 채택은 고정 구도의 수동 시각 비교에 따른 증분 개선이다. 다음 개선은 한 축 확대를 다시 강하게 하기보다 얼굴을 가로지르는 셀의 위치 제어 또는 낮은 정보량 셀의 제한적 퍼짐을 개별 실험하는 방향이다.
## 파일과 재현
- 제품 수정: src/shaders/mosaic.frag 한 파일.
- 원본/후보: baseline-mosaic.frag, distribution-mosaic.frag, anisotropic-mosaic.frag, color-boundary-mosaic.frag.
- 비교 이미지: dog1-distribution.png, dog1-anisotropic.png, dog1-color-boundary.png, dog1-color-narrow.png, dog1-final.png 및 각 평탄 이미지.
- 회귀 이미지: sample-final.png, dog2-final.png, dog3-final.png, dog4-final.png, dog1/dog4-mobile*.png, sample-noglass*.png, sample-compact.png, sample-reeded.png, sample-frosted.png, sample-strength0.png.
- 실행: npm run dev -- --host 127.0.0.1, http://127.0.0.1:5173/. 프로젝트 실행 중인 서버에서도 변경 반영됨.
## 후속 수정
사용자의 dog3 공통 설정(Grid8/.90, 구도1/0/0) 제보로 인접 셀 얼굴 단절이 확인되었다. 이 문서의 C2 채택만으로 해당 조건을 통과한 것은 아니다. 후속 보정과 확대 효과 감소의 절충은 ../qa-cell-continuity/review.md를 따른다.