BOSS 1
심초음파 DICOM 뷰어 SDK
2026.03 ~ 현재 · 기여율 80% · 측정 계층 단독
- WebGL2
- GLSL
- WebCodecs
- DICOM Part 10
- npm workspace
문제 정의
동시 재생 성능 저하, 장비별 압축 형식, 제품마다 달라지는 측정 규칙. 기존 오픈소스 뷰어의 확장 구조로 세 요구를 함께 수용하기 어려워, 성능과 기능 확장을 제품 요구에 맞게 제어할 기반이 필요했습니다.
해결 과정
- 01
WebGL2 2D Array Texture와 뷰포트별 scissor 렌더링을 적용해 여러 클립을 한 렌더링 흐름에서 재생했습니다.
- 02
WebCodecs 하드웨어 디코딩을 우선 사용하고 Safari에서는 createImageBitmap으로 전환되는 이중 경로를 구성했습니다.
- 03
브라우저가 지원하지 않는 JPEG Lossless·JPEG 2000·RLE·Deflate 디코더를 JavaScript로 구현했습니다.
- 04
대용량 클립은 GPU 텍스처 예산을 할당 전에 판정해, 실패가 검은 화면으로 남지 않도록 오류 상태와 연결했습니다.
- 05
측정 도구의 스타일과 조작 규칙을 옵션으로 분리해 제품별 정책을 SDK 수정 없이 적용할 수 있게 했습니다.
검증 결과
16개 → 100개뷰포트 동시 재생 @ 60fps
5.2만 LOCcore + react 두 패키지를 사내 npm으로 발행·운영
지원 포맷 로드 실패 0브라우저가 지원하지 않는 압축 형식 4종을 JavaScript 디코더로 처리
측정 도구 데모
Morgana에서 구현한 Volume contour·VTI trace·라인 그룹핑 규칙을 인터랙션 예제로 확인할 수 있습니다.
- Volume
- VTI
- Line Group