From 73976149da080965d24d9644d98156d0741e73fc Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 6 Feb 2022 21:25:52 +0100 Subject: [PATCH] Fix blend shape dirty vertices range --- Source/Engine/Graphics/Models/BlendShape.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Graphics/Models/BlendShape.cpp b/Source/Engine/Graphics/Models/BlendShape.cpp index fb1c27b48..5f1f75c1a 100644 --- a/Source/Engine/Graphics/Models/BlendShape.cpp +++ b/Source/Engine/Graphics/Models/BlendShape.cpp @@ -9,7 +9,7 @@ BlendShapesInstance::MeshInstance::MeshInstance() : IsUsed(false) , IsDirty(false) , DirtyMinVertexIndex(0) - , DirtyMaxVertexIndex(MAX_uint32) + , DirtyMaxVertexIndex(MAX_uint32 - 1) , VertexBuffer(0, sizeof(VB0SkinnedElementType), TEXT("Skinned Mesh Blend Shape")) { } @@ -112,7 +112,7 @@ void BlendShapesInstance::Update(SkinnedModel* skinnedModel) // Initialize the dynamic vertex buffer data (use the dirty range from the previous update to be cleared with initial data) instance.VertexBuffer.Data.Resize(vertexBuffer.Length()); const uint32 dirtyVertexDataStart = instance.DirtyMinVertexIndex * sizeof(VB0SkinnedElementType); - const uint32 dirtyVertexDataLength = Math::Min(instance.DirtyMaxVertexIndex - instance.DirtyMinVertexIndex, vertexCount) * sizeof(VB0SkinnedElementType); + const uint32 dirtyVertexDataLength = Math::Min(instance.DirtyMaxVertexIndex - instance.DirtyMinVertexIndex + 1, vertexCount) * sizeof(VB0SkinnedElementType); Platform::MemoryCopy(instance.VertexBuffer.Data.Get() + dirtyVertexDataStart, vertexBuffer.Get() + dirtyVertexDataStart, dirtyVertexDataLength); // Blend all blend shapes