- CPNG("Compatible Network Graphics")는 약 30년 된 PNG 이미지 형식의 100% 호환 가능한 포크. PNG의 기능을 현대적으로 확장하면서도 기존의 브라우저, 운영체제, 엔진 등과의 호환성 유지
- 목표: 기존 PNG보다 인코딩/디코딩 속도가 훨씬 빠르며 (인코딩 10배 이상, 디코딩 2-3배 이상), 이를 통해 새로운 기능을 추가할 수 있는 동력과 라이브러리 채택
- 주요 특징:
- Constrained Deflate 스트림: 기존 라이브러리 대비 인코딩 속도를 10-25배, 디코딩 속도를 2-3배 향상시키는 기능으로, 이미 fpng/fpnge에서 구현됨
- 멀티스레드 인코딩/디코딩: Apple이 이미 사용 중인 기술. CPNG 부가 청크에 탐색 테이블 추가, 이미지를 스트립 단위로 병렬 인코딩/디코딩 가능.
- FP16 및 LOGLUV32 지원: HDR 이미지를 PNG만 지원하는 브라우저와 OS에서도 합리적인 방식으로 볼 수 있도록 설계. HDR 데이터는 간단하고 빠른 절차를 통해 손실 없이 복구 가능
- .EXR 대안으로서의 CPNG: .EXR 형식은 너무 많은 압축 형식을 지원하여 실제로는 호환되지 않음. CPNG는 손실 없는 톤 매핑 대안을 제공하며, 대부분의 브라우저와 OS에서 미리보기 가능.
- LOGLUV32의 설계: 파일 크기 부풀림을 피하면서 진정한 HDR을 달성하기 위한 설계 진행 중. 다른 "HDR" 솔루션들은 실제로 사용되는 비트보다 더 많은 16비트 픽셀을 저장해야 함을 지적하며, 이는 낭비라고 주장.
- 라이브러리 작성자의 중요성: 호환성을 유지하는 한, 실질적으로 형식을 제어하는 것은 라이브러리 작성자임.
GN⁺의 의견
- CPNG는 기존의 PNG 형식과 완벽하게 호환되면서도 현대적인 기능을 추가한 새로운 이미지 형식으로, 특히 인코딩/디코딩 속도의 혁신적인 향상과 HDR 지원이 주목할 만함.
- 이러한 발전은 웹 개발자, 그래픽 디자이너, 소프트웨어 엔지니어 등 다양한 분야의 전문가들에게 매우 유익하고 흥미로운 변화를 가져올 것으로 기대됨.
- 호환성을 중심으로 한 접근 방식은 기술의 발전과 사용자 경험 향상을 동시에 추구하는 현대 소프트웨어 개발의 중요한 원칙을 반영함.