Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QSSGRenderExtension Class Referenceabstract

\inmodule QtQuick3D More...

#include <qssgrenderextensions.h>

Inheritance diagram for QSSGRenderExtension:
Collaboration diagram for QSSGRenderExtension:

Public Types

enum class  RenderMode { Standalone , Main }
 Specifies the render extension mode. More...
enum class  RenderStage { PreColor , PostColor }
 Specifies the order the extension will be called. More...
Public Types inherited from QSSGRenderGraphObject
enum  BaseType : quint32 {
  Node = 0x1000 , Light = 0x2000 , Camera = 0x4000 , Renderable = 0x8000 ,
  Resource = 0x10000 , Material = 0x20000 , Texture = 0x40000 , Extension = 0x80000 ,
  User = 0x80000000
}
enum class  Type : quint32 {
  Unknown = 0 , Node = BaseType::Node , Root , Layer ,
  Joint , Skeleton , ImportScene , ReflectionProbe ,
  DirectionalLight = BaseType::Light | BaseType::Node , PointLight , SpotLight , OrthographicCamera = BaseType::Camera | BaseType::Node ,
  PerspectiveCamera , CustomFrustumCamera , CustomCamera , Model = BaseType::Renderable | BaseType::Node ,
  Item2D , Particles , SceneEnvironment = BaseType::Resource , Effect ,
  Geometry , TextureData , MorphTarget , ModelInstance ,
  ModelBlendParticle , ResourceLoader , DefaultMaterial = BaseType::Material | BaseType::Resource , PrincipledMaterial ,
  CustomMaterial , SpecularGlossyMaterial , Skin , Image2D = BaseType::Texture | BaseType::Resource ,
  ImageCube , RenderExtension = BaseType::Extension , TextureProvider
}
enum class  Flags : quint32 { HasGraphicsResources = 0x1 }
using TypeT = std::underlying_type_t<Type>
using FlagT = std::underlying_type_t<Flags>

Public Member Functions

 QSSGRenderExtension ()
virtual ~QSSGRenderExtension ()
virtual bool prepareData (QSSGFrameData &data)=0
 Called after scene data is collected, but before any render data or rendering in the current frame has been done.
virtual void prepareRender (QSSGFrameData &data)=0
 Prepare data for rendering.
virtual void render (QSSGFrameData &data)=0
 Record the render pass.
virtual void resetForFrame ()=0
 Called each time a new frame starts.
virtual RenderMode mode () const =0
virtual RenderStage stage () const =0
Public Member Functions inherited from QSSGRenderGraphObject
bool hasGraphicsResources () const noexcept
virtual Q_QUICK3D_PROFILE_ID_ ~QSSGRenderGraphObject ()

Protected Member Functions

 QSSGRenderExtension (Type inType, FlagT inFlags)
 Constructor that allows users to specifying a user-type and flags for an extension.
Protected Member Functions inherited from QSSGRenderGraphObject
 QSSGRenderGraphObject (QSSGRenderGraphObject::Type inType)
 QSSGRenderGraphObject (QSSGRenderGraphObject::Type inType, FlagT inFlags)

Additional Inherited Members

Static Public Member Functions inherited from QSSGRenderGraphObject
static constexpr bool isNodeType (Type type) noexcept
static constexpr bool isLight (Type type) noexcept
static constexpr bool isCamera (Type type) noexcept
static constexpr bool isMaterial (Type type) noexcept
static constexpr bool isTexture (Type type) noexcept
static constexpr bool isRenderable (Type type) noexcept
static constexpr bool isResource (Type type) noexcept
static constexpr bool isExtension (Type type) noexcept
static constexpr bool isUserType (Type type) noexcept
Public Attributes inherited from QSSGRenderGraphObject
const Type type
FlagT flags { 0 }

Detailed Description

\inmodule QtQuick3D

Since
6.7

Base class for extension backend node implementations.

See also
QQuick3DRenderExtension

Definition at line 79 of file qssgrenderextensions.h.

Member Enumeration Documentation

◆ RenderMode

Specifies the render extension mode.

\value Standalone The rendering code is recorded in full during the render prepare phase. This will usually imply that there are some output crated for a preceding render extension(s). When this mode is used the \l prepareRender() and \l render() functions are both called during the frame's prepare phase.

