Open 3D Engine Atom Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZ::RPI::ComputePass Class Reference

A ComputePass is a leaf pass (pass with no children) that is used for GPU compute. More...

#include <ComputePass.h>

Inherits AZ::RPI::RenderPass, and ShaderReloadNotificationBus::Handler.

Inherited by AZ::RPI::DownsampleSinglePassLuminancePass, AZ::RPI::SubsurfaceScatteringPass, AZ::Render::BakeAcesOutputTransformLutPass, AZ::Render::BlendColorGradingLutsPass, AZ::Render::BloomBlurChildPass, AZ::Render::BloomCompositeChildPass, AZ::Render::BloomDownsamplePass, AZ::Render::CheckerboardColorResolvePass, AZ::Render::ChromaticAberrationPass, AZ::Render::DepthExponentiationPass, AZ::Render::DepthOfFieldWriteFocusDepthFromGpuPass, AZ::Render::DepthUpsamplePass, AZ::Render::EyeAdaptationPass, AZ::Render::FastDepthAwareBlurHorPass, AZ::Render::FastDepthAwareBlurVerPass, AZ::Render::LightCullingPass, AZ::Render::LightCullingRemap, AZ::Render::LightCullingTilePreparePass, AZ::Render::LuminanceHistogramGeneratorPass, AZ::Render::MorphTargetComputePass, AZ::Render::NewDepthOfFieldTileReducePass, AZ::Render::SkinnedMeshComputePass, AZ::Render::SsaoComputePass, and AZ::Render::TaaPass.

Public Member Functions

 AZ_RTTI (ComputePass, "{61464A74-BD35-4954-AB27-492644EA6C2A}", RenderPass)
 
 AZ_CLASS_ALLOCATOR (ComputePass, SystemAllocator)
 
void SetTargetThreadCounts (uint32_t targetThreadCountX, uint32_t targetThreadCountY, uint32_t targetThreadCountZ)
 Sets the target total number of threads to dispatch in each dimension.
 
Data::Instance< ShaderResourceGroupGetShaderResourceGroup () const
 Returns the shader resource group.
 
Data::Instance< ShaderGetShader () const
 Return the shader.
 
- Public Member Functions inherited from AZ::RPI::RenderPass
 AZ_RTTI (RenderPass, "{9441D114-60FD-487B-B2B7-0FBBC8A96FC2}", Pass)
 
 AZ_CLASS_ALLOCATOR (RenderPass, SystemAllocator)
 
RHI::RenderAttachmentConfiguration GetRenderAttachmentConfiguration () const
 
RHI::MultisampleState GetMultisampleState () const
 Get MultisampleState of this pass from its output attachments.
 
Data::Instance< ShaderResourceGroupGetShaderResourceGroup ()
 Returns a pointer to the Pass ShaderResourceGroup.
 
ViewPtr GetView () const
 
void BindSrg (const RHI::ShaderResourceGroup *srg)
 
- Public Member Functions inherited from AZ::RPI::Pass
 AZ_RTTI (Pass, "{EA34FF66-631D-433B-B449-71F5647E7BB5}", AZStd::intrusive_base)
 
 AZ_CLASS_ALLOCATOR (Pass, SystemAllocator)
 
const Name & GetName () const
 Returns the name of the pass (example: Bloom)
 
const Name & GetPathName () const
 Return the path name of the pass (example: Root.SwapChain.Bloom)
 
uint32_t GetTreeDepth () const
 Returns the depth of this pass in the tree hierarchy (Root depth is 0)
 
uint32_t GetParentChildIndex () const
 Returns the index in the parent's array of children that this pass occupies (used for sorting passes)
 
uint32_t GetInputCount () const
 Returns the number of input attachment bindings.
 
uint32_t GetInputOutputCount () const
 Returns the number of input/output attachment bindings.
 
uint32_t GetOutputCount () const
 Returns the number of output attachment bindings.
 
const PassTemplateGetPassTemplate () const
 
void SetEnabled (bool enabled)
 
virtual bool IsEnabled () const
 
bool HasDrawListTag () const
 
bool HasPipelineViewTag () const
 
bool BindViewSrg () const
 
PassAttachmentBindingFindAttachmentBinding (const Name &slotName)
 
