Apply reviewer suggestions
Signed-off-by: Nemerle <nemerle5+git@gmail.com>
This commit is contained in:
@@ -948,19 +948,17 @@ namespace AZ
|
||||
{
|
||||
AZStd::vector<uint16_t>& skinJointIndices = productMesh.m_skinJointIndices;
|
||||
AZStd::vector<float>& skinWeights = productMesh.m_skinWeights;
|
||||
const auto& sourceMeshData = sourceMesh.m_meshData;
|
||||
|
||||
size_t numInfluencesAdded = 0;
|
||||
for (const auto& skinData : sourceMesh.m_skinData)
|
||||
{
|
||||
const AZ::u32 controlPointIndex = sourceMeshData->GetControlPointIndex(static_cast<int>(vertexIndex));
|
||||
const size_t numSkinInfluences = skinData->GetLinkCount(controlPointIndex);
|
||||
const size_t numSkinInfluences = skinData->GetLinkCount(vertexIndex);
|
||||
|
||||
size_t numInfluencesExcess = 0;
|
||||
|
||||
for (size_t influenceIndex = 0; influenceIndex < numSkinInfluences; ++influenceIndex)
|
||||
{
|
||||
const AZ::SceneAPI::DataTypes::ISkinWeightData::Link& link = skinData->GetLink(controlPointIndex, influenceIndex);
|
||||
const AZ::SceneAPI::DataTypes::ISkinWeightData::Link& link = skinData->GetLink(vertexIndex, influenceIndex);
|
||||
|
||||
const float weight = link.weight;
|
||||
const AZStd::string& boneName = skinData->GetBoneName(link.boneId);
|
||||
|
||||
@@ -312,7 +312,7 @@ namespace AZ
|
||||
|
||||
const View::UsageFlags viewFlags = worklistData->m_view->GetUsageFlags();
|
||||
const RHI::DrawListMask drawListMask = worklistData->m_view->GetDrawListMask();
|
||||
uint32_t numDrawPackets = 0;
|
||||
[[maybe_unused]] uint32_t numDrawPackets = 0;
|
||||
uint32_t numVisibleCullables = 0;
|
||||
|
||||
AZ_Assert(worklist.size() > 0, "Received empty worklist in ProcessWorklist");
|
||||
@@ -460,8 +460,6 @@ namespace AZ
|
||||
cullStats.m_numVisibleCullables += numVisibleCullables;
|
||||
++cullStats.m_numJobs;
|
||||
}
|
||||
#else
|
||||
(void)numDrawPackets; // prevent unused variable warning->error
|
||||
#endif //AZ_CULL_DEBUG_ENABLED
|
||||
}
|
||||
|
||||
|
||||
@@ -9,11 +9,15 @@
|
||||
#include <AtomCore/Instance/InstanceDatabase.h>
|
||||
#include <AtomCore/std/containers/vector_set.h>
|
||||
|
||||
#include <Atom/RPI.Public/Pass/SlowClearPass.h>
|
||||
#include <Atom/RPI.Public/Pass/ParentPass.h>
|
||||
#include <Atom/RPI.Public/Pass/PassAttachment.h>
|
||||
#include <Atom/RPI.Public/Pass/PassDefines.h>
|
||||
#include <Atom/RPI.Public/Pass/PassSystemInterface.h>
|
||||
#include <Atom/RPI.Public/RenderPipeline.h>
|
||||
|
||||
#include <Atom/RPI.Reflect/Pass/SlowClearPassData.h>
|
||||
#include <Atom/RPI.Reflect/Pass/PassName.h>
|
||||
#include <Atom/RPI.Reflect/Pass/PassRequest.h>
|
||||
|
||||
namespace AZ
|
||||
@@ -196,7 +200,7 @@ namespace AZ
|
||||
}
|
||||
}
|
||||
|
||||
// --- PassTemplate related functions ---
|
||||
// --- Child creation ---
|
||||
|
||||
void ParentPass::CreatePassesFromTemplate()
|
||||
{
|
||||
@@ -217,6 +221,49 @@ namespace AZ
|
||||
}
|
||||
}
|
||||
|
||||
void ParentPass::CreateClearPassFromBinding(PassAttachmentBinding& binding, PassRequest& clearRequest)
|
||||
{
|
||||
if (binding.m_unifiedScopeDesc.m_loadStoreAction.m_loadAction == RHI::AttachmentLoadAction::Clear ||
|
||||
binding.m_unifiedScopeDesc.m_loadStoreAction.m_loadActionStencil == RHI::AttachmentLoadAction::Clear)
|
||||
{
|
||||
// Set the name of the child clear pass as well as the binding it's connected to
|
||||
clearRequest.m_passName = ConcatPassName(Name("Clear"), binding.m_name);
|
||||
clearRequest.m_connections[0].m_attachmentRef.m_attachment = binding.m_name;
|
||||
|
||||
// Set the pass clear value to the clear value of the attachment binding
|
||||
SlowClearPassData* clearData = static_cast<SlowClearPassData*>(clearRequest.m_passData.get());
|
||||
clearData->m_clearValue = binding.m_unifiedScopeDesc.m_loadStoreAction.m_clearValue;
|
||||
|
||||
// Create and add the pass
|
||||
Ptr<Pass> clearPass = PassSystemInterface::Get()->CreatePassFromRequest(&clearRequest);
|
||||
if (clearPass)
|
||||
{
|
||||
AddChild(clearPass);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ParentPass::CreateClearPassesFromBindings()
|
||||
{
|
||||
PassRequest clearRequest;
|
||||
clearRequest.m_templateName = Name("SlowClearPassTemplate");
|
||||
clearRequest.m_passData = AZStd::make_shared<SlowClearPassData>();
|
||||
clearRequest.m_connections.push_back();
|
||||
clearRequest.m_connections[0].m_localSlot = Name("ClearInputOutput");
|
||||
clearRequest.m_connections[0].m_attachmentRef.m_pass = Name("Parent");
|
||||
|
||||
for (uint32_t idx = 0; idx < GetInputCount(); ++idx)
|
||||
{
|
||||
CreateClearPassFromBinding(GetInputBinding(idx), clearRequest);
|
||||
}
|
||||
|
||||
for (uint32_t idx = 0; idx < GetInputOutputCount(); ++idx)
|
||||
{
|
||||
CreateClearPassFromBinding(GetInputOutputBinding(idx), clearRequest);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Pass behavior functions ---
|
||||
|
||||
void ParentPass::CreateChildPasses()
|
||||
@@ -229,6 +276,7 @@ namespace AZ
|
||||
m_flags.m_alreadyCreatedChildren = true;
|
||||
|
||||
RemoveChildren();
|
||||
CreateClearPassesFromBindings();
|
||||
CreatePassesFromTemplate();
|
||||
CreateChildPassesInternal();
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <Atom/RPI.Public/Pass/PassFilter.h>
|
||||
#include <Atom/RPI.Public/Pass/RasterPass.h>
|
||||
#include <Atom/RPI.Public/Pass/MSAAResolvePass.h>
|
||||
#include <Atom/RPI.Public/Pass/SlowClearPass.h>
|
||||
#include <Atom/RPI.Public/Pass/Specific/MSAAResolveFullScreenPass.h>
|
||||
#include <Atom/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.h>
|
||||
#include <Atom/RPI.Public/Pass/Specific/RenderToTexturePass.h>
|
||||
@@ -60,6 +61,7 @@ namespace AZ
|
||||
{
|
||||
AddPassCreator(Name("ParentPass"), &ParentPass::Create);
|
||||
AddPassCreator(Name("RasterPass"), &RasterPass::Create);
|
||||
AddPassCreator(Name("SlowClearPass"), &SlowClearPass::Create);
|
||||
AddPassCreator(Name("CopyPass"), &CopyPass::Create);
|
||||
AddPassCreator(Name("FullScreenTriangle"), &FullscreenTrianglePass::Create);
|
||||
AddPassCreator(Name("ComputePass"), &ComputePass::Create);
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <Atom/RPI.Reflect/Pass/PassTemplate.h>
|
||||
#include <Atom/RPI.Reflect/Pass/RasterPassData.h>
|
||||
#include <Atom/RPI.Reflect/Pass/RenderPassData.h>
|
||||
#include <Atom/RPI.Reflect/Pass/SlowClearPassData.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
@@ -67,6 +68,7 @@ namespace AZ
|
||||
PassSlot::Reflect(context);
|
||||
|
||||
PassData::Reflect(context);
|
||||
SlowClearPassData::Reflect(context);
|
||||
CopyPassData::Reflect(context);
|
||||
RenderPassData::Reflect(context);
|
||||
ComputePassData::Reflect(context);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Atom/RPI.Public/Pass/SlowClearPass.h>
|
||||
#include <Atom/RPI.Public/Pass/PassUtils.h>
|
||||
|
||||
#include <Atom/RPI.Reflect/Pass/SlowClearPassData.h>
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
namespace RPI
|
||||
{
|
||||
Ptr<SlowClearPass> SlowClearPass::Create(const PassDescriptor& descriptor)
|
||||
{
|
||||
Ptr<SlowClearPass> pass = aznew SlowClearPass(descriptor);
|
||||
return pass;
|
||||
}
|
||||
|
||||
SlowClearPass::SlowClearPass(const PassDescriptor& descriptor)
|
||||
: RenderPass(descriptor)
|
||||
{
|
||||
const SlowClearPassData* passData = PassUtils::GetPassData<SlowClearPassData>(descriptor);
|
||||
if (passData != nullptr)
|
||||
{
|
||||
m_clearValue = passData->m_clearValue;
|
||||
}
|
||||
}
|
||||
|
||||
void SlowClearPass::InitializeInternal()
|
||||
{
|
||||
RenderPass::InitializeInternal();
|
||||
|
||||
// Set clear value
|
||||
AZ_Assert(GetInputOutputCount() > 0, "SlowClearPass: Missing InputOutput binding!");
|
||||
RPI::PassAttachmentBinding& binding = GetInputOutputBinding(0);
|
||||
binding.m_unifiedScopeDesc.m_loadStoreAction.m_clearValue = m_clearValue;
|
||||
}
|
||||
|
||||
} // namespace RPI
|
||||
} // namespace AZ
|
||||
Reference in New Issue
Block a user