Babylon.js 9.35.0, WebGL 컨텍스트 손실 뒤 텍스처 연결 수정
모아보기 · 소식 기준일 · 블로그 공개
컨텍스트가 사라지는 중 컴파일한 이펙트의 샘플러가 빠지던 문제를 고쳤습니다.

발표 내용
9.35.0 릴리스는 WebGL 컨텍스트 손실 중에 컴파일한 이펙트에서 샘플러가 누락되는 경우를 수정했습니다. 텍스처를 다루는 여러 객체의 해제 경로에서도 GPU 자원 정리를 보완했습니다.
확인할 부분
브라우저 게임에서 영향을 확인하려면 최초 실행뿐 아니라 컨텍스트 손실 후 돌아오는 장면을 함께 테스트해야 합니다. 텍스처가 다시 표시되는지와 자원이 정리되는지는 별도로 볼 항목입니다.
한 번 열린 장면이 다시 살아나는지 확인하기
브라우저가 WebGL 컨텍스트를 잃으면 화면을 그리는 데 쓰던 그래픽 상태가 그대로 남는다는 가정을 할 수 없어요. 엔진이 복원 과정에서 이펙트를 다시 준비하고 텍스처를 연결해도, 일부 샘플러가 빠지면 장면은 다시 움직이는데 특정 재질의 그림만 비어 보일 수 있어요. 이 때문에 첫 로딩이 성공했는지와 복구된 화면이 원래 재질을 되찾았는지를 별도로 확인해야 합니다.
확인할 장면에는 단색 물체와 텍스처를 사용하는 물체를 함께 놓습니다. 두 가지가 모두 사라지는 경우는 렌더링 자체를 봐야 하고, 텍스처가 필요한 쪽만 이상하다면 연결과 복원 시점을 좁혀 볼 수 있어요. 테스트 환경에서 컨텍스트 손실과 복원을 유도할 수 있다면, 이미 화면에 나오던 재질과 복원 과정에서 처음 준비되는 재질을 따로 비교합니다. 릴리스 노트가 지목한 조건은 컨텍스트가 손실되는 동안 이펙트가 컴파일된 상황이기 때문입니다.
자원 정리는 또 다른 관찰 지점입니다. 장면을 한 번 복원해 성공하더라도 텍스처를 없애고 다시 생성하는 일을 반복할 때 자원이 계속 쌓이는지까지 알 수는 없어요. 같은 장면을 여러 번 열고 닫되 화면 결과, 경고, 리소스 수의 변화를 따로 기록하면 일회성 복구와 반복 사용의 안정성을 구분할 수 있어요. 브라우저 전체의 메모리 수치를 바로 텍스처 누수로 해석하지 않고 엔진이 추적하는 자원과 함께 보는 것이 좋습니다.