PassAttachmentBindingListView GetAttachmentBindings () const
 Return the set of attachment bindings.
 
ParentPassAsParent ()
 Casts the pass to a parent pass if valid, else returns nullptr.
 
const ParentPassAsParent () const
 
bool IsRootPass () const
 Returns whether the pass is the root pass.
 
PassTreeGetPassTree () const
 Returns the PassTree from the pass's RenderPipeline (or nullptr if there isn't one)
 
void QueueForBuildAndInitialization ()
 Queues the pass to have Build() and Initialize() called by the PassSystem on frame update.
 
void QueueForRemoval ()
 Queues the pass to have RemoveFromParent() called by the PassSystem on frame update.
 
void QueueForInitialization ()
 Queues the pass to have Initialize() called by the PassSystem on frame update.
 
void AddAttachmentBinding (PassAttachmentBinding attachmentBinding)
 Adds an attachment binding to the list of this Pass' attachment bindings.
 
PassAttachmentBindingGetInputBinding (uint32_t index)
 
PassAttachmentBindingGetInputOutputBinding (uint32_t index)
 
PassAttachmentBindingGetOutputBinding (uint32_t index)
 
void AttachBufferToSlot (AZStd::string_view slot, Data::Instance< Buffer > buffer)
 
void AttachBufferToSlot (const Name &slot, Data::Instance< Buffer > buffer)
 
void AttachImageToSlot (const Name &slot, Data::Instance< AttachmentImage > image)
 
virtual void GetPipelineViewTags (PipelineViewTags &outTags) const
 Collect all different view tags from this pass.
 
virtual void GetViewDrawListInfo (RHI::DrawListMask &outDrawListMask, PassesByDrawList &outPassesByDrawList, const PipelineViewTag &viewTag) const
 Adds this pass' DrawListTags to the outDrawListMask.
 
virtual RHI::DrawListTag GetDrawListTag () const
 Check if the pass has a DrawListTag. Pass' DrawListTag can be used to filter draw items.
 
virtual void SortDrawList (RHI::DrawList &drawList) const
 Function used by views to sort draw lists. Can be overridden so passes can provide custom sort functionality.
 
virtual const PipelineViewTag & GetPipelineViewTag () const
 Check if the pass is associated to a view. If pass has a pipeline view tag, the rpi view assigned to this view tag will have pass's draw list tag.
 
virtual void SetRenderPipeline (RenderPipeline *pipeline)
 Set render pipeline this pass belongs to.
 
RenderPipelineGetRenderPipeline () const
 
SceneGetScene () const
 
virtual void Validate (PassValidationResults &validationResults)
 
virtual void DebugPrint () const
 Prints the pass.
 
TimestampResult GetLatestTimestampResult () const
 Return the latest Timestamp result of this pass.
 
PipelineStatisticsResult GetLatestPipelineStatisticsResult () const
 Return the latest PipelineStatistic result of this pass.
 
virtual void SetTimestampQueryEnabled (bool enable)
 Enables/Disables Timestamp queries for this pass.
 
virtual void SetPipelineStatisticsQueryEnabled (bool enable)
 Enables/Disables PipelineStatistics queries for this pass.
 
bool ReadbackAttachment (AZStd::shared_ptr< AttachmentReadback > readback, uint32_t readbackIndex, const Name &slotName, PassAttachmentReadbackOption option=PassAttachmentReadbackOption::Output, const RHI::ImageSubresourceRange *mipsRange=nullptr)
 
bool IsTimestampQueryEnabled () const
 Returns whether the Timestamp queries is enabled/disabled for this pass.
 
bool IsPipelineStatisticsQueryEnabled () const
 Returns whether the PipelineStatistics queries is enabled/disabled for this pass.
 
void PrintIndent (AZStd::string &stringOutput, uint32_t indent) const
 Helper function to print spaces to indent the pass.
 
void PrintPassName (AZStd::string &stringOutput, uint32_t indent=0) const
 Prints the name of the pass.
 
void DebugPrintBinding (AZStd::string &stringOutput, const PassAttachmentBinding &binding) const
 Prints the attachment binding at the given index.
 
void DebugPrintBindingAndConnection (AZStd::string &stringOutput, uint8_t bindingIndex) const
 Prints the attachment binding at the given index and its connection.
 
