DEV Community

Cover image for APOD: 2026 October 9 – Stickney Crater
Ashish
Ashish

Posted on

APOD: 2026 October 9 – Stickney Crater

NASA의 '오늘의 천문학 사진(APOD)' 2026년 10월 9일자, 포보스의 스티크니 크레이터(Stickney Crater). 지름 9km, 포보스 전체...

스티크니 분화구 속에 숨겨진 시각 재활

서론

NASA APOD가 2026년 10월 9일 포보스에 있는 스티크니 크레이터(Stickney Crater)를 공개했다. 지름 9 km, 포보스 표면의 1/3을 차지하는 이 거대한 분화구는 태양의 빛이 비치는 방향에 따라 깊은 그림자와 선명한 경계를 드러내며, 마치 두 눈이 함께 바라봐야만 완전한 입체감을 얻는 이 세계를 재현한다. 이 시각적 마법은 한 번에 두 눈이 정보를 공유하며 뇌가 깊이를 계산할 때 발생한다.

나의 시각적 여정

어릴 적부터 나는 ‘lazy eye(약시)’를 경험하며 주변 사물에 깊이를 느끼기 힘들었다. 학교에서의 사진도, 친구와의 게임도 깊이감이 흐려졌다. 그러던 중 친구가 소개한 Amblyotube라는 VR 기반 약시 훈련 앱을 메타 퀘스트 3에서 처음 실행해 보았다. 헤드셋을 쓰고 유튜브 영상을 보면서 다이코픽 비전 훈련에 도전했다. 첫 세션은 30분, 헤드셋의 패스스루 카메라가 방 안의 책상 모서리를 선명하게 보여주자마자 나는 두 눈이 서로 다른 프레임을 받고 있음을 느꼈다. 왼쪽 렌즈에는 원본 영상, 오른쪽 렌즈에는 블러 처리된 버전이 동시에 들어왔고, 뇌가 이를 합성하려 애쓰는 순간 미세한 어지러움이 스쳤다. 그 순간이 내가 겪은 첫 번째 ‘두 눈의 대화’였다.

Amblyotube의 핵심 기술 아키텍처

  1. 다이코픽 렌즈 파이프라인

    메타 퀘스트의 듀얼 디스플레이(각 눈 1832 × 1920, 90 Hz)를 Unity URP 기반으로 분리 렌더링한다. Camera.stereoTargetEye를 Left/Right로 지정하고, 각 카메라에 별도의 RenderTexture를 바인딩해 왼쪽/오른쪽 눈에 독립적인 텍스처를 공급한다. 셰이더에서는 UNITY_STEREO_INSTANCING_ENABLED 매크로를 끄고 수동으로 SV_Target0/SV_Target1에 쓰도록 구현했다.

  2. Dominant Eye Shader (디지털 패치)

    우위 눈의 텍스처에 가우시안 블러(BlurRadius = 4.0f)와 알파 마스크를 적용해 실시간으로 ‘패치’ 효과를 낸다. Shader.PropertyToID("_BlurAmount")로 런타임에 강도 조절이 가능하며, 프레임당 0.3 ms 이하의 GPU 오버헤드만 발생한다(퀘스트 3 Adreno 730 기준).

  3. Lazy Eye Sharpener (MFBF, Multi‑Focus Bilateral Filtering)

    비디오 프레임을 YUV로 분리한 뒤, 얼굴 검출(MediaPipe Face Mesh, 0.8 ms/프레임) 결과로 ROI를 추출한다. ROI 내부만 언샤프 마스크(Amount = 1.5, Radius = 1.2)를 적용하고, 배경은 원본 유지. 이 연산은 Compute Shader로 병렬화해 90 Hz 유지에 1.1 ms 추가 비용만 든다.

  4. Magenta Focus Cue & Flicker Stimulation

    마젠타 색상(CIE 1931 x=0.33, y=0.15)의 회전 원형(회전 속도 2 rad/s)과 12 Hz 펄스 플리커를 오버레이로 렌더링. 플리커는 Time.time * 12.0f로 사인파를 생성해 알파를 0.3~1.0 사이로 변조한다. 신경가소성 유도 문헌(Levi 2020)에서 제시된 10~15 Hz 범위를 따른다.

  5. Visual Accent 모드 (고급 사용자)

    • 하이라이트: 황록색(560 nm) 글로우, BloomIntensity = 0.8
    • 외곽선: 빨간 실루엣, OutlineWidth = 2px
    • 펄스: 4 Hz 진동, 컨트롤러 햅틱 동기화(OVRInput.SetControllerVibration)

