Use the Composition Target Render Pass to set a composition target and render all descendant render passes to the composition target that the Composition Target Render Pass created. More...
#include <kanzi/core.ui/graphics3d/composition_target_render_pass.hpp>
Static Public Member Functions | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
static CompositionTargetRenderPassSharedPtr | create (Domain *domain, string_view name) |
Create a Composition Target Render Pass. More... | |
![]() | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
static RenderPassSharedPtr | create (Domain *domain, string_view name) |
Create a render pass. More... | |
static ResourceManager::LoadTaskSharedPtr | createLoadTask (string_view name, KzbFile *kzbFile, unique_ptr< ReadOnlyMemoryFile > file) |
Factory function for RenderPass Load Task, which loads a RenderPass from a kzb file. More... | |
![]() | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. More... | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. More... | |
![]() | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. More... | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. More... | |
Properties | |
static PropertyType< ResourceSharedPtr > | CompositionTargetProperty |
Use the Composition Target property to set the target to which you want to render the result of this render pass. More... | |
static PropertyType< int > | ResolutionMultiplierProperty |
Use the Resolution Multiplier property to set the resolution multiplier for the automatically created composition target textures, which together with the ResolutionDivisorProperty property, sets the size of the composition target in relation to the size of the current Viewport 2D node. More... | |
static PropertyType< int > | ResolutionDivisorProperty |
Use the Resolution Divisor property to set the resolution divisor for the automatically created composition target textures, which together with the ResolutionMultiplierProperty property, sets the size of the composition target in relation to the size of the current Viewport 2D node. More... | |
static PropertyType< GraphicsFormat > | PixelFormatProperty |
Use the Pixel Format property to set on the GPU the target pixel format of the automatically created composition target textures. More... | |
static PropertyType< GraphicsFormat > | DepthTextureFormatProperty |
DepthTextureFormat property. More... | |
static PropertyType< Sampler::AddressingMode > | AddressingModeProperty |
Use the Addressing Mode property to set how Kanzi handles the texture coordinates the automatically generated composition target textures outside of the [0, 0] - [1, 1] rectangle: More... | |
static PropertyType< Sampler::Filter > | FilterModeProperty |
Use the Filter Mode property to set how texels are sampled when using the composition target as a texture. More... | |
static PropertyType< Sampler::MipmapMode > | MipmapModeProperty |
MipmapMode property. More... | |
static PropertyType< int > | MultisampleLevelProperty |
Use the Multisample Level property to set the number of samples you want to use for each output pixel of the automatically generated composition target textures. More... | |
static PropertyType< bool > | ResolveImmediatelyProperty |
Use the Resolve Immediately property to instruct the composition target render pass to resolve multisampling and generate mipmaps immediately after rendering as opposed to delaying resolve operations until the result composition target is referenced. More... | |
static PropertyType< GraphicsCompareFunction > | DepthCompareFunctionProperty |
Use the Depth Compare Function property to determine which function is used when comparing depth values with comparison samplers. More... | |
TextureSharedPtr | getCompositionTarget () const |
Gets the value of the CompositionTargetProperty property. More... | |
void | setCompositionTarget (TextureSharedPtr value) |
Sets the value of the CompositionTargetProperty property. More... | |
int | getResolutionMultiplier () const |
Gets the value of the ResolutionMultiplierProperty property. More... | |
void | setResolutionMultiplier (int value) |
Sets the value of the ResolutionMultiplierProperty property. More... | |
int | getResolutionDivisor () const |
Gets the value of the ResolutionDivisorProperty property. More... | |
void | setResolutionDivisor (int value) |
Sets the value of the ResolutionDivisorProperty property. More... | |
GraphicsFormat | getPixelFormat () const |
Gets the value of the PixelFormatProperty property. More... | |
void | setPixelFormat (GraphicsFormat value) |
Sets value of the PixelFormatProperty property. More... | |
GraphicsFormat | getDepthTextureFormat () const |
Gets value of DepthTextureFormatProperty. More... | |
void | setDepthTextureFormat (GraphicsFormat value) |
Sets value of DepthTextureFormatProperty. More... | |
Sampler::Filter | getFilterMode () const |
Gets value of FilterModeProperty. More... | |
void | setFilterMode (Sampler::Filter value) |
Sets value of FilterModeProperty. More... | |
Sampler::MipmapMode | getMipmapMode () const |
Gets value of MipmapModeProperty. More... | |
void | setMipmapMode (Sampler::MipmapMode value) |
Sets value of MipmapModeProperty. More... | |
int | getMultisampleLevel () const |
Gets value of MultisampleLevelProperty. More... | |
void | setMultisampleLevel (int value) |
Sets value of MultisampleLevelProperty. More... | |
bool | isResolveImmediately () const |
Gets value of ResolveImmediatelyProperty. More... | |
void | setResolveImmediately (bool value) |
Sets value of ResolveImmediatelyProperty. More... | |
GraphicsCompareFunction | getDepthCompareFunction () const |
Gets the value of DepthCompareFunctionProperty. More... | |
void | setDepthCompareFunction (GraphicsCompareFunction value) |
Sets the value of the DepthCompareFunctionProperty. More... | |
Additional Inherited Members | |
![]() | |
typedef vector< RenderPassSharedPtr > | ChildContainer |
![]() | |
typedef intrusive_ptr< AbstractPropertyTypeDescriptor::PropertyStorage > | PropertyStoragePtr |
typedef vector< PropertyStoragePtr > | PropertyStorageContainer |
typedef PropertyStorageContainer::iterator | PropertyStorageIterator |
typedef PropertyStorageContainer::const_iterator | PropertyStorageConstIterator |
typedef PropertyStorageContainer::reverse_iterator | PropertyStorageReverseIterator |
![]() | |
RenderPassSharedPtr | lookupRenderPass (string_view path) |
Resolve a render pass by path. More... | |
void | render (Renderer3D &renderer, TransformedScene3D &transformedScene, CompositionStack &compositionStack) |
Recursively render RenderPass and all of its child render passes. More... | |
void | renderMesh (Node3D &node, Morph *morph, Mesh &mesh, unsigned int clusterIndex, MaterialRenderer &materialRenderer) |
Use this function to render a mesh owned by a node using the material renderer that the node owns. More... | |
void | addChild (RenderPassSharedPtr childRenderPass) |
Adds a render pass as the last child of the render pass you set. More... | |
void | insertChild (size_t index, RenderPassSharedPtr childRenderPass) |
Adds a render pass as a child render pass at given index of the render pass you set. More... | |
void | removeChild (RenderPass &childRenderPass) |
Removes a child render pass. More... | |
void | removeAllChildren () |
Removes all child render passes from a render pass. More... | |
RenderPassSharedPtr | getParent () const |
Gets the parent of a render pass. More... | |
void | setParent (RenderPassSharedPtr parent) |
Sets the parent of a render pass. More... | |
RenderPassSharedPtr | getChild (size_t index) |
Gets a child render pass at the given index. More... | |
size_t | getChildCount () const |
Returns the number of child render passes. More... | |
ChildContainer::const_iterator | beginChildren () const |
Returns an iterator to the beginning of the container of child render passes. More... | |
ChildContainer::const_iterator | endChildren () const |
Returns an iterator to the end of the container of child render passes. More... | |
TextureSharedPtr | getCompositionResult (Framebuffer::AttachmentPoint attachmentPoint) |
Gets color composition target that was used for rendering. More... | |
size_t | getTextureBindingCount () const |
Gets the number of texture bindings. More... | |
ResourceBinding | getTextureBinding (size_t index) const |
Gets a texture binding by index. More... | |
void | addTextureBinding (AbstractPropertyType propertyType, string_view path, bool fromKzb) |
Adds a texture binding. More... | |
void | addTextureBinding (AbstractPropertyType propertyType, string_view path) |
Adds a texture binding. More... | |
bool | removeTextureBinding (AbstractPropertyType propertyType) |
Removes the texture binding. More... | |
void | removeKzbTextureBindings () |
Removes the resource bindings loaded from kzb files. More... | |
void | restoreResourcesRecursive () |
Recursively calls restoreResources for a RenderPass and all its children. More... | |
virtual void | loadFromKZB (const ResourceLoaderThreadContext *threadContext, KzcInputStream *inputStream, const KzuBinaryFileInfo *file) KZ_OVERRIDE |
Resource::loadFromKZB() implementation. More... | |
![]() | |
KzcMemoryManager * | getMemoryManager () const |
Resource (Domain *domain, string_view name) | |
virtual | ~Resource () |
virtual void | unloadOverride () |
Unload function for resource. Releases all CPU memory taken by the resource except the resource loader. More... | |
virtual unsigned int | getCPUMemoryUsage () const |
Function for getting the memory usage of a resource. More... | |
void | setKZB (const KzuBinaryDirectory *binaryDirectory, string_view path) |
Set the binary directory and path of the resource. More... | |
const string & | getName () const |
Gets the resource name. More... | |
const string & | getUrl () const |
Gets the resource URL. More... | |
void | setUrl (string_view url) |
Sets the resource URL. More... | |
void | setNotLoaded () |
bool | isFromKZB () const |
void | reload () |
void | reloadFromKzb (KzcInputStream *inputStream, const KzuBinaryFileInfo *file) |
void | reloadFromKzb (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser) |
void | reloadFromFile (string_view filePath) |
void | load () |
void | unload () |
bool | isLoaded () const |
void | kzuResourceLoad_private (const ResourceLoaderThreadContext *threadContext) |
Private function for kzuResourceLoad() with specified thread context. More... | |
void | kzuResourceFinishLoading_private (const ResourceLoaderThreadContext *threadContext) |
Private function for finishing the loading of the resource. More... | |
bool | isKeepAlive () const |
Tells if the resource has keep alive flag set. More... | |
void | setKeepAlive (bool keepAlive) |
Sets the keep alive flag. More... | |
![]() | |
Object (Domain *domain) | |
virtual | ~Object () |
Domain * | getDomain () const |
Returns the domain the object belongs to. More... | |
KzuTaskScheduler * | getTaskScheduler () const |
Returns the task scheduler of the object. More... | |
KzuMessageDispatcher * | getMessageDispatcher () const |
Returns the message dispatcher of the object. More... | |
ResourceManager * | getResourceManager () const |
Returns the resource manager of the object. More... | |
virtual const Metaclass * | getDynamicMetaclass () const KZ_OVERRIDE |
Returns the metaclass of the dynamic type of the object. More... | |
AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
Applies a style to an object. More... | |
void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
void | applyObjectStyles () |
Apply all styles for an object node. More... | |
void | unapplyObjectStyles () |
Unapplies and removes all applied styles. More... | |
![]() | |
virtual | ~MetaObject () |
bool | isTypeOf (const Metaclass *objectType) const |
Determines if the type of this object is the given type or derived from it. More... | |
![]() | |
PropertyObject () | |
virtual | ~PropertyObject () |
template<typename DataType > | |
void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
Sets the local value of a property. More... | |
void | removeKzbProperties () |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property. More... | |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. More... | |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property disregarding modifiers. More... | |
template<typename DataType > | |
void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
bool | hasValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value. More... | |
bool | hasBaseValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value, disregarding modifiers. More... | |
bool | hasLocalValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a local value set for the property. More... | |
bool | hasNonClassValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a value of any precedence higher than class default value set for the property. More... | |
void | removeLocalValue (AbstractPropertyType propertyType) |
Removes the local value associated with the property. More... | |
void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
Copies local value of single property from another object. More... | |
void | copyLocalValues (const PropertyObject &other) |
Copies all local values from another object. More... | |
virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
Virtual function to handle property change notifications. More... | |
template<typename DataType > | |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *owner) |
template<typename DataType > | |
void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *owner) |
template<typename DataType > | |
void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
void | validatePropertyModifiers (AbstractPropertyType propertyType) |
template<typename DataType > | |
void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) |
Gets number of current notification handlers for given property type. More... | |
![]() | |
typedef vector< AppliedStyleEntrySharedPtr > | AppliedStyleContainer |
Applied style container. More... | |
![]() | |
AppliedStyleContainer | m_appliedStyles |
Listing of applied styles applied to this object. More... | |
Use the Composition Target Render Pass to set a composition target and render all descendant render passes to the composition target that the Composition Target Render Pass created.
After Kanzi renders the descendant render passes of a Composition Target Render Pass, the Composition Target Render Pass restores the earlier composition settings.
Composition Target Render Pass by default creates a composition target whose size is the same as the size of the current Viewport 2D node using the RGBA pixel format and depth buffer. To configure the composition target, you can:
You can set a Composition Target Render Pass to use a composition target texture that you create somwhere else with the CompositionTargetProperty. The render pass for which you set the composition target texture with this property does not create its own render target.
For example, to use a custom render target texture, bind the CompositionTargetProperty property of a Composition Target Render Pass to properties of other render passes. See #BlitRenderPass.
You can access the result of a Composition Target Render Pass:
The texture that the getCompositionResult() method returns is not necessarily the texture that a Composition Target Render Pass rendered, or the texture set to the CompositionTargetProperty. For example, if you use multisampling, the getCompositionResult() method returns the target, where it resolves multiple samples into a 2D texture.
If a Composition Target Render Pass was not executed, the result of the getCompositionResult() method is undefined.
To use a Composition Target Render Pass with a custom render target with automatic size:
|
explicitprotected |
Constructor.
domain | The domain to use. |
name | The name of the Composition Target Render Pass. |
|
inline |
Gets the value of the CompositionTargetProperty property.
|
inline |
Sets the value of the CompositionTargetProperty property.
value | The new value of the Composition Target property. |
|
inline |
Gets the value of the ResolutionMultiplierProperty property.
|
inline |
Sets the value of the ResolutionMultiplierProperty property.
value | The new value of the Resolution Multiplier property. |
|
inline |
Gets the value of the ResolutionDivisorProperty property.
|
inline |
Sets the value of the ResolutionDivisorProperty property.
value | The new value of the Resolution Divisor property. |
|
inline |
Gets the value of the PixelFormatProperty property.
|
inline |
Sets value of the PixelFormatProperty property.
value | The new value of the Pixel Format property. |
|
inline |
Gets value of DepthTextureFormatProperty.
|
inline |
Sets value of DepthTextureFormatProperty.
value | New property value. |
|
inline |
Gets value of FilterModeProperty.
|
inline |
Sets value of FilterModeProperty.
value | New property value. |
|
inline |
Gets value of MipmapModeProperty.
|
inline |
Sets value of MipmapModeProperty.
value | New property value. |
|
inline |
Gets value of MultisampleLevelProperty.
|
inline |
Sets value of MultisampleLevelProperty.
value | New property value. |
|
inline |
Gets value of ResolveImmediatelyProperty.
|
inline |
Sets value of ResolveImmediatelyProperty.
value | New property value. |
|
inline |
Gets the value of DepthCompareFunctionProperty.
|
inline |
Sets the value of the DepthCompareFunctionProperty.
value | The value of the Depth Compare Function property. |
|
static |
|
static |
Create a Composition Target Render Pass.
domain | The domain to use. |
name | The name of the Composition Target Render Pass. |
|
protectedvirtual |
RenderPass::renderOverride() implementation.
Reimplemented from kanzi::RenderPass.
|
protectedvirtual |
RenderPass::getCompositionTarget() implementation.
Reimplemented from kanzi::RenderPass.
|
protectedvirtual |
RenderPass::restoreResources() implementation.
Reimplemented from kanzi::RenderPass.
|
protectedvirtual |
RenderPass::requiresDepthBuffer() implementation.
Reimplemented from kanzi::RenderPass.
|
protected |
Update temporary multisample draw target allocated.
width | Required width. |
height | Required height. |
requiresDepth | True if depth buffer is required, otherwise false. |
requiresStencil | True if stencil buffer is required, otherwise false. |
samples | The number of multisampling samples. |
|
protected |
Update persistent result target allocated.
width | Required width. |
height | Required height. |
requiresDepth | True if depth buffer is required, otherwise false. |
requiresStencil | True if stencil buffer is required, otherwise false. |
samples | The number of multisampling samples. Mostly 0, unless using multisample extensions that do not need a separate resolve target. |
|
static |
Use the Composition Target property to set the target to which you want to render the result of this render pass.
The default value is ResourceSharedPtr().
|
static |
Use the Resolution Multiplier property to set the resolution multiplier for the automatically created composition target textures, which together with the ResolutionDivisorProperty property, sets the size of the composition target in relation to the size of the current Viewport 2D node.
The default value is 1.
|
static |
Use the Resolution Divisor property to set the resolution divisor for the automatically created composition target textures, which together with the ResolutionMultiplierProperty property, sets the size of the composition target in relation to the size of the current Viewport 2D node.
The default value is 1.
|
static |
Use the Pixel Format property to set on the GPU the target pixel format of the automatically created composition target textures.
The default value is RGBA.
|
static |
DepthTextureFormat property.
If set, defines the format for the depth texture. If not set, depth texture will not be used and depth renderbuffer will be used if necessary.
|
static |
Use the Addressing Mode property to set how Kanzi handles the texture coordinates the automatically generated composition target textures outside of the [0, 0] - [1, 1] rectangle:
|
static |
Use the Filter Mode property to set how texels are sampled when using the composition target as a texture.
|
static |
MipmapMode property.
The default value is #MipmapModeBase.
|
static |
Use the Multisample Level property to set the number of samples you want to use for each output pixel of the automatically generated composition target textures.
To disable multisampling, remove the property or set the property value to 1. The default value is 1.
|
static |
Use the Resolve Immediately property to instruct the composition target render pass to resolve multisampling and generate mipmaps immediately after rendering as opposed to delaying resolve operations until the result composition target is referenced.
The default value is false.
|
static |
Use the Depth Compare Function property to determine which function is used when comparing depth values with comparison samplers.
The default value is GraphicsCompareFunctionDisabled.