void PrintErrors () const
 Prints the pass name and all the errors accumulated during build and setup.
 
void PrintWarnings () const
 Prints the pass name and all the warnings accumulated during build and setup.
 
void PrintMessages (const AZStd::vector< AZStd::string > &messages) const
 Helper function to print an array of messages (like errors or warnings) for a pass.
 
void PrintBindingsWithoutAttachments (uint32_t slotTypeMask) const
 Prints the pass and all the list of inputs and input/outputs that are missing an attachment.
 
ParentPassGetParent () const
 Returns pointer to the parent pass.
 
PassState GetPassState () const
 
void UpdateConnectedBindings ()
 
void UpdateConnectedInputBindings ()
 
void UpdateConnectedOutputBindings ()
 
- Public Member Functions inherited from AZ::RHI::ScopeProducer
 ScopeProducer (const ScopeId &scopeId)
 
const ScopeId & GetScopeId () const
 Returns the scope id associated with this scope producer.
 
const ScopeGetScope () const
 Returns the scope associated with this scope producer.
 

Static Public Member Functions

static Ptr< ComputePassCreate (const PassDescriptor &descriptor)
 Creates a ComputePass.
 

Protected Member Functions

 ComputePass (const PassDescriptor &descriptor, AZ::Name supervariant=AZ::Name(""))
 
void CompileResources (const RHI::FrameGraphCompileContext &context) override
 
void MatchDimensionsToOutput ()
 
void OnShaderReinitialized (const Shader &shader) override
 
void OnShaderAssetReinitialized (const Data::Asset< ShaderAsset > &shaderAsset) override
 
void OnShaderVariantReinitialized (const ShaderVariant &shaderVariant) override
 
void LoadShader (AZ::Name supervariant=AZ::Name(""))
 
- Protected Member Functions inherited from AZ::RPI::RenderPass
 RenderPass (const PassDescriptor &descriptor)
 
void SetupFrameGraphDependencies (RHI::FrameGraphInterface frameGraph) override
 
void BuildCommandList (const RHI::FrameGraphExecuteContext &context) final
 
void DeclareAttachmentsToFrameGraph (RHI::FrameGraphInterface frameGraph) const
 
void DeclarePassDependenciesToFrameGraph (RHI::FrameGraphInterface frameGraph) const
 
void BindPassSrg (const RHI::FrameGraphCompileContext &context, Data::Instance< ShaderResourceGroup > &shaderResourceGroup)
 
void CollectSrgs ()
 
void ResetSrgs ()
 
void SetSrgsForDraw (RHI::CommandList *commandList)
 
void SetSrgsForDispatch (RHI::CommandList *commandList)
 
void SetPipelineViewTag (const PipelineViewTag &viewTag)
 
void AddScopeQueryToFrameGraph (RHI::FrameGraphInterface frameGraph)
 
- Protected Member Functions inherited from AZ::RPI::Pass
 Pass (const PassDescriptor &descriptor)
 
PassDescriptor GetPassDescriptor () const
 
void ImportAttachments (RHI::FrameGraphAttachmentInterface attachmentDatabase)
 
Ptr< PassFindAdjacentPass (const Name &passName)
 
const PassAttachmentBindingFindAttachmentBinding (const Name &slotName) const
 
Ptr< PassAttachmentFindOwnedAttachment (const Name &attachmentName) const
 
Ptr< PassAttachmentFindAttachment (const Name &slotName) const
 
const PassAttachmentBindingFindAdjacentBinding (const PassAttachmentRef &attachmentRef, const char *attachmentSourceTypeDebugName="attachment")
 
void ProcessConnection (const PassConnection &connection, uint32_t slotTypeMask=0xFFFFFFFF)
 
void LogError (AZStd::string &&message)
 
void LogWarning (AZStd::string &&message)
 
void Reset ()
 
void Build (bool calledFromPassSystem=false)
 
void Initialize ()
 
void OnInitializationFinished ()
 
void FrameBegin (FramePrepareParams params)
 
void FrameEnd ()
 
void UpdateReadbackAttachment (FramePrepareParams params, bool beforeAddScopes)
 
void UpdateAttachmentCopy (FramePrepareParams params)
 
