All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HdRenderBuffer Class Referenceabstract

A render buffer is a handle to a data resource that can be rendered into, such as a 2d image for a draw target or auxiliary rendering output. More...

+ Inheritance diagram for HdRenderBuffer:

Public Types

enum  DirtyBits : HdDirtyBits { Clean = 0, DirtyDescription = 1 << 0, AllDirty = (DirtyDescription) }
 

Public Member Functions

HD_API HdRenderBuffer (SdfPath const &id)
 
Prim API
virtual HD_API HdDirtyBits GetInitialDirtyBitsMask () const override
 Get initial invalidation state. More...
 
virtual HD_API void Sync (HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) override
 Get allocation information from the scene delegate. More...
 
virtual HD_API void Finalize (HdRenderParam *renderParam) override
 Deallocate before deletion. More...
 
- Public Member Functions inherited from HdBprim
HD_API HdBprim (SdfPath const &id)
 
SdfPath const & GetId () const
 Returns the identifier by which this buffer is known. More...
 

Renderbuffer API

virtual bool Allocate (GfVec3i const &dimensions, HdFormat format, bool multiSampled)=0
 Allocate a buffer. More...
 
virtual unsigned int GetWidth () const =0
 Get the buffer's width. More...
 
virtual unsigned int GetHeight () const =0
 Get the buffer's height. More...
 
virtual unsigned int GetDepth () const =0
 Get the buffer's depth. More...
 
virtual HdFormat GetFormat () const =0
 Get the buffer's per-pixel format. More...
 
virtual bool IsMultiSampled () const =0
 Get whether the buffer is multisampled. More...
 
virtual void * Map ()=0
 Map the buffer for reading. More...
 
virtual void Unmap ()=0
 Unmap the buffer. It is no longer safe to read from the buffer. More...
 
virtual bool IsMapped () const =0
 Return whether the buffer is currently mapped by anybody. More...
 
virtual void Resolve ()=0
 Resolve the buffer so that reads reflect the latest writes. More...
 
virtual bool IsConverged () const =0
 Return whether the buffer is converged (whether the renderer is still adding samples or not). More...
 
virtual HgiTextureHandle GetHgiTextureHandle (bool multiSampled) const
 This optional API returns the hgi gpu texture handle that backs this render buffer. More...
 
virtual void _Deallocate ()=0
 Deallocate the buffer, freeing any owned resources. More...
 

Detailed Description

A render buffer is a handle to a data resource that can be rendered into, such as a 2d image for a draw target or auxiliary rendering output.

The render buffer can be used as an indexed prim, in which case it communicates with the scene delegate to get buffer properties, or it can be created out of band and supplied directly with allocation parameters.

Render buffers can be targeted by render passes. They also contain mapping functionality for reading and writing buffer data.

Definition at line 51 of file renderBuffer.h.

Member Function Documentation

virtual void _Deallocate ( )
protectedpure virtual

Deallocate the buffer, freeing any owned resources.

virtual bool Allocate ( GfVec3i const &  dimensions,
HdFormat  format,
bool  multiSampled 
)
pure virtual

Allocate a buffer.

Can be called from Sync(), or directly. If the buffer has already been allocated, calling Allocate() again will destroy the old buffer and allocate a new one.

A negative dimension or invalid format will cause an allocation error. If the requested buffer can't be allocated, the function will return false.

virtual HD_API void Finalize ( HdRenderParam renderParam)
overridevirtual

Deallocate before deletion.

Reimplemented from HdBprim.

virtual unsigned int GetDepth ( ) const
pure virtual

Get the buffer's depth.

virtual HdFormat GetFormat ( ) const
pure virtual

Get the buffer's per-pixel format.

virtual unsigned int GetHeight ( ) const
pure virtual

Get the buffer's height.

virtual HgiTextureHandle GetHgiTextureHandle ( bool  multiSampled) const
inlinevirtual

This optional API returns the hgi gpu texture handle that backs this render buffer.

It allows later compositing steps to make use of the already-on-gpu texture and skip the Map() cpu to gpu copy. If multiSampled is true, and the render buffer is ms, the ms texture is returned, otherwise the non-ms texture is returned. CPU-based render buffer can ignore this api.

Definition at line 133 of file renderBuffer.h.

virtual HD_API HdDirtyBits GetInitialDirtyBitsMask ( ) const
overridevirtual

Get initial invalidation state.

Implements HdBprim.

virtual unsigned int GetWidth ( ) const
pure virtual

Get the buffer's width.

virtual bool IsConverged ( ) const
pure virtual

Return whether the buffer is converged (whether the renderer is still adding samples or not).

virtual bool IsMapped ( ) const
pure virtual

Return whether the buffer is currently mapped by anybody.

virtual bool IsMultiSampled ( ) const
pure virtual

Get whether the buffer is multisampled.

virtual void* Map ( )
pure virtual

Map the buffer for reading.

virtual void Resolve ( )
pure virtual

Resolve the buffer so that reads reflect the latest writes.

Some buffer implementations may defer final processing of writes until a buffer is read, for efficiency; examples include OpenGL MSAA or multi-sampled raytraced buffers.

virtual HD_API void Sync ( HdSceneDelegate sceneDelegate,
HdRenderParam renderParam,
HdDirtyBits *  dirtyBits 
)
overridevirtual

Get allocation information from the scene delegate.

Implements HdBprim.

virtual void Unmap ( )
pure virtual

Unmap the buffer. It is no longer safe to read from the buffer.


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