뷰어 LOD 분리 + 성능 최적화 (mesh 공유·원거리 간소화) #10

Open
opened 2026-04-16 09:22:23 +09:00 by kimminsung · 0 comments
Owner

목적

ADR-003 B10 (LOD 300) 및 ADR-004 미결 항목. 다경간·복잡 씬에서 뷰어 프레임 드롭 방지.

현재 상태

  • 각 Feature 가 독립 GPU 버퍼 (vertex/index/normal/color 전부 별도).
  • Apply 시마다 전체 씬 재생성 → feature 개수 N에 대해 O(N) GPU 업로드.
  • 피어·교대 등 고정형 부재는 매번 재생성 (불필요).
  • camber > 0 시 거더 vertex 수 10배 (세그먼트 분할).

작업 항목

LOD 분리

  • LOD 0 (근접): 현재 해상도 (PSC-I 14점 profile, camber 10 세그먼트)
  • LOD 1 (중거리): profile 단순화 (PSC-I → 8점), camber 5 세그먼트
  • LOD 2 (원거리): 거더를 단순 직육면체로 대체, 받침·격벽 생략
  • 카메라 거리 기반 자동 LOD 선택 (radius 임계값)

Mesh 공유 vertex

  • 현재 각 feature mesh 의 vertices + indices + normals + colors 독립
  • 동일 feature type (예: 거더 5개) 은 instancing 으로 1 mesh × 5 transform
  • GPU instanced rendering 으로 draw call N → 1

증분 업로드

  • 변경된 feature 만 GPU 재업로드 (현재 전체)
  • IncrementalDb.dirty_count() 기반 선택적 업로드
  • salsa backend 활성화 시 query invalidation 연동

벤치마크

  • criterion dev-dep 추가
  • 단경간 5 거더 vs 5경간 × 5 거더 × camber × variable_depth 벤치
  • Apply 평균 시간 측정 baseline

참조

  • ADR-003 B10 (LOD)
  • ADR-004 미결: "뷰어·성능" 섹션
  • cimery/crates/viewer/src/lib.rs::rebuild_mesh() — 현재 O(N) 재생성 경로
## 목적 ADR-003 B10 (LOD 300) 및 ADR-004 미결 항목. 다경간·복잡 씬에서 뷰어 프레임 드롭 방지. ## 현재 상태 - 각 Feature 가 독립 GPU 버퍼 (vertex/index/normal/color 전부 별도). - Apply 시마다 전체 씬 재생성 → feature 개수 N에 대해 O(N) GPU 업로드. - 피어·교대 등 고정형 부재는 매번 재생성 (불필요). - camber > 0 시 거더 vertex 수 10배 (세그먼트 분할). ## 작업 항목 ### LOD 분리 - [ ] **LOD 0 (근접)**: 현재 해상도 (PSC-I 14점 profile, camber 10 세그먼트) - [ ] **LOD 1 (중거리)**: profile 단순화 (PSC-I → 8점), camber 5 세그먼트 - [ ] **LOD 2 (원거리)**: 거더를 단순 직육면체로 대체, 받침·격벽 생략 - [ ] 카메라 거리 기반 자동 LOD 선택 (`radius` 임계값) ### Mesh 공유 vertex - [ ] 현재 각 feature mesh 의 `vertices + indices + normals + colors` 독립 - [ ] 동일 feature type (예: 거더 5개) 은 instancing 으로 1 mesh × 5 transform - [ ] GPU instanced rendering 으로 draw call N → 1 ### 증분 업로드 - [ ] 변경된 feature 만 GPU 재업로드 (현재 전체) - [ ] `IncrementalDb.dirty_count()` 기반 선택적 업로드 - [ ] salsa backend 활성화 시 query invalidation 연동 ### 벤치마크 - [ ] `criterion` dev-dep 추가 - [ ] 단경간 5 거더 vs 5경간 × 5 거더 × camber × variable_depth 벤치 - [ ] Apply 평균 시간 측정 baseline ## 참조 - ADR-003 B10 (LOD) - ADR-004 미결: "뷰어·성능" 섹션 - `cimery/crates/viewer/src/lib.rs::rebuild_mesh()` — 현재 O(N) 재생성 경로
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kimminsung/ParaWiki#10