- Protected Member Functions inherited from AZ::RHI::ScopeProducer
 ScopeProducer ()
 
void SetHardwareQueueClass (HardwareQueueClass hardwareQueueClass)
 Sets the HardwareQueueClass on the scope.
 
void SetScopeId (const ScopeId &scopeId)
 
void InitScope (const ScopeId &scopeId, HardwareQueueClass hardwareQueueClass=HardwareQueueClass::Graphics)
 

Protected Attributes

Data::Instance< Shaderm_shader = nullptr
 
Data::Instance< RPI::ShaderResourceGroupm_drawSrg = nullptr
 
RHI::DispatchItem m_dispatchItem
 
bool m_isFullscreenPass = false
 
PassDescriptor m_passDescriptor
 
- Protected Attributes inherited from AZ::RPI::RenderPass
Data::Instance< ShaderResourceGroupm_shaderResourceGroup = nullptr
 
RHI::HardwareQueueClass m_hardwareQueueClass = RHI::HardwareQueueClass::Graphics
 
- Protected Attributes inherited from AZ::RPI::Pass
const Name PassNameThis {"This"}
 
const Name PassNameParent {"Parent"}
 
const Name PipelineKeyword {"Pipeline"}
 
const Name PipelineGlobalKeyword {"PipelineGlobal"}
 
AZStd::fixed_vector< PassAttachmentBinding, PassAttachmentBindingCountMax > m_attachmentBindings
 
AZStd::vector< Ptr< PassAttachment > > m_ownedAttachments
 
AZStd::vector< Pass * > m_executeBeforePasses
 
AZStd::vector< Pass * > m_executeAfterPasses
 
RenderPipelinem_pipeline = nullptr
 
AZStd::shared_ptr< const PassTemplatem_template = nullptr
 
PassRequest m_request
 
ParentPassm_parent = nullptr
 
PipelineViewTag m_viewTag
 
struct {
   union {
      struct {
         uint64_t   m_createdByPassRequest: 1
 
         uint64_t   m_enabled: 1
 
         uint64_t   m_parentEnabled: 1
 
         uint64_t   m_alreadyCreatedChildren: 1
 
         uint64_t   m_createChildren: 1
 
         uint64_t   m_partOfHierarchy: 1
 
         uint64_t   m_hasDrawListTag: 1
 
         uint64_t   m_bindViewSrg: 1
 
         uint64_t   m_timestampQueryEnabled: 1
 
         uint64_t   m_pipelineStatisticsQueryEnabled: 1
 
         uint64_t   m_isPipelineRoot: 1
 
         uint64_t   m_containsGlobalReference: 1
 
      } 
 
      uint64_t   m_allFlags = 0
 
   } 
 
m_flags
 
AZStd::vector< AZStd::string > m_errorMessages
 
AZStd::vector< AZStd::string > m_warningMessages
 
uint32_t m_errors = 0
 
uint32_t m_warnings = 0
 
RHI::DrawListSortType m_drawListSortType = RHI::DrawListSortType::KeyThenDepth
 
AZStd::shared_ptr< AttachmentReadbackm_attachmentReadback
 
PassAttachmentReadbackOption m_readbackOption
 
AZStd::weak_ptr< ImageAttachmentCopym_attachmentCopy
 
AZStd::shared_ptr< PassDatam_passData = nullptr
 Optional data used during pass initialization.
 

Additional Inherited Members

- Public Types inherited from AZ::RPI::Pass
using ChildPassIndex = RHI::Handle< uint32_t, class ChildPass >
 
- Static Protected Attributes inherited from AZ::RPI::Pass
static const size_t MessageLogLimit = 256
 

Detailed Description

A ComputePass is a leaf pass (pass with no children) that is used for GPU compute.

Member Function Documentation

◆ CompileResources()

void AZ::RPI::ComputePass::CompileResources ( const RHI::FrameGraphCompileContext context)
overrideprotectedvirtual

This function is called after compilation of the frame graph, but before execution. The provided FrameGraphAttachmentContext allows you to access RHI views associated with attachment ids. This is the method to build ShaderResourceGroups from transient attachment views.

Reimplemented from AZ::RHI::ScopeProducer.


The documentation for this class was generated from the following file: