Core 운영 방침 및 일정
2026-08-29
- 진행사항 Sync 및 이슈 추천
- ThorVG 에서 사용되고 있는 오픈소스/기술 소개
- 작업 사례: ThorVG Image Loader
- 유닛 테스트 커버리지 작업
이슈 추천
CPU Engine
- 이미지 성능 최적화 (Image Direct, Image Rotate…) (특수 케이스에서 대략 20% ~ 70% 성능향상 예상)
- NEON #30
- AVX #29
- WEB SIMD(question)
- 분석 & 스터디, Co-author
- CPU Gradient AA #4688
- Fill 방식이 Repeat 방식인 Transform 경우, 경계 Anti-Aliasing이 적용되지 않는 문제
- LUT (Lookup Table) 기반 Gradient AA 적용 시, Repeat 경계에서 LUT를 재사용하지 못하는 문제
- Transform Animation 시 LUT 를 상시 파괴 하지 않는 방향 (경계값에서 파괴)
- 성능과 바이너리 영향 최소화하는 방향
Infra
- workflow 최적화 방안 ISSUE화
- github action workflow(ubuntu unit test, memcheck) -> 병렬 실행 시간 단축
- clone: ref depth=0, ref depth=1 (shallow clone) -> workflow 실행 시간 단축
- unit test line coverage 측정 & 코드 리팩터링
- 커버리지 낮은 부분에 대한 테스트 코드 추가
- meson + lcov + genhtml
- 사용되지 않은 코드 정리
- 개선할만한 부분 이슈화
- 커버리지 낮은 부분에 대한 테스트 코드 추가
- 툴
- thorvg.pixel-inspector, thovg.view
- 멀티 플랫폼 통합
- thorvg.swift, thorvg.android
- 게임을 제외한 그래픽스 산업에서는 IOS/Android Graphics 통합 경험을 요구하기도 한다.
- ex. 카카오 모빌리티, Snow, 네이버 등
- thorvg.swift, thorvg.android
Saver
Loader
- 오픈소스 -> 보안 업데이트, 성능 개선, 버그 수정, 커스텀
- #4485 — webp: upgrade the webp decoder with the latest libwebp
- #2250 - jerryscript: replace the jerryscript memory allocator
- JS 인터프리터 JerryScript의 메모리 -> 메모리 System 으로 교체하는작업
- 바이너리 사이즈와 유연한 메모리 관리가 가능하도록 개선
- Lottie 의 Expression 기능 과 연관
IMPORTANT
이슈 진행시 주의사항
-
ThorVG 에서 오픈된 이슈 중 몇몇은 실제적 사용사례가 없으면 반영안하는 경우가 존재
-
명확한 재현가능한 버그, 확실한 품질 개선 등이 아니면 PR이 merge 되지 않을 수 있음
-
성능 측정
- thorvg.benchmark
- thorvg.example
여기서 추천된 Saver, Loader, Gradient AA 는 Merge 가능성이 낮을 수 있음
CORE 2026 / THORVG
Core 대시보드
Core 6명 · thorvg/thorvg 단일 프로젝트
Issue
Issue · 참여 21
- thorvg#4698infra: build fails when asan is enabled (MSYS2)
- thorvg#4688cpu: repeat-gradient anti-aliasing ignores transform
- thorvg#4446lottie: layer effect dropped by JSON key order
- thorvg#4577wgpu: unrendered regions make the window transparent on Windows (MSYS2)
- thorvg#4669gif: Some parts of the visual colors are still not encoded correctly.
- thorvg#1758gif: a broken gif conversion
- thorvg#4497common: support build-time log level selection
- thorvg#4174renderer: Support actual font face name instead of font file name
- thorvg#3788text: support ttc extension
- thorvg#4547infra: binary size workflow not working on wg_engine
- thorvg#4591doc: ambiguous 'default value' phrasing in docs
- thorvg#4618clean up compiler padding warnings
- thorvg#4642svg: refactor named color assignment
- thorvg#4601proposal: Detect struct byte padding during build
- thorvg#4621svg: Speed up color lookup with binary search
- thorvg#4641svg: Clarify null separator handling for invalid style declarations
- thorvg#4605SVG: nullptr crash parsing a css @font-face with no trailing ;
- thorvg#4349lottie: revise bezier interpolator
- thorvg#29cpu: AVX optimization
- thorvg#4426gl_engine: blur shader optimization
- thorvg#4703optimize struct memory usage
항목 없음
PR
PR · Merged 8
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
- thorvg#4640svg: optimize named color lookup with binary search
- thorvg#4609svg/parser: Prevent a crash in font-face declarations
- thorvg#4653wg_engine: fix compiler warning for WgStageBufferSolidColor
항목 없음
PR · Total 14
- thorvg#4710cpu_engine: allow subpixel-aligned axis-aligned rects
- thorvg#4750cpu_engine: sync repeat-gradient anti-aliasing with transform
- thorvg#4721lottie: fix layer effects dropped by JSON key order
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4590Revert "doc: fix incorrect alpha default value in fill()/strokeFill() description"
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
- thorvg#4620Wpadded warnings clean up
- thorvg#4640svg: optimize named color lookup with binary search
- thorvg#4609svg/parser: Prevent a crash in font-face declarations
- thorvg#4653wg_engine: fix compiler warning for WgStageBufferSolidColor
- thorvg#4697gl: optimize Gaussian blur weight calculation
항목 없음
TOTAL
TOTAL · Issue + PR 35
- thorvg#4698infra: build fails when asan is enabled (MSYS2)
- thorvg#4688cpu: repeat-gradient anti-aliasing ignores transform
- thorvg#4446lottie: layer effect dropped by JSON key order
- thorvg#4577wgpu: unrendered regions make the window transparent on Windows (MSYS2)
- thorvg#4669gif: Some parts of the visual colors are still not encoded correctly.
- thorvg#1758gif: a broken gif conversion
- thorvg#4497common: support build-time log level selection
- thorvg#4174renderer: Support actual font face name instead of font file name
- thorvg#3788text: support ttc extension
- thorvg#4547infra: binary size workflow not working on wg_engine
- thorvg#4591doc: ambiguous 'default value' phrasing in docs
- thorvg#4618clean up compiler padding warnings
- thorvg#4642svg: refactor named color assignment
- thorvg#4601proposal: Detect struct byte padding during build
- thorvg#4621svg: Speed up color lookup with binary search
- thorvg#4641svg: Clarify null separator handling for invalid style declarations
- thorvg#4605SVG: nullptr crash parsing a css @font-face with no trailing ;
- thorvg#4349lottie: revise bezier interpolator
- thorvg#29cpu: AVX optimization
- thorvg#4426gl_engine: blur shader optimization
- thorvg#4703optimize struct memory usage
- thorvg#4710cpu_engine: allow subpixel-aligned axis-aligned rects
- thorvg#4750cpu_engine: sync repeat-gradient anti-aliasing with transform
- thorvg#4721lottie: fix layer effects dropped by JSON key order
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4590Revert "doc: fix incorrect alpha default value in fill()/strokeFill() description"
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
- thorvg#4620Wpadded warnings clean up
- thorvg#4640svg: optimize named color lookup with binary search
- thorvg#4609svg/parser: Prevent a crash in font-face declarations
- thorvg#4653wg_engine: fix compiler warning for WgStageBufferSolidColor
- thorvg#4697gl: optimize Gaussian blur weight calculation
항목 없음
alpakaDurumi
Issue
Issue · 참여 11
- thorvg#4698infra: build fails when asan is enabled (MSYS2)
- thorvg#4688cpu: repeat-gradient anti-aliasing ignores transform
- thorvg#4446lottie: layer effect dropped by JSON key order
- thorvg#4577wgpu: unrendered regions make the window transparent on Windows (MSYS2)
- thorvg#4669gif: Some parts of the visual colors are still not encoded correctly.
- thorvg#1758gif: a broken gif conversion
- thorvg#4497common: support build-time log level selection
- thorvg#4174renderer: Support actual font face name instead of font file name
- thorvg#3788text: support ttc extension
- thorvg#4547infra: binary size workflow not working on wg_engine
- thorvg#4591doc: ambiguous 'default value' phrasing in docs
항목 없음
PR
PR · Merged 5
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
항목 없음
PR · Total 9
- thorvg#4710cpu_engine: allow subpixel-aligned axis-aligned rects
- thorvg#4750cpu_engine: sync repeat-gradient anti-aliasing with transform
- thorvg#4721lottie: fix layer effects dropped by JSON key order
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4590Revert "doc: fix incorrect alpha default value in fill()/strokeFill() description"
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
항목 없음
TOTAL
TOTAL · Issue + PR 20
- thorvg#4698infra: build fails when asan is enabled (MSYS2)
- thorvg#4688cpu: repeat-gradient anti-aliasing ignores transform
- thorvg#4446lottie: layer effect dropped by JSON key order
- thorvg#4577wgpu: unrendered regions make the window transparent on Windows (MSYS2)
- thorvg#4669gif: Some parts of the visual colors are still not encoded correctly.
- thorvg#1758gif: a broken gif conversion
- thorvg#4497common: support build-time log level selection
- thorvg#4174renderer: Support actual font face name instead of font file name
- thorvg#3788text: support ttc extension
- thorvg#4547infra: binary size workflow not working on wg_engine
- thorvg#4591doc: ambiguous 'default value' phrasing in docs
- thorvg#4710cpu_engine: allow subpixel-aligned axis-aligned rects
- thorvg#4750cpu_engine: sync repeat-gradient anti-aliasing with transform
- thorvg#4721lottie: fix layer effects dropped by JSON key order
- thorvg#4685savers/gif: separate color quantization from the palette search structure
- thorvg#4655savers/gif: fix broken gif palette creation
- thorvg#4603infra: enable the wg engine in the binary size workflow
- thorvg#4590Revert "doc: fix incorrect alpha default value in fill()/strokeFill() description"
- thorvg#4586doc: fix incorrect current point description in appendRect()
- thorvg#4576doc: fix incorrect alpha default value in fill()/strokeFill() description
항목 없음
J-unStiN
Issue
PR
PR · Closed 0
항목 없음
TOTAL
TOTAL · Issue + PR 6
- thorvg#4618clean up compiler padding warnings
- thorvg#4642svg: refactor named color assignment
- thorvg#4601proposal: Detect struct byte padding during build
- thorvg#4621svg: Speed up color lookup with binary search
- thorvg#4620Wpadded warnings clean up
- thorvg#4640svg: optimize named color lookup with binary search
항목 없음
jeongsunyong
Issue
Issue · Open 0
항목 없음
PR
PR · Open 0
항목 없음
PR · Closed 0
항목 없음
TOTAL
DaengDo
Issue
Issue · Open 0
항목 없음
Issue · Closed 0
항목 없음
PR
PR · Open 0
항목 없음
PR · Closed 0
항목 없음
TOTAL
Saususge
Issue
Issue · Open 0
항목 없음
Issue · Closed 0
항목 없음
PR
PR · Open 0
항목 없음
PR · Merged 0
항목 없음
TOTAL
tcpark11
Issue
Issue · Open 0
항목 없음
Issue · Closed 0
항목 없음
PR
PR · Open 0
항목 없음
PR · Closed 0
항목 없음
PR · Merged 0
항목 없음
PR · Total 0
항목 없음
TOTAL
TOTAL · Issue + PR 2
항목 없음
Q & A
아래 내용은 개인적인 경험을 바탕으로 작성한 의견입니다.
- 특정 기업을 타겟팅하는 방법과 포트폴리오 주제 선정에 관해 질문드립니다.
- 채용 공고를 분석하고, 요구 역량과 연관된 주제를 선정하는 것이 가장 좋은 것 같습니다. (포트폴리오는 일관성 있게 구성)
- 채용 공고만으로 부족하다면, LinkedIn을 활용해 해당 기업에 재직 중이거나 이직·퇴직한 분께 커피챗을 신청해 이야기해 보는 것이 좋습니다.
- LinkedIn 프로필에는 자신의 성과, GitHub 주소, 포트폴리오, 이력서 등을 공개하는 경우가 많기 때문에 LinkedIn이나 GitHub를 탐색하는 것이 많은 도움이 됩니다.
- OSSCA와 같은 프로그램에 참여했다면, 해당 프로그램과 연관된 내용을 포트폴리오에 녹여내면 좋을 것 같습니다.
- 예: 실제 공고에 있는 단어와 실제 이슈를 연결한 기여 활동
- 수학·정교한 프로그래밍(1px 오차): Gradient AA 이슈
- PNG·JPG 등 파일 포맷: WebP Loader 버전 업데이트, PNG Saver
- 저수준 개발: 사용 중인 오픈소스 분석, ThorVG 자체 기여, SIMD, GPU Engine/CPU Engine
- 성능 최적화:
thorvg.example또는thorvg.benchmark프로파일링 후 개선 제안 및 PR - C++·JavaScript: SIMD와 WebSIMD
- 테스트: Unit Test와 Pixel Test에 기여
- 예: 실제 공고에 있는 단어와 실제 이슈를 연결한 기여 활동