お世話になります。
Mesh Streamingを使用した際にテクスチャとPoolを共有した場合の優先度について相談です。
MeshStreamingを有効にした状態でPoolをテクスチャと共有した場合にMeshとテクスチャはどちらが優先されるのでしょうか?
<br/>
こちらとしてはMeshを優先してPoolを使用してほしいと考えているのですが、設定などでどちらを優先するかを切り替えられたりするのでしょうか?
<br/>
よろしくお願いいたします。
お世話になります。
Mesh Streamingを使用した際にテクスチャとPoolを共有した場合の優先度について相談です。
MeshStreamingを有効にした状態でPoolをテクスチャと共有した場合にMeshとテクスチャはどちらが優先されるのでしょうか?
<br/>
こちらとしてはMeshを優先してPoolを使用してほしいと考えているのですが、設定などでどちらを優先するかを切り替えられたりするのでしょうか?
<br/>
よろしくお願いいたします。
お世話になっております。
Texture StreamingとMesh Streamingを利用した場合の挙動に関しましては、デフォルトでMesh側のLODが優先される残る状態となっております。
こちらはコンソール変数**r.Streaming.PrioritizeMeshLODRetention 1(bPrioritizeMeshLODRetention)**でデフォルト有効化されており、
プールが溢れた場合に削減対象を決めるTryDropMips関数内でテクスチャ側を優先的に落としていくようなアルゴリズムとなっています。
void FRenderAssetStreamingMipCalcTask::TryDropMips(TArray<int32>& PrioritizedRenderAssets, int64& MemoryBudgeted, const int64 InMemoryBudget)
※プライオリティソートの基準となっている各アセットのRetentionPriority値は以下で求められています。
int64 FStreamingRenderAsset::UpdateRetentionPriority_Async(bool bPrioritizeMesh)
現状の仕組みよりもメッシュ側を残したい、といった場合は予めメモリの予算を見積もって頂き、コンソール変数r.Streaming.PoolSizeForMeshesにてMesh用のプールを別途分けて管理頂くような形が望ましいかと思われます。
お手数おかけしますが、よろしくお願いいたします。