# Ref1 큰 색면 보정 검토 — 2026-09-14 ## 구현 기본 Mosaic의 기존 8×8 atlas와 셀별 4색 palette를 유지하면서, 각 셀에 가장 잘 맞는 수직/수평 2영역 분할 하나를 찾는다. 축별 경계 후보는 2·3·4·5·6/8이며, 영역별 palette label 설명률이 가장 높은 분할을 고른다. 전체 한 label보다 개선되는 정도와 설명률로 confidence를 정하고 radial 3×3 grouping 결과와 섞어 복잡한 셀은 기존 fallback으로 남긴다. 모델 metadata는 palette target의 다섯 번째 texel에 저장한다. 이후 view 변화에 따른 경계 전환은 선택된 이산 metadata 자체가 아니라 셀별 8×8 split color/confidence field를 premultiplied alpha로 ping-pong history에 저장하고 70ms 지수 수렴시킨다. 현재 프레임의 사진 굴절과 .18 셀 내부 시점 변위는 즉시 계산한다. 어두운 원본 형태가 밝은 label로 바뀌려 할 때 own palette를 우선 사용한다. own palette가 충분히 어두운 형태를 유지하지 못하면 palette에서 허용 가능한 가장 어두운 색을 고르고, 어떤 palette 색도 한계 안에 없을 때에만 해당 픽셀의 원본색을 남긴다. 이 절차는 시각 검사에서 확인한 눈 디테일 보호를 위한 예외이며, 전체적인 원본 RGB 우회는 사용하지 않는다. 초기 4×4 다수결 실험은 이마·몸 외곽에 반셀 경계를 만들고 얼굴 내부 포스터화는 줄이지 못해 채택하지 않았다. 현재 축 분할 모델은 그 실험을 대체한다. ## 시각 확인 - dog1, AI 상대 depth, Grid 10, 색면 1, 굴곡 1, Distortion 1, 광택 0.3, 확대 1, 팬 0에서 이마·볼·몸에 큰 직사각 색면이 늘고 두 눈·코·혀의 식별이 유지됐다. - 좌우 약 120px 시점 이동에서 눈·코와 큰 색면 경계가 바뀌는 것을 확인했다. 정량적인 연속 영상 flicker 검사는 아니다. - 추가 dog1 테스트에서 Grid 96과 약 120px 이동 중 정상 렌더링을 확인했다. FPS 계측과 실제 모바일 기기 성능은 확인하지 않았다. - 지정 샘플 사진과 수작업 depth에서 Grid 10 / 색면 1 / 굴곡 1 / Distortion 1 / 광택 0.3으로 눈·코와 큰 면을 확인했다. AI 추정 또는 실제 측정 depth가 아니다. - 색면 0은 기존 굴절 출력을 복원했고 Distortion 0도 무효과 화면으로 돌아갔다. - Camera Offset 기본 .50에서 dog1/AI depth/색면 1/굴곡 1/Distortion 1/Grid 10/광택 .3/확대 1/팬 0을 좌우 약 120px 이동해 눈·코와 큰 면 변화를 확인했다. 정지 시 눈·코와 색면이 정상적으로 보였다. 영상 flicker를 정량 측정하지 않았다. - 지정 샘플과 수작업 depth에서 Camera Offset .90 대각 최대 이동을 확인했다. debug camera X가 .900에 도달했고 좌표가 뒤집히는 현상은 보이지 않았다. 가장자리에서 사진 바깥 여백이 대각선 상단 일부에 노출됐다. 자동 구도 조정은 하지 않았다. - 같은 수작업 샘플에서 No Glass 드래그 후 Final로 돌아와 정상 표시를 확인했다. Grid 96/굴곡 -1/Depth Scale 0/Camera Offset .90에서도 렌더링을 확인했다. FPS 계측과 실제 모바일 GPU 검증은 아니다. - 사진을 수작업 depth 샘플에서 dog1 AI depth로 교체한 뒤, 이전 샘플 색면 잔류 없이 dog1의 정면 큰 면이 유지되는 것을 확인했다. - history 수렴은 `1-exp(-dt/.07)`이며 CPU 검사는 30/60/120Hz의 700ms 결과 일치와 70ms 시정수, 첫 프레임/초기화, ping-pong 분리, camera 제외 reset key를 확인했다. 이는 수학적 cadence 확인이며 브라우저 영상의 깜빡임 부재 증명은 아니다. 현재 결과는 Ref1의 큰 면 목표와 시점 반응에 대한 시각 개선이다. 모든 사진과 구도에서 같은 결과를 보장하거나 최종 Ref1 일치를 입증한 것은 아니다. split 경계는 temporal history로 완화했지만 정량 영상 flicker 평가는 아직 없다. ## 자동 확인 `node scripts/test-region-axis-split.mjs`는 수직·수평 경계의 2/6 후보, 복잡/단색 셀 fallback, metadata byte encode/decode, confidence blending, dark eye/nose 보호 경로를 검사한다. `node scripts/test-camera-history.mjs`는 Camera Offset .5/.9 범위, reset key, ping-pong/dispose, premultiplied field와 30/60/120Hz cadence를 검사한다. `npm run build`, `node scripts/test-mosaic-depth-distance.mjs`, `node scripts/test-mosaic-continuity.mjs`도 통과했다. 최종 continuity suite는 camera offset ±.9를 포함해 493,760 Jacobian과 87,200 seam 수렴 검사를 통과했다. Build는 기존 500KB 초과 bundle warning을 출력한다.