방문자

오늘
—
어제
—
누적
—

불러오는 중

게임 개발 · 기술 동향 · 팀 블로그MIRO
헤드라인

Babylon.js

Babylon.js 9.33.1에 KTX2 텍스처 인코더 추가

BoxTexturedNonPowerOfTwo 렌더 샘플
그래픽 개념을 보여주는 Khronos glTF 참고 샘플입니다. 2017, Cesium. - Non-copyrightable logo for Cesium logo · 이미지 출처 · 이용 조건

실험적인 인코딩 기능의 추가입니다

Babylon.js 9.33.1은 한국시간 2026년 10월 31일 공개됐습니다. Basis Universal v2_50을 이용해 RGBA8 데이터를 KTX2로 인코딩하는 실험적 패키지 @babylonjs/ktx2encoder가 추가됐습니다. 기존 KTX2 디코딩과는 반대 방향의 작업이며, 모든 텍스처를 자동으로 압축하는 기능은 아닙니다.

PR #19011은 용도를 나타내는 usage를 필수로 받습니다. color는 ETC1S와 sRGB, data와 normal은 선형 UASTC를 선택합니다. 같은 픽셀 배열이라도 색상 이미지와 데이터 텍스처의 의미가 다르므로, 용도 선택을 단순한 압축 품질 옵션처럼 다루지 않는 것이 중요합니다.

내보내기 통합은 별도 범위입니다

core 내부의 텍스처 인코딩 경로는 텍스처로부터 방향과 밉맵 설정을 가져옵니다. 그러나 이 PR에서 예고한 glTF exporter의 공개 진입점 통합은 변경 범위 밖입니다. 9.33.1에 인코더가 들어갔다는 사실과 glTF 내보내기 전체가 바로 압축을 지원한다는 주장을 구분해야 합니다.

Standalone 사용과 core 내부 사용의 설정 처리도 같지 않습니다. 워커 수와 의존성처럼 최초 생성 시점에 결정되는 값이 있으므로, 작업마다 설정을 바꾸면 모두 즉시 반영될 것으로 기대하지 않는 편이 좋습니다. 실제 호출 경로와 초기화 시점을 먼저 확인해야 합니다.

이미지 크기와 실행 환경에 제약이 있습니다

원문은 가로·세로가 4의 배수이고 각각 4부터 16,384 범위이며 전체 픽셀 수는 12,582,912 이하라고 명시합니다. 이 제약에서는 4096×4096 이미지도 인코딩할 수 없습니다. 자동 크기 조절 기능은 제공하지 않습니다.

각 워커는 약 128 MiB의 WASM 메모리로 시작하며, 공식 팩토리에는 CSP의 unsafe-eval 요구 조건이 있습니다. 보안 정책을 임의로 완화하기보다 실제 배포 환경에서 사용할 수 있는지 먼저 검토할 항목입니다. 메인 스레드의 동기 압축은 중간에 끊을 수 없다는 제약도 있어 응답성 판단과 연결됩니다.

크기만 보고 적용하지 마세요

도입 검토에서는 색상·노멀·데이터 텍스처를 나누고, 원본과 결과의 채널 의미와 방향이 유지되는지 확인해 보세요. 파일 용량뿐 아니라 알파 경계, 작은 무늬, 노멀 표현과 처리 시간을 함께 보는 편이 좋습니다. 이는 사용 시 점검 제안이지 해당 패키지의 실제 품질을 측정한 결과는 아닙니다.

PR은 실제 Basis 인코딩을 포함한 집중 테스트와 브라우저 통합 검증 이력을 설명하지만, 모든 입력 이미지의 성공을 보장하지는 않습니다. 우선 지원 크기 안의 작은 샘플로 파이프라인을 확인한 뒤, 메모리와 실패 처리까지 포함해 확대하는 순서가 합리적입니다.

출처

댓글

이 글에 대한 생각을 남겨 주세요.

댓글 삭제

헤드라인

같은 카테고리의 글

최신 게임 개발 동향 전체 보기 ↗