XII Release 0.1.0
Loading...
Searching...
No Matches
xiiRenderPipelinePass Class Referenceabstract
Inheritance diagram for xiiRenderPipelinePass:
[legend]

Public Member Functions

 xiiRenderPipelinePass (xiiStringView sName, xiiBitflags< xiiRenderPipelinePassFlags > flags, xiiEnum< xiiRenderPipelinePassConcurrencyHint > concurrencyHint)
 
void SetName (xiiStringView sName)
 Sets the name of the pass.
 
void SetPassFlags (xiiBitflags< xiiRenderPipelinePassFlags > flags)
 
void SetPassConcurrencyHint (xiiEnum< xiiRenderPipelinePassConcurrencyHint > concurrencyHint)
 
virtual xiiResult Serialize (xiiStreamWriter &inout_stream) const
 
virtual xiiResult Deserialize (xiiStreamReader &inout_stream)
 
virtual void InitializeRenderPipelinePass (const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs)
 After GetRenderTargetDescriptions was called successfully for each pass, this function is called with the inputs and outputs for review. Disconnected pins have a nullptr value in the passed in arrays. This is the time to create additional resources that are not covered by the pins automatically, e.g. a picking texture or eye adaptation buffer.
 
virtual bool GetRenderTargetDescriptions (const xiiView &view, const xiiArrayPtr< xiiGALTextureCreationDescription *const > pInputs, xiiArrayPtr< xiiGALTextureCreationDescription > pOutputs)=0
 For a given input pin configuration, provide the output configuration of this node. Outputs is already resized to the number of output pins.
 
virtual xiiSharedPtr< xiiGALTextureViewQueryTextureProvider (const xiiRenderPipelineNodePin *pPin, const xiiGALTextureCreationDescription &description)
 
virtual void Execute (const xiiRenderViewContext &renderViewContext, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs)=0
 Render into outputs. Both inputs and outputs are passed in with actual texture handles. Disconnected pins have a nullptr value in the passed in arrays. You can now create views and render target setups on the fly and fill the output targets with data.
 
virtual void ExecuteInactive (const xiiRenderViewContext &renderViewContext, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs, const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs)
 
virtual void ReadBackProperties (xiiView *pView)
 Allows for the pass to write data back using xiiView::SetRenderPassReadBackProperty. E.g. picking results etc.
 
void RenderDataWithCategory (const xiiRenderViewContext &renderViewContext, xiiSharedPtr< xiiGALCommandList > pCommandList, xiiRenderData::Category category, xiiRenderDataBatch::Filter filter=xiiRenderDataBatch::Filter())
 
XII_ALWAYS_INLINE xiiStringView GetName () const
 Returns the name of this render-pipeline pass.
 
XII_ALWAYS_INLINE xiiBitflags< xiiRenderPipelinePassFlagsGetPassFlags () const
 Returns the bitmask of flags describing this render-pipeline pass.
 
XII_ALWAYS_INLINE xiiEnum< xiiRenderPipelinePassConcurrencyHintGetPassConcurrencyHint () 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 xiiRenderPipelineGetPipeline ()
 Retrieves the owning render pipeline for this pass.
 
XII_ALWAYS_INLINE const xiiRenderPipelineGetPipeline () const
 Retrieves the owning render pipeline for this pass (const overload).
 
- Public Member Functions inherited from xiiRenderPipelineNode
virtual ~xiiRenderPipelineNode ()=default
 Virtual destructor.
 
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 xiiRenderPipelineNodePinGetPinByName (xiiStringView sName) const
 Finds a pin by its string name.
 
