ソースを参照

Update ASV to use the new handle interface for the SkinnedMeshFeatureProcessor (#431)

Signed-off-by: Tommy Walton <[email protected]>
Tommy Walton 3 年 前
コミット
be4859eba6

+ 5 - 16
Gem/Code/Source/SkinnedMeshContainer.cpp

@@ -140,7 +140,7 @@ namespace AtomSampleViewer
         // For now, there is a 1-1 match of input meshes to instances
         SkinnedMesh& skinnedMesh = m_skinnedMeshes[i];
         RenderData& renderData = m_skinnedMeshInstances[i];
-        if (renderData.m_skinnedMeshRenderProxy.IsValid())
+        if (renderData.m_skinnedMeshHandle.IsValid())
         {
             return;
         }
@@ -184,13 +184,9 @@ namespace AtomSampleViewer
             }
             // If render proxies already exist, they will be auto-freed
             AZ::Render::SkinnedMeshShaderOptions defaultShaderOptions;
-            AZ::Render::SkinnedMeshFeatureProcessorInterface::SkinnedMeshRenderProxyDesc desc{ skinnedMesh.m_skinnedMeshInputBuffers, renderData.m_skinnedMeshInstance, renderData.m_meshHandle, renderData.m_boneTransformBuffer, defaultShaderOptions };
+            AZ::Render::SkinnedMeshFeatureProcessorInterface::SkinnedMeshHandleDescriptor desc{ skinnedMesh.m_skinnedMeshInputBuffers, renderData.m_skinnedMeshInstance, renderData.m_meshHandle, renderData.m_boneTransformBuffer, defaultShaderOptions };
 
-            renderData.m_skinnedMeshRenderProxy = m_skinnedMeshFeatureProcessor->AcquireRenderProxyInterface(desc);
-            if (renderData.m_skinnedMeshRenderProxy.IsValid())
-            {
-                renderData.m_skinnedMeshRenderProxy->SetTransform(renderData.m_rootTransform);
-            }
+            renderData.m_skinnedMeshHandle = m_skinnedMeshFeatureProcessor->AcquireSkinnedMesh(desc);
         }
         else
         {
@@ -226,15 +222,8 @@ namespace AtomSampleViewer
 
         // Release the per-instance data
         RenderData& renderData = m_skinnedMeshInstances[i];
-
-        if (renderData.m_skinnedMeshRenderProxy.IsValid())
-        {
-            m_skinnedMeshFeatureProcessor->ReleaseRenderProxyInterface(renderData.m_skinnedMeshRenderProxy);
-        }
-        if (renderData.m_meshHandle)
-        {
-            m_meshFeatureProcessor->ReleaseMesh(*renderData.m_meshHandle);
-        }
+        m_skinnedMeshFeatureProcessor->ReleaseSkinnedMesh(renderData.m_skinnedMeshHandle);
+        m_meshFeatureProcessor->ReleaseMesh(*renderData.m_meshHandle);
 
         renderData.m_skinnedMeshInstance.reset();
         renderData.m_boneTransformBuffer.reset();

+ 1 - 1
Gem/Code/Source/SkinnedMeshContainer.h

@@ -39,7 +39,7 @@ namespace AtomSampleViewer
         struct RenderData
         {
             AZ::Transform m_rootTransform = AZ::Transform::CreateIdentity();
-            AZ::Render::SkinnedMeshRenderProxyInterfaceHandle m_skinnedMeshRenderProxy;
+            AZ::Render::SkinnedMeshFeatureProcessorInterface::SkinnedMeshHandle m_skinnedMeshHandle;
             AZStd::intrusive_ptr<AZ::Render::SkinnedMeshInstance> m_skinnedMeshInstance = nullptr;
             AZ::Data::Instance<AZ::RPI::Buffer> m_boneTransformBuffer = nullptr;
             AZStd::shared_ptr<AZ::Render::MeshFeatureProcessorInterface::MeshHandle> m_meshHandle;