PROTOPIE / STUDIO SEED
공통 렌더러의 경계를
설계하는 일.
플랫폼별 DOM·네이티브 뷰로 화면을 그리던 구조를 공통 GPU 렌더러로 연결하기 위해, Rust·wgpu 기반 2D 벡터 렌더러를 설계·구축했습니다. 구현에 앞서 렌더 커맨드, GPU 파이프라인, 블렌드 모드를 RFC로 정의했습니다.
장면의 상태와 명령 계약, 실행 계획, GPU 자원, 브라우저 실행 경계를 나누고 각 모듈이 같은 그래픽 의미를 공유하도록 구성했습니다.
개발 문서 기반 아키텍처 사례입니다. 원본 실행 소스와 성능 로그는 현재 보존되어 있지 않습니다. 배경의 입자 작품은 이 포트폴리오를 위해 새로 만든 독립 구현입니다.
DECISION 02
명령에서 실행까지,
책임을 나눕니다.
장면의 논리적 순서가 곧바로 GPU 실행 순서가 되지는 않습니다. 렌더 그래프가 패스 의존성을 DAG로 만들고, 정렬된 실행 계획과 임시 텍스처 수명을 관리하도록 구성했습니다. 그리기를 수행하는 encoder와 자원을 제공하는 경계도 분리했습니다.
- 01명령과 변경
명령 batch, scene dirty, texture update, camera revision
- 02공유 계획과 자원
StrokePlanSet, 바인딩, 프레임 자원 준비
- 03그래프 실행
패스 의존성, executor, encoder를 통해 제출
- 04프레임 마무리
지속 캐시와 dirty 상태, camera revision 갱신
DECISION 03
실패를 분류하면
복구도 구체적이 됩니다.
실패를 모두 같은 재시도로 처리하지 않도록, surface 상태와 그래프 오류의 대응을 나눴습니다. 결정적인 오류가 발생했을 때는 같은 프레임을 반복 실행하기보다 변경을 기다리는 경로를 문서화했습니다.
| 상태 | 대응 정책 |
|---|---|
| Lost / Outdated | surface 재구성 |
| Timeout | 후속 프레임 재시도 |
| 결정적인 graph 오류 | 새 dirty 변경을 기다림 |
IMPLEMENTATION BOUNDARIES
남아 있는 기록과 범위.
Path·Text는 Slug coverage, 기본 도형은 analytic primitive로 나누고, stroke는 expansion 후 fill로 연결하는 경로가 문서에 남아 있습니다. 모든 기능이 완료된 상태로 소개하지 않습니다.
- MaskRaster / ApplyMask는 문서상 미구현입니다.
- 일부 고급 블렌드 모드는 Normal fallback을 사용합니다.
- pathops의 수학 기반 작업은 프레임 실행 경로와 연결되지 않았습니다.
- 공통 플랫폼 동작은 프로젝트 목표이며 전체 플랫폼 출시 완료를 뜻하지 않습니다.
DEVELOPMENT ARCHIVE
설계의 근거.
공개가 허락된 일곱 모듈의 개발 문서입니다. 문서의 타입·API·테스트 설명은 보존된 설계 기록이며, 현재 실행 검증 결과와 구분합니다.
renderer-core명령·장면 계약GPU에 독립적인 타입과 공유 StrokePlanSetrenderer-graph실행 계획패스 DAG, 순서 결정, 임시 텍스처renderer-tess그리기Slug Path/Text, analytic 도형, stroke expansionrenderer-gpuGPU 경계RHI, wgpu context, 플랫폼별 소유·공유renderer-resource자원 관리texture provider, paint slot, LRU budgetrenderer-wasm브라우저 연결명령 batch, invalidation, resize와 복구renderer-pathops진행 중 범위수학 기반 이식 작업. 프레임 경로 미연결