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