Open 3D Engine Atom Gem API Reference
23.05.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
#include <ParentPass.h>
Inherits AZ::RPI::Pass.
Inherited by AZ::Render::BloomBlurPass, AZ::Render::BloomCompositePass, AZ::Render::BloomParentPass, AZ::Render::CascadedShadowmapsPass, AZ::Render::DepthOfFieldParentPass, AZ::Render::DepthOfFieldReadBackFocusDepthPass, AZ::Render::DisplayMapperPass, AZ::Render::EsmShadowmapsPass, AZ::Render::LookModificationPass, AZ::Render::NewDepthOfFieldParentPass, AZ::Render::ProjectedShadowmapsPass, AZ::Render::ReflectionScreenSpaceBlurPass, AZ::Render::ReflectionScreenSpacePass, AZ::Render::SkyAtmosphereParentPass, AZ::Render::SkyAtmospherePass, AZ::Render::SsaoParentPass, AZ::RPI::DownsampleMipChainPass, AZ::RPI::EnvironmentCubeMapPass, AZ::RPI::RenderToTexturePass, and AZ::RPI::SwapChainPass.
Public Types | |
using | ChildPassIndex = RHI::Handle< uint32_t, class ChildPass > |
Public Types inherited from AZ::RPI::Pass | |
using | ChildPassIndex = RHI::Handle< uint32_t, class ChildPass > |
Public Member Functions | |
AZ_RTTI (ParentPass,"{0801AD74-85A8-4895-A5E5-C500AEE535A6}", Pass) | |
AZ_CLASS_ALLOCATOR (ParentPass, SystemAllocator) | |
virtual Ptr< ParentPass > | Recreate () const |
void | GetPipelineViewTags (PipelineViewTags &outTags) const override |
Recursively collects all different view tags from this pass's children. | |
void | GetViewDrawListInfo (RHI::DrawListMask &outDrawListMask, PassesByDrawList &outPassesByDrawList, const PipelineViewTag &viewTag) const override |
Recursively searches children for given viewTag, and collects their DrawListTags in outDrawListMask. | |
void | SetRenderPipeline (RenderPipeline *pipeline) override |
Set render pipeline this pass belongs to recursively. | |
Ptr< PassAttachment > | GetOwnedAttachment (const Name &attachmentName) const |
Return owning attachment. | |
void | AddChild (const Ptr< Pass > &child, bool skipStateCheckWhenRunningTests=false) |
Adds pass to list of children. NOTE: skipStateCheckWhenRunningTests is only used to support manual adding of passing in unit tests, do not use this variable otherwise. | |
bool | InsertChild (const Ptr< Pass > &child, ChildPassIndex position) |
bool | InsertChild (const Ptr< Pass > &child, uint32_t index) |
void | OnChildAdded (const Ptr< Pass > &child) |
Called when a pass is added as a child pass to this parent. | |
ChildPassIndex | FindChildPassIndex (const Name &passName) const |
Searches for a child pass with the given name. Returns the child's index if found, null index otherwise. | |
Ptr< Pass > | FindChildPass (const Name &passName) const |
Find a child pass with a matching name and returns it. Return nullptr if none found. | |
template<typename PassType > | |
Ptr< PassType > | FindChildPass () const |
AZStd::span< const Ptr< Pass > > | GetChildren () const |
Gets the list of children. Useful for validating hierarchies. | |
const Pass * | FindPass (RHI::DrawListTag drawListTag) const |
Searches the tree for the first pass that uses the given DrawListTag. | |
void | SetTimestampQueryEnabled (bool enable) override |
Recursively set all the Timestamp queries enabled for all its children. | |
void | SetPipelineStatisticsQueryEnabled (bool enable) override |
Recursively set all the PipelineStatistics queries enabled for all its children. | |
void | Validate (PassValidationResults &validationResults) override |
void | DebugPrint () const override |
Prints the pass and all of it's children. | |
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 PassTemplate * | GetPassTemplate () const |
void | SetEnabled (bool enabled) |
virtual bool | IsEnabled () const |
bool | HasDrawListTag () const |
bool | HasPipelineViewTag () const |
PassAttachmentBinding * | FindAttachmentBinding (const Name &slotName) |
PassAttachmentBindingListView | GetAttachmentBindings () const |
Return the set of attachment bindings. | |
ParentPass * | AsParent () |
Casts the pass to a parent pass if valid, else returns nullptr. | |
const ParentPass * | AsParent () const |
bool | IsRootPass () const |
Returns whether the pass is the root pass. | |
PassTree * | GetPassTree () 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. | |
PassAttachmentBinding & | GetInputBinding (uint32_t index) |
PassAttachmentBinding & | GetInputOutputBinding (uint32_t index) |
PassAttachmentBinding & | GetOutputBinding (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 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. | |
RenderPipeline * | GetRenderPipeline () const |
Scene * | GetScene () const |
TimestampResult | GetLatestTimestampResult () const |
Return the latest Timestamp result of this pass. | |
PipelineStatisticsResult | GetLatestPipelineStatisticsResult () const |
Return the latest PipelineStatistic result of this pass. | |
bool | ReadbackAttachment (AZStd::shared_ptr< AttachmentReadback > readback, uint32_t readbackIndex, const Name &slotName, PassAttachmentReadbackOption option=PassAttachmentReadbackOption::Output) |
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. | |
ParentPass * | GetParent () const |
Returns pointer to the parent pass. | |
PassState | GetPassState () const |
void | UpdateConnectedBindings () |
void | UpdateConnectedInputBindings () |
void | UpdateConnectedOutputBindings () |
Static Public Member Functions | |
static Ptr< ParentPass > | Create (const PassDescriptor &descriptor) |
Creates a new pass without a PassTemplate. | |
Protected Member Functions | |
ParentPass (const PassDescriptor &descriptor) | |
void | CreateChildPasses () |
void | RemoveChild (Ptr< Pass > pass) |
void | RemoveChildren (bool calledFromDestructor=false) |
Protected Member Functions inherited from AZ::RPI::Pass | |
Pass (const PassDescriptor &descriptor) | |
PassDescriptor | GetPassDescriptor () const |
void | ImportAttachments (RHI::FrameGraphAttachmentInterface attachmentDatabase) |
Ptr< Pass > | FindAdjacentPass (const Name &passName) |
const PassAttachmentBinding * | FindAttachmentBinding (const Name &slotName) const |
Ptr< PassAttachment > | FindOwnedAttachment (const Name &attachmentName) const |
Ptr< PassAttachment > | FindAttachment (const Name &slotName) const |
const PassAttachmentBinding * | FindAdjacentBinding (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 Attributes | |
AZStd::vector< Ptr< Pass > > | m_children |
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 |
RenderPipeline * | m_pipeline = nullptr |
AZStd::shared_ptr< const PassTemplate > | m_template = nullptr |
PassRequest | m_request |
ParentPass * | m_parent = nullptr |
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_hasPipelineViewTag: 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 < AttachmentReadback > | m_attachmentReadback |
PassAttachmentReadbackOption | m_readbackOption |
AZStd::weak_ptr < ImageAttachmentCopy > | m_attachmentCopy |
AZStd::shared_ptr< PassData > | m_passData = nullptr |
Optional data used during pass initialization. | |
Friends | |
class | PassFactory |
class | PassLibrary |
class | PassSystem |
class | RenderPipeline |
class | Pass |
Additional Inherited Members | |
Static Protected Attributes inherited from AZ::RPI::Pass | |
static const size_t | MessageLogLimit = 256 |
A parent pass doesn't do any rendering itself, but instead contains child passes that it delegates functionality to. A child can be a RenderPass or it can be a ParentPass itself. This creates a pass tree hierarchy that defines the the order in which passes and their logic are executed in.
bool AZ::RPI::ParentPass::InsertChild | ( | const Ptr< Pass > & | child, |
ChildPassIndex | position | ||
) |
Inserts a pass at specified position If the position is invalid, the child pass won't be added, and the function returns false
|
virtual |
Creates a new parent pass reusing the same parameters used to create this pass This is used in scenarios like hot reloading where some of the templates in the pass library might have changed.
Reimplemented in AZ::RPI::SwapChainPass, and AZ::RPI::RenderToTexturePass.
|
overridevirtual |
Validates entire tree hierarchy (ensures passes have valid state and attachments). Functionality compiled out if AZ_RPI_ENABLE_PASS_VALIDATION is not defined.
Reimplemented from AZ::RPI::Pass.