
스트리머(텍스처 스트리밍 시스템)는 엔진에서 각 텍스처의 해상도를 높이거나 줄입니다. 높은 비주얼 퀄리티를 유지하면서 가용 메모리를 효율적으로 관리할 수 있게 해줍니다. 이를 위해서는 텍스처 해상도에 대해 미리 계산된 이미지 시퀀스인 밉(Mips), 또는 밉맵(Mipmap)이 사용됩니다. 밉은 텍스처의 LOD로 생각하면 됩니다. 밉에 관한 추가 정보는 텍스처 포맷 지원 및 세팅 페이지를 참조하세요.
스트리머에는 자체적인 월드 뷰가 있습니다. 월드 뷰의 업데이트 사이클은 다음과 같이 구성됩니다.
- 월드 뷰 업데이트
- 각 텍스처에 이상적인 해상도 계산
- 스트리밍 풀 크기에 따라 실제로 가능한 해상도 선택
- 업데이트할 텍스처 선택
- 로드 / 언로드 요청 생성
위 과정을 완료하기 위해 스트리머는 비동기 워커 스레드를 사용하여 게임 스레드의 작업 부하를 감소시킵니다. 따라서 게임 업데이트 루프에서는 위 과정에서 첫 번째와 마지막 작업만 수행하면 됩니다. 월드 뷰는 각 프리미티브 컴포넌트에 사용되는 모든 텍스처 목록과 각각에 대한 월드 바운드와 텍셀 월드 사이즈로 구성됩니다. 이 정보와 주어진 시점을 통해 픽셀 비율당 좋은 텍셀을 구하는 데 필요한 해상도를 계산할 수 있습니다. 그런 다음 이 컴포넌트가 화면상에 실제로 보이는지 아닌지와 같은 부가 정보를 고려합니다. 이에 따라 각 텍스처의 이상적인 해상도를 결정합니다. 그 후 스트리머는 그 해상도가 들어갈 만큼 스트리밍 풀이 충분히 큰지 계산합니다. 풀이 충분히 크지 않다면, 스트리머는 계획된 해상도가 예산 내에 들어올 때까지 선택한 텍스처의 계획된 퀄리티를 한 번에 한 밉씩 낮춥니다.
밉을 낮출 때 텍스처가 처리되는 순서는 유지 우선순위에 따라 정의되며, 다음과 같은 규칙을 순서대로 따릅니다.
- 랜드스케이프 텍스처, 강제 로드 텍스처, 이미 해상도가 없는 텍스처는 유지합니다.
- 화면에 보이는 밉은 유지합니다.
- 메모리를 많이 차지하지 않는 텍스처와 캐릭터 텍스처는 유지합니다.
- 보이지 않는 밉을 낮추고, 마지막으로 보였던 밉부터 낮춥니다.
각 텍스처에 대해 로드할 해상도를 결정한 스트리머는 로드 순서 우선순위에 따라 먼저 업데이트할 텍스처를 계산합니다. 우선순위는 아래 순서에 따라 여러 기준을 평가하여 결정됩니다.
- 보이는 밉부터 로드합니다.
- 강제 로드 텍스처, 랜드스케이프 텍스처, 캐릭터 텍스처부터 로드합니다.
- 목표 해상도와 가장 멀리 떨어진 텍스처부터 로드합니다.
- 보이지 않는 밉은 가장 최근에 보였던 것부터 로드합니다.
최종 단계는 업데이트 요청 일괄처리를 생성하는 것으로, 단계마다 현재 텍스처 해상도를 높이거나 낮춥니다. 현재 진행중인 요청의 수를 낮게 유지할 수 있도록 하나의 일괄 처리에 업데이트되는 메모리 양은 임시 풀 크기의 제한을 받습니다.
4.15 개선사항
텍스처 스트리밍 시스템이 최적화되어 CPU와 메모리 사용량 및 로드 시간이 줄어든 반면 저해상도 부작용이 사라졌고, 여러 플랫폼의 다양한 메모리 예산 관련 제약을 자동으로 처리할 수 있게 되었습니다.
- 텍스처 메모리 사용량이 향상되었습니다.
- 텍스처 로드 시간이 향상되었습니다.
- CPU 시간이 감소되었습니다.
- 게임 스레드 업데이트 시간이 50% 감소되었습니다.
- 스트리밍 레벨에서 텍스처 처리 시 버벅거리는 시간이 최대 98% 감소되었습니다.
- 저해상도 부작용이 감소되었습니다.
- 메모리 예산을 자동 처리합니다.
- 텍스처 스트리밍 디버깅 시각화 뷰 모드가 생겼습니다.
- 프리미티브 거리 정확도
- 메시 UV 밀도 정확도
- 머티리얼 텍스처 스케일 정확도
- 필수 텍스처 해상도
신규 개선사항과 여러분의 게임에 맞는 디버깅 방법에 대한 자세한 정보는 텍스처 스트리밍 데이터 빌드 및 텍스처 스트리밍 지표 보고 페이지를 참조하세요.