const xiiRenderPipelineNodePinGetPinByName (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 xiiRTTIGetDynamicRTTI () 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 xiiRTTIGetStaticRTTI ()
 

Member Function Documentation

◆ Execute()

virtual void xiiRenderPipelinePass::Execute ( const xiiRenderViewContext & renderViewContext,
const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs,
const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs )
pure virtual

Render into outputs. Both inputs and outputs are passed in with actual texture handles. Disconnected pins have a nullptr value in the passed in arrays. You can now create views and render target setups on the fly and fill the output targets with data.

Implemented in xiiAntialiasingPass, xiiAOPass, xiiBlendPass, xiiBloomPass, xiiBlurPass, xiiCopyTexturePass, xiiDepthOnlyPass, xiiForwardRenderPass, xiiHistorySourcePass, xiiHistoryTargetPass, xiiMsaaResolvePass, xiiMsaaUpscalePass, xiiPickingRenderPass, xiiReflectionFilterPass, xiiSelectionHighlightPass, xiiSeparatedBilateralBlurPass, xiiSimpleRenderPass, xiiSourcePass, xiiStereoTestPass, xiiTargetPass, xiiTonemapPass, and xiiTransparentForwardRenderPass.

◆ GetName()

XII_ALWAYS_INLINE xiiStringView xiiRenderPipelinePass::GetName ( ) const
inline

Returns the name of this render-pipeline pass.

Returns
A string view of the pass's name.

◆ GetPipeline() [1/2]

XII_ALWAYS_INLINE xiiRenderPipeline * xiiRenderPipelinePass::GetPipeline ( )
inline

Retrieves the owning render pipeline for this pass.

Use this to query pipeline-level resources or state from within a pass implementation.

Returns
A pointer to the parent xiiRenderPipeline instance.

◆ GetPipeline() [2/2]

XII_ALWAYS_INLINE const xiiRenderPipeline * xiiRenderPipelinePass::GetPipeline ( ) const
inline

Retrieves the owning render pipeline for this pass (const overload).

Allows read-only access to pipeline state from const contexts.

Returns
A const pointer to the parent xiiRenderPipeline instance.

◆ GetRenderTargetDescriptions()

virtual bool xiiRenderPipelinePass::GetRenderTargetDescriptions ( const xiiView & view,
const xiiArrayPtr< xiiGALTextureCreationDescription *const > pInputs,
xiiArrayPtr< xiiGALTextureCreationDescription > pOutputs )
pure virtual

◆ InitializeRenderPipelinePass()

void xiiRenderPipelinePass::InitializeRenderPipelinePass ( const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pInputs,
const xiiArrayPtr< xiiRenderPipelinePassConnection *const > pOutputs )
virtual

After GetRenderTargetDescriptions was called successfully for each pass, this function is called with the inputs and outputs for review. Disconnected pins have a nullptr value in the passed in arrays. This is the time to create additional resources that are not covered by the pins automatically, e.g. a picking texture or eye adaptation buffer.

Reimplemented in xiiAOPass, xiiBloomPass, xiiDepthOnlyPass, xiiPickingRenderPass, and xiiSourcePass.

◆ IsStereoAware()

XII_ALWAYS_INLINE bool xiiRenderPipelinePass::IsStereoAware ( ) const
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.

Returns
true if the pass is stereo-aware, false otherwise.

◆ QueryTextureProvider()

virtual xiiSharedPtr< xiiGALTextureView > xiiRenderPipelinePass::QueryTextureProvider ( const xiiRenderPipelineNodePin * pPin,
const xiiGALTextureCreationDescription & description )
inlinevirtual

Returns the current texture this node provides at the given *ProviderPin. This function is called every frame if this node holds a xiiRenderPipelineNodeInputProviderPin or xiiRenderPipelineNodeOutputProviderPin pin. The node can return a valid texture handle, or an invalid handle, in which case the missing texture will be created from the texture pool.

Parameters
pPin- The member pin for which the texture is requested.
desc- The format of the texture that should be provided.
Returns
The texture view to use for this pin's connections. Or invalid, in which case it reverts to a regular input / output pin.

Reimplemented in xiiHistorySourcePass, xiiHistoryTargetPass, and xiiTargetPass.

◆ ReadBackProperties()

void xiiRenderPipelinePass::ReadBackProperties ( xiiView * pView)
virtual

Allows for the pass to write data back using xiiView::SetRenderPassReadBackProperty. E.g. picking results etc.

Reimplemented in xiiPickingRenderPass.


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