![]() |
XII Release 0.1.0
|
Base class for render pipeline passes within a data-driven render graph system. More...
#include <RenderPipelinePass.h>
Public Member Functions | |
| xiiRenderPipelinePassBase (xiiStringView sName, xiiBitflags< xiiRenderPipelinePassCapabilityFlags > capabilityFlags) | |
| Constructor to define a named render pass with required capability flags. | |
| virtual | ~xiiRenderPipelinePassBase () |
| Virtual destructor. | |
| void | SetName (xiiStringView sName) |
| Assigns the user-visible name of the pass. | |
| void | SetPassFlags (xiiBitflags< xiiRenderPipelinePassFlags > flags) |
| Sets additional flags that describe how the pass behaves or should be scheduled. | |
| void | SetPassConcurrencyHint (xiiEnum< xiiRenderPipelinePassConcurrencyHint > concurrencyHint) |
| Provides a hint to the graph scheduler regarding parallel execution potential. | |
| virtual xiiResult | Serialize (xiiStreamWriter &inout_stream) const |
| Serializes the internal pass configuration (not resource or runtime state). | |
| virtual xiiResult | Deserialize (xiiStreamReader &inout_stream) |
| Restores the internal pass configuration from serialized data. | |
| virtual xiiResult | GetResourceDescriptions (const xiiView &view, const xiiArrayPtr< xiiRenderPipelinePassResource *const > pInputs, xiiArrayPtr< xiiRenderPipelinePassResource > pOutputs)=0 |
| Must be implemented by each pass to describe the GPU resources it requires on its output pins. | |
| virtual xiiResult | InitializeRenderPipelinePass (const xiiView &view, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs) |
| Called once before the first execution to allow the pass to initialize itself based on the graph and view context. | |
| virtual xiiSharedPtr< xiiGALDeviceObject > | QueryResourceProvider (const xiiRenderPipelineNodePin *pPin, const xiiRenderPipelineResourceRequest &request) |
| Allows a pass to override resource creation for one of its outputs, typically to reuse or share GPU resources. | |
| virtual void | Execute (const xiiRenderViewContext &renderViewContext, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs)=0 |
| Must be implemented by derived classes to perform the pass's actual rendering or processing logic. | |
| virtual void | ExecuteInactive (const xiiRenderViewContext &renderViewContext, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs) |
| Called instead of Execute() if the pass is inactive (e.g., temporarily disabled or culled). | |
| virtual void | ReadBackProperties (xiiView *pView) |
| Allows the pass to update scene or view properties after rendering (e.g., exposure, feedback). | |
| XII_ALWAYS_INLINE xiiStringView | GetName () const |
| Returns the name of this render-pipeline pass. | |
| XII_ALWAYS_INLINE xiiBitflags< xiiRenderPipelinePassCapabilityFlags > | GetCapabilityFlags () const |
| Retrieves the render pipeline pass capability flags. | |
| XII_ALWAYS_INLINE xiiBitflags< xiiRenderPipelinePassFlags > | GetPassFlags () const |
| Returns the bitmask of flags describing this render-pipeline pass. | |
| XII_ALWAYS_INLINE xiiEnum< xiiRenderPipelinePassConcurrencyHint > | GetPassConcurrencyHint () const |
| Retrieves the concurrency hint for scheduling this render-pipeline pass. | |
| XII_ALWAYS_INLINE bool | IsStereoAware () const |
| Determines whether this pass correctly handles stereo/XR rendering. | |
| XII_ALWAYS_INLINE xiiRenderPipeline * | GetPipeline () |
| Retrieves the owning render pipeline for this pass. | |
| XII_ALWAYS_INLINE const xiiRenderPipeline * | GetPipeline () const |
| Retrieves the owning render pipeline for this pass (const overload). | |
Public Member Functions inherited from xiiRenderPipelineNode | |
| void | InitializePins () |
| Populates the internal arrays of input and output pins. | |
| xiiHashedString | GetPinName (const xiiRenderPipelineNodePin *pPin) const |
| Returns the hashed name associated with a given pin. | |
| const xiiRenderPipelineNodePin * | GetPinByName (xiiStringView sName) const |
| Finds a pin by its string name. | |
| const xiiRenderPipelineNodePin * | GetPinByName (xiiHashedString sName) const |
| Finds a pin by its hashed name. | |
| XII_ALWAYS_INLINE const xiiArrayPtr< const xiiRenderPipelineNodePin *const > | GetInputPins () const |
| Retrieves all input pins of this node. | |
| XII_ALWAYS_INLINE const xiiArrayPtr< const xiiRenderPipelineNodePin *const > | GetOutputPins () const |
| Retrieves all output pins of this node. | |
Public Member Functions inherited from xiiReflectedClass | |
| virtual const xiiRTTI * | GetDynamicRTTI () const |
| bool | IsInstanceOf (const xiiRTTI *pType) const |
| Returns whether the type of this instance is of the given type or derived from it. | |
| template<typename T> | |
| XII_ALWAYS_INLINE bool | IsInstanceOf () const |
| Returns whether the type of this instance is of the given type or derived from it. | |
Friends | |
| class | xiiRenderPipeline |
Additional Inherited Members | |
Static Public Member Functions inherited from xiiNoBase | |
| static const xiiRTTI * | GetStaticRTTI () |
Base class for render pipeline passes within a data-driven render graph system.
Each render pass defines its inputs, outputs, capabilities, and runtime execution logic. This class handles naming, serialization, and interaction with the render pipeline compiler.
Passes are responsible for describing their resource requirements, initializing resources and logic based on resolved graph connections, and executing their logic during render view processing.
Derive from this class to implement custom rendering functionality.
| xiiRenderPipelinePassBase::xiiRenderPipelinePassBase | ( | xiiStringView | sName, |
| xiiBitflags< xiiRenderPipelinePassCapabilityFlags > | capabilityFlags ) |
Constructor to define a named render pass with required capability flags.
| sName | - The name identifier of the pass (used for debugging and editor integration). |
| capabilityFlags | - Declares what features this pass supports (e.g., stereo-aware, subpass fusion). |
|
virtual |
Restores the internal pass configuration from serialized data.
Reimplemented in xiiBlurPass, xiiCreateBufferPass, xiiCreateColourAttachmentPass, xiiCreateDepthAttachmentPass, xiiCreateSamplerPass, xiiDepthOnlyPass, xiiForwardRenderPass, xiiHistoryBufferTargetPass, xiiHistoryColourAttachmentTargetPass, xiiHistoryDepthAttachmentTargetPass, xiiMSAAUpscalePass, xiiOpaqueForwardRenderPass, xiiSelectionHighlightPass, and xiiSimpleRenderPass.
|
pure virtual |
Must be implemented by derived classes to perform the pass's actual rendering or processing logic.
Called once per frame (and per view, if applicable).
Inputs and outputs are guaranteed to be valid and resolved GPU handles.
Implemented in xiiAntialiasingPass, xiiBlurPass, xiiCopyBufferPass, xiiCopyColourAttachmentPass, xiiCopyDepthAttachmentPass, xiiCreateBufferPass, xiiCreateColourAttachmentPass, xiiCreateDepthAttachmentPass, xiiCreateSamplerPass, xiiDepthOnlyPass, xiiForwardRenderPass, xiiFrameConstantsPass, xiiHistoryBufferTargetPass, xiiHistoryColourAttachmentSourcePass, xiiHistoryColourAttachmentTargetPass, xiiHistoryDepthAttachmentSourcePass, xiiHistoryDepthAttachmentTargetPass, xiiMSAAResolvePass, xiiMSAAUpscalePass, xiiPickingRenderPass, xiiSelectionHighlightPass, xiiSimpleRenderPass, xiiTargetPass, and xiiTransparentForwardRenderPass.
|
virtual |
Called instead of Execute() if the pass is inactive (e.g., temporarily disabled or culled).
Can be used for non-draw side effects such as animation updates or property blending.
|
inline |
Returns the name of this render-pipeline pass.
|
inline |
Retrieves the owning render pipeline for this pass.
Use this to query pipeline-level resources or state from within a pass implementation.
|
inline |
Retrieves the owning render pipeline for this pass (const overload).
Allows read-only access to pipeline state from const contexts.
|
pure virtual |
Must be implemented by each pass to describe the GPU resources it requires on its output pins.
The graph compiler uses this to allocate or pool GPU resources like textures, samplers, and buffers. Derived passes should populate each entry in pOutputs with the corresponding resource description.
Implemented in xiiAntialiasingPass, xiiBlurPass, xiiCopyBufferPass, xiiCopyColourAttachmentPass, xiiCopyDepthAttachmentPass, xiiCreateBufferPass, xiiCreateColourAttachmentPass, xiiCreateDepthAttachmentPass, xiiCreateSamplerPass, xiiDepthOnlyPass, xiiForwardRenderPass, xiiFrameConstantsPass, xiiHistoryBufferSourcePass, xiiHistoryBufferTargetPass, xiiHistoryColourAttachmentSourcePass, xiiHistoryColourAttachmentTargetPass, xiiHistoryDepthAttachmentSourcePass, xiiHistoryDepthAttachmentTargetPass, xiiMSAAResolvePass, xiiMSAAUpscalePass, xiiOpaqueForwardRenderPass, xiiPickingRenderPass, xiiSelectionHighlightPass, xiiSimpleRenderPass, xiiTargetPass, and xiiTransparentForwardRenderPass.
|
virtual |
Called once before the first execution to allow the pass to initialize itself based on the graph and view context.
This is typically used to:
Reimplemented in xiiCreateColourAttachmentPass, xiiCreateDepthAttachmentPass, xiiFrameConstantsPass, and xiiPickingRenderPass.
|
inline |
Determines whether this pass correctly handles stereo/XR rendering.
When true, the pipeline will invoke this pass once per eye and bind separate per-eye resources as needed.
|
virtual |
Allows a pass to override resource creation for one of its outputs, typically to reuse or share GPU resources.
If a non-null shared pointer is returned, it will be used instead of the default resource construction logic. Returning nullptr delegates resource creation to the graph compiler or the default allocator.
Reimplemented in xiiHistoryBufferSourcePass, xiiHistoryBufferTargetPass, xiiHistoryColourAttachmentSourcePass, xiiHistoryColourAttachmentTargetPass, xiiHistoryDepthAttachmentSourcePass, xiiHistoryDepthAttachmentTargetPass, and xiiTargetPass.
|
virtual |
Allows the pass to update scene or view properties after rendering (e.g., exposure, feedback).
Reimplemented in xiiPickingRenderPass.
|
virtual |
Serializes the internal pass configuration (not resource or runtime state).
Reimplemented in xiiBlurPass, xiiCreateBufferPass, xiiCreateColourAttachmentPass, xiiCreateDepthAttachmentPass, xiiCreateSamplerPass, xiiDepthOnlyPass, xiiForwardRenderPass, xiiHistoryBufferTargetPass, xiiHistoryColourAttachmentTargetPass, xiiHistoryDepthAttachmentTargetPass, xiiMSAAUpscalePass, xiiOpaqueForwardRenderPass, xiiSelectionHighlightPass, and xiiSimpleRenderPass.