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