Files
behind_glass/docs/qa-coherence/brief.md
T
2026-10-06 12:16:46 +09:00

35 lines
3.7 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.
# 시점·셀 굴절 일관성 수정
사용자 지적: 시점에 따른 셀 굴곡이 일관되지 않고 각 셀이 별도 사진 정보를 보유한 것처럼 보인다.
원인: 기본 조각 유리의 셀별 임의 확대율/샘플 중심이 광선 기반 굴절보다 크게 작용하고, 굴절 이동에도 같은 임의 변환을 적용했다.
변경 기준:
- 기본 조각 유리의 임의 이미지 확대·중심 이동과 이웃 셀 색상 조각 혼합을 제거한다.
- 카메라에서 유리판까지의 광선, 공통 곡면 모델의 법선, 굴절 광선이 공통 기준 평면에 닿는 위치를 사용한다.
- 곡면은 셀 좌표에 고정되고 반사에도 같은 법선을 사용한다. 미세한 고정 표면 편차만 허용한다.
- 사진/Depth/RenderTarget, 곡면 부호와 기본값, Ref1/Ref2 배치를 보존한다. 강한 흐림은 추가하지 않는다.
- 조각 유리의 새 경로는 실제 depth 표면과 광선을 교차시키는 완전한 물리 모델은 아니다. Depth 시차가 반영된 장면 텍스처를 공통 z=0 기준 평면의 투영으로 샘플한다.
검증 기준: 같은 사진의 정면/좌/우/정면복귀, 광택0, 굴곡-1/0/+1, Distortion0, 모바일 배치. 화면 오류나 블러 감소만으로 시각 목표 완료를 판단하지 않는다.
## 적용 결과
- 수정: `src/shaders/mosaic.frag`. 조각 유리에서 셀별 무작위 이미지 확대/중심 이동 및 이웃 색상 조각 혼합을 제거했다.
- 같은 카메라 광선과 곡면 법선으로 공통 z=0 평면의 굴절 교점을 투영해 한 번 샘플한다. 반사도 같은 법선을 쓴다. 별도 블러는 사용하지 않는다.
- 테두리만 둥글게 강조되던 곱 형태의 4차 곡면 대신, 축별 2차/4차 성분을 섞은 얕은 사각 곡면을 사용했다. 기본 곡면 높이 계수 .12, 기본 경계 전환 .04, 광선 이동의 부드러운 상한 .55셀이다. 높이는 셀 크기의 제곱과 유리-기준평면 거리에 따라 제한해 고밀도 격자의 과도한 접힘을 줄였다.
- 미세한 고정 높이 편차와 셀 기울기는 남기고, 촘촘 유리의 기존 경로는 유지했다.
## 검증 결과와 범위
- 빌드·타입 검사 통과. 기존 큰 번들 안내는 남는다.
- `dog1` 사진으로 정면/좌/우/정면복귀를 확인했다. 임의의 크롭 조각이 지배하던 이전 출력보다 눈·코가 공통 장면에 연결된 채 변한다.
- 최종 정면과 복귀 이미지의 차이는 전체 RGB 채널 중 3개 채널에서 값 1뿐이었다. 픽셀 반올림 수준이며 완전한 바이트 동일성으로 보고하지 않는다.
- Distortion0 대 No Glass의 100×100 중앙 비교는 RGB 1개 채널에서 값1 차이였다. 화면상 일치하나 완전한 바이트 동일성은 아니다.
- 굴곡 -1/0/+1 및 광택0 화면을 확인했고, 기본 격자와 96칸 반복 선 무늬 테스트를 확인했다. 같은 곡면 규칙의 반복을 확인했으며 실제 굴절 광선을 depth 표면과 교차하는 정밀 물리 검증은 아니다.
- 390px 화면 가로 넘침 없음. 페이지 오류 없음. 실기기 GPU 성능은 측정하지 않았다.
- 이번에는 광학적 일관성을 우선했다. 이전 임의 확대·크롭의 강한 조각 효과는 줄었다. 레퍼런스의 시각적 강도까지 동일하게 달성했다고 판정하지 않는다.
- 사진 가장자리의 작은 부족 영역을 완전히 해결한 변경은 아니다. AI depth 처리 코드는 변경하지 않았으며 새 프로필에서 AI 추론 자체는 재실행하지 않았다.
증거: `before-center.png`, `before-right.png`, `final-center.png`, `final-right.png`, `final-return.png`, `grid10.png`, `grid96.png`, `final-validation.json`.