방문자

오늘
—
어제
—
누적
—

불러오는 중

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

Babylon.js

Babylon.js 9.33.2, WebGPU 반정밀도 읽기 경로 변경

Khronos glTF TextureEncodingTest 렌더 샘플
Khronos glTF TextureEncodingTest 그래픽 참고 샘플입니다. 2017, Public. · 이미지 출처 · 이용 조건

반환 타입은 Float32Array로 유지됩니다

Babylon.js 9.33.2는 한국시간 2026년 11월 3일 공개됐습니다. WebGPU의 반정밀도 텍스처 읽기 결과를 변환할 때, 런타임에 Float16Array가 있으면 이를 활용하도록 바뀌었습니다. 중요한 점은 읽기 API의 반환 배열을 Float16Array로 바꾼 것이 아니라는 사실입니다. PR #19072는 결과가 여전히 Float32Array라고 명시합니다.

기존 경로는 반정밀도 값을 하나씩 FromHalfFloat 함수로 바꿨습니다. 새 경로는 Float16Array 뷰를 만들고 목적 배열에 설정하는 과정에서 브라우저의 변환을 활용합니다. 해당 타입이 없는 환경에서는 기존 반복 변환을 유지합니다.

호출자가 받는 값의 의미는 같습니다

목적 배열은 새 Float32Array 또는 호출자가 넘긴 버퍼이며, 채울 길이를 제한하는 규칙도 그대로입니다. 정렬 때문에 붙은 행 패딩을 변환 뒤 제거하는 처리 역시 유지됩니다. 따라서 버전 변경만으로 배열 길이나 채널 배치가 바뀌었다고 설명하면 잘못된 정보가 됩니다.

예외로 NaN의 부호와 페이로드 비트는 달라질 수 있습니다. 숫자로서 NaN이라는 의미와 비트 패턴까지 동일하다는 보장은 다릅니다. PR은 일반 값과 특수 값의 변환을 검증하되 이 차이를 따로 명시합니다. 원시 바이트를 비교하는 도구라면 결과를 해석할 때 구분해야 합니다.

측정한 것은 변환과 읽기 경로입니다

작성자는 Windows 11, Chromium 147, RTX 3080 Laptop GPU에서 반정밀도 RGBA 렌더 타깃을 반복해서 읽었습니다. 해당 조건에서는 새 경로의 변환 시간과 전체 readPixels 시간이 줄었다고 보고합니다. 이는 GPU가 장면을 그리는 시간 전체가 같은 비율로 빨라진다는 뜻은 아닙니다.

PR의 단위 테스트는 모든 반정밀도 비트 패턴의 값, 목적 버퍼의 길이 제한, 256바이트 정렬 행 패딩 제거 등을 다룹니다. 이 내용은 작성자의 검증이며, 이 글에서 브라우저를 실행해 다시 측정한 것은 아닙니다. 특정 장치의 결과를 모든 런타임의 보장치로 제시하지 않습니다.

프로젝트에서는 소비하는 코드까지 확인하세요

텍스처 읽기를 쓰지 않는 화면이라면 이 변경이 직접적인 병목 개선으로 이어지지 않을 수 있습니다. 반대로 렌더 결과를 통계나 외부 도구에 전달한다면, 화면 표시뿐 아니라 읽기 후 처리 시간을 따로 측정해 볼 가치가 있습니다.

같은 크기와 형식의 텍스처를 사용하고 반환 값·길이·패딩 처리를 비교한 뒤 시간을 재보세요. Float16Array 지원 여부와 버퍼 재사용 조건도 기록하면 경로 차이를 설명하기 쉽습니다. 자료형이 내부적으로 쓰인다는 이유로 호출자의 타입 처리를 바꿀 필요가 있는 것은 아니며, 실제 API 계약을 기준으로 판단해야 합니다.

출처

댓글

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

댓글 삭제

헤드라인

같은 카테고리의 글

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