Test_UE5_006_20230317.zip (883.0 KB)
I tried doing the same with the mesh generated by the geometry script in the ue5 runtime, but it had no effect when running or packaging the runtime
virtual void FPlottingDynamicMeshSceneProxy::DrawStaticElements(FStaticPrimitiveDrawInterface* PDI) override
{
if (RuntimeVirtualTextures.Num())
{
TArray<FMeshRenderBufferSet*> Buffers;
GetActiveRenderBufferSets(Buffers);
for (const FMeshRenderBufferSet* Buffer : Buffers)
{
UMaterialInterface* BufferMat = Buffer->Material;
check(BufferMat);
FMeshBatch MeshBatch;
MeshBatch.LODIndex = 0;
MeshBatch.SegmentIndex = 0;
MeshBatch.VertexFactory = &Buffer->VertexFactory;
MeshBatch.Type = PT_TriangleList;
MeshBatch.LODIndex = 0;
MeshBatch.SegmentIndex = 0;
MeshBatch.bDitheredLODTransition = !IsMovable() && Buffer->Material->GetRenderProxy()->GetMaterialInterface()->IsDitheredLODTransition();
MeshBatch.bWireframe = false;
MeshBatch.CastShadow = false;
MeshBatch.bUseForDepthPass = false;
MeshBatch.bUseAsOccluder = false;
MeshBatch.bUseForMaterial = false;
MeshBatch.bRenderToVirtualTexture = true;
MeshBatch.MaterialRenderProxy = Buffer->Material->GetRenderProxy();
MeshBatch.RuntimeVirtualTextureMaterialType = (int32)ERuntimeVirtualTextureMaterialType::BaseColor_Normal_Specular;
MeshBatch.ReverseCulling = IsLocalToWorldDeterminantNegative();
MeshBatch.DepthPriorityGroup = SDPG_World;
MeshBatch.bCanApplyViewModeOverrides = false;
MeshBatch.Elements.Empty(1);
FMeshBatchElement BatchElement;
BatchElement.IndexBuffer = &Buffer->IndexBuffer;
BatchElement.FirstIndex = 0;
BatchElement.NumPrimitives = Buffer->IndexBuffer.Indices.Num() / 3;
BatchElement.MinVertexIndex = 0;
BatchElement.MaxVertexIndex = Buffer->StaticMeshVertexBuffer.GetNumVertices() - 1;
MeshBatch.Elements.Add(BatchElement);
PDI->DrawMesh(MeshBatch, FLT_MAX);
}
}
}