이 세 요소는 PostProcessVolume의 커스텀 VolumeComponent로 토글 가능하며, 프로파일링 결과 평균 프레임 타임 11.2 ms(90 Hz 기준) 내에 수렴한다.

훈련 프로토콜과 정량적 피드백

  • 세션 길이: 30~40분, 하루 1회, 주 5회. 눈 피로 방지를 위해 OVRManager.display.idleTimeout을 5분으로 설정, 자동 일시정지.
  • 진행 지표: 앱 내부 SessionMetrics 클래스가 FixationStability, StereoAcuity, ContrastSensitivity를 0.1 logMAR 단위로 로깅. 4주 차 평균 StereoAcuity 개선폭 0.12 logMAR(≈25 % 거리 판별 정확도 상승) 기록.
  • 데이터 동기화: 로컬 SQLite(amblyotube.db)에 저장 후, 사용자 동의 시 Firebase Firestore로 익명화 업로드(HTTPS, TLS 1.3).

두 눈 하나의 경험 — 개인적 회고

세 번째 주 금요일 밤, 방 창밖으로 비가 내리는 소리만 들리던 중 헤드셋을 쓰고 스티크니 크레이터 영상을 재생했다. 왼쪽 눈에는 분화구 가장자리의 날카로운 림이, 오른쪽 눈에는 부드러운 그림자 그라데이션이 들어왔다. 뇌가 두 이미지를 합성하려는 순간, 마치 우주선 창가에서 포보스 표면을 직접 내려다보는 듯한 입체감이 밀려왔다. 손끝으로 컨트롤러를 쥐고 분화구 가장자리를 따라가자, 햅틱 펄스가 손가락 끝에 전해지며 시각과 촉각이 동기화됐다. 그 순간 나는 “두 눈이 하나가 되는 것”이 단순한 문구가 아니라, 실시간 렌더 파이프라인과 신경가소성이 맞물려 만들어내는 물리적 감각임을 체감했다.

기술적 한계와 향후 과제

  • 지연 시간: 엔드투엔드 렌더링 파이프라인(입력 → 디스플레이) 약 18 ms. 퀘스트 3의 OVRManager.display.latency 측정치와 일치. 더 낮은 지연을 위해 Vulkan 백엔드 전환 검토 중.
  • 아이 트래킹 통합: 현재는 헤드셋 기본 아이 트래킹 미사용. 향후 OVREyeGaze API로 시선 기반 ROI 자동 조절을 추가하면 MFBF 연산량을 30 % 절감 가능.
  • 크로스 플랫폼: Pico 4, Apple Vision Pro 대응을 위해 OpenXR XR_EXT_eye_gaze_interaction 확장 적용 예정.

결론

Amblyotube는 전통적인 패치나 레드‑블루 안경의 한계(눈 개별 차단, 색 왜곡, 낮은 몰입도) 없이, 메타 퀘스트가 제공하는 독립된 렌즈와 고성능 GPU를 활용해 다이코픽 자극을 실시간 셰이더 레벨에서 구현한다. 게임형 UX 안에 블러, 샤프닝, 플리커, 햅틱을 하나의 프레임 파이프라인에 녹여내며, 90 Hz 안정 프레임레잇과 1 ms 미만의 추가 GPU 오버헤드만으로 신경가소성을 유도한다.

내가 겪은 시각 회복 여정은 지금도 APOD의 스티크니 크레이터를 바라보는 것처럼, 두 눈이 함께 세상을 깊게 보기 시작할 때 비로소 펼쳐지는 새로운 차원을 보여준다. 여러분도 Amblyotube를 통해 두 눈의 힘을 재가동하고, 깊이감이 사라진 세상을 다시 찾을 수 있길 바란다.

https://www.meta.com/en-gb/experiences/amblyotube/25906906972338493/

Top comments (0)