\value Main The rendering code is recorded within the main render pass. In this mode the \l prepareRender() is called in the frame's prepare phase while \l render() is called the frame's render phase.

Enumerator
Standalone 
Main 

Definition at line 82 of file qssgrenderextensions.h.

◆ RenderStage

Specifies the order the extension will be called.

\value PreColor The rendering code is recorded and executed before the main (color) pass. \value PostColor The rendering code is recorded and executed after the main (color) pass.

Enumerator
PreColor 
PostColor 

Definition at line 88 of file qssgrenderextensions.h.

Constructor & Destructor Documentation

◆ QSSGRenderExtension() [1/2]

QSSGRenderExtension::QSSGRenderExtension ( )

Definition at line 180 of file qssgrenderextensions.cpp.

◆ ~QSSGRenderExtension()

QSSGRenderExtension::~QSSGRenderExtension ( )
virtual

Definition at line 186 of file qssgrenderextensions.cpp.

◆ QSSGRenderExtension() [2/2]

QSSGRenderExtension::QSSGRenderExtension ( Type inType,
FlagT inFlags )
protected

Constructor that allows users to specifying a user-type and flags for an extension.

Note
For user-defined extensions the type must be a combination of \l QSSGRenderGraphObject::BaseType::User and a value between 0 and 4095.
The \l QSSGRenderGraphObject::BaseType::Extension type is automatically added to the given inType.
The inFlags must include \l Flags::HasGraphicsResources if the extension allocates graphics resources.

Definition at line 170 of file qssgrenderextensions.cpp.

Member Function Documentation

◆ mode()

QSSGRenderExtension::RenderMode QSSGRenderExtension::mode ( ) const
pure virtual
Returns
The render mode used for this extension.

Implemented in QSSGRenderTextureProviderExtension.

Definition at line 274 of file qssgrenderextensions.cpp.

◆ prepareData()

bool QSSGRenderExtension::prepareData ( QSSGFrameData & data)
pure virtual

Called after scene data is collected, but before any render data or rendering in the current frame has been done.

Returns
Dirty state. Return true if the there are dirty data that needs to be rendered.
Note
Much of the data created/collected from the engine during the prepare and render phases is per-frame and should be released or assumed released at the start of the next frame
See also
QSSGFrameData

Implemented in QSSGRenderOutputProviderExtension, and QSSGRenderOutputProviderExtension.

Definition at line 228 of file qssgrenderextensions.cpp.

◆ prepareRender()

void QSSGRenderExtension::prepareRender ( QSSGFrameData & data)
pure virtual

Prepare data for rendering.

Build and collect data needed for rendering. Any render extension scheduled before this one has been processed. In addition; any render extension of mode \l RenderMode::Standalone will, if successful, have been completed in full.

Note
Much of the data created/collected from the engine during the prepare and render phases is per-frame and should be released or assumed released at the start of the next frame
See also
QSSGFrameData

Implemented in QSSGRenderOutputProviderExtension, and QSSGRenderOutputProviderExtension.

Definition at line 244 of file qssgrenderextensions.cpp.

◆ render()

void QSSGRenderExtension::render ( QSSGFrameData & data)
pure virtual

Record the render pass.

Depending on the extensions \l {RenderMode}{mode} this function will be called during the frame's prepare or render phase.

Use data to gain access to the render context from which the active QRhi object can be queried.

See also
QSSGRenderExtension::RenderMode

Implemented in QSSGRenderOutputProviderExtension, and QSSGRenderOutputProviderExtension.

Definition at line 257 of file qssgrenderextensions.cpp.

◆ resetForFrame()

void QSSGRenderExtension::resetForFrame ( )
pure virtual

Called each time a new frame starts.

Any data from the previous frame should be cleared at this point.

Implemented in QSSGRenderOutputProviderExtension, and QSSGRenderOutputProviderExtension.

Definition at line 266 of file qssgrenderextensions.cpp.

◆ stage()

QSSGRenderExtension::RenderStage QSSGRenderExtension::stage ( ) const
pure virtual
Returns
The stage in which this render extension will be used.

Implemented in QSSGRenderTextureProviderExtension.

Definition at line 282 of file qssgrenderextensions.cpp.


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