Untold Engine  Beta v0.0.16
docs
U4DEngine::U4DRenderImage Class Reference

The U4DRenderImage class manages the rendering of all 2D images. More...

Inherits U4DEngine::U4DRenderEntity.

Inherited by U4DEngine::U4DRenderFont, and U4DEngine::U4DRenderSprite.

Public Member Functions

 U4DRenderImage (U4DImage *uU4DImage)
 Constructor for class. More...
 
 ~U4DRenderImage ()
 Destructor for class.
 
void initMTLRenderLibrary ()
 Initializes the library shaders. More...
 
void initMTLRenderPipeline ()
 Initializes the Rendering Pipeline. More...
 
virtual bool loadMTLBuffer ()
 Loads the attributes and Uniform data. More...
 
void loadMTLTexture ()
 Loads image texture into GPU. More...
 
void updateSpaceUniforms ()
 Updates the space matrix of the entity. More...
 
void render (id< MTLRenderCommandEncoder > uRenderEncoder)
 Renders the current entity. More...
 
void alignedAttributeData ()
 It aligns all attribute data. More...
 
virtual void clearModelAttributeData ()
 clears all attributes containers More...
 
void initTextureSamplerObjectNull ()
 Set texture sampler to NULL. More...
 
- Public Member Functions inherited from U4DEngine::U4DRenderEntity
 U4DRenderEntity ()
 Constructor for the U4DRenderEntity. More...
 
virtual ~U4DRenderEntity ()
 Destructor for the U4DRenderEntity. More...
 
void loadRenderingInformation ()
 Sends attributes information to the GPU. More...
 
virtual void loadMTLAdditionalInformation ()
 Loads additional information for different types of entities. More...
 
virtual void updateAllUniforms ()
 
virtual void updateRenderingInformation ()
 Updates the space matrix of the shadow. More...
 
virtual void modifyRenderingInformation ()
 
virtual void createTextureObject (id< MTLTexture > &uTextureObject)
 Creates a texture object to be applied to an entity. More...
 
void createSamplerObject (id< MTLSamplerState > &uSamplerStateObject, MTLSamplerDescriptor *uSamplerDescriptor)
 Creates a sampler object required for texturing. More...
 
virtual void setGeometryLineColor (U4DVector4n &uGeometryLineColor)
 Set line color for geometric entities. More...
 
void clearRawImageData ()
 Clear the raw image data. More...
 
void setIsWithinFrustum (bool uValue)
 Sets property used to determine if entity is within frustum. More...
 
void setRawImageData (std::vector< unsigned char > uRawImageData)
 
void setImageWidth (unsigned int uImageWidth)
 
void setImageHeight (unsigned int uImageHeight)
 
bool createTextureAndSamplerObjects (id< MTLTexture > &uTextureObject, id< MTLSamplerState > &uSamplerStateObject, MTLSamplerDescriptor *uSamplerDescriptor, std::string uTextureName)
 
void setPipelineForPass (std::string uPipelineName, int uRenderPassKey)
 
void removePassPipelinePair (int uRenderPassKey)
 
U4DRenderPipelineInterfacegetPipeline (int uRenderPassKey)
 

Protected Attributes

std::vector< AttributeAlignedImageDataattributeAlignedContainer
 vector for the aligned attribute data. The attributes need to be aligned before they are processed by the GPU
 
MTLSamplerDescriptor * nullSamplerDescriptor
 Pointer to the null sampler descriptor used for texturing.
 
id< MTLTexture > textureObject
 Pointer that represents the texture object.
 
id< MTLSamplerState > samplerStateObject
 Pointer to the Sampler State object.
 
MTLSamplerDescriptor * samplerDescriptor
 Pointer to the Sampler descriptor.
 
- Protected Attributes inherited from U4DEngine::U4DRenderEntity
id< MTLDevice > mtlDevice
 Pointer representing a Metal Device.
 
id< MTLBuffer > attributeBuffer
 Pointer to the attribute buffer.
 
id< MTLBuffer > indicesBuffer
 Pointer to the index buffer.
 
id< MTLBuffer > uniformSpaceBuffer
 Pointer to the Uniform that holds the Space matrix.
 
bool eligibleToRender
 Variable to determine if object should be rendered.
 
bool isWithinFrustum
 Variable to determine if the 3D object is within the frustum.
 
std::vector< unsigned char > rawImageData
 buffer for the raw image data of a texture
 
unsigned int imageWidth
 Width of the texture image.
 
unsigned int imageHeight
 Height of the texture image.
 
std::map< int, U4DRenderPipelineInterface * > renderPassPipelineMap
 

Detailed Description

The U4DRenderImage class manages the rendering of all 2D images.

Constructor & Destructor Documentation

◆ U4DRenderImage()

U4DEngine::U4DRenderImage::U4DRenderImage ( U4DImage uU4DImage)

Constructor for class.

It sets the image entity it will manage

Parameters
uU4DImageimage entity

Member Function Documentation

◆ alignedAttributeData()

void U4DEngine::U4DRenderImage::alignedAttributeData ( )

It aligns all attribute data.

Aligns vertices and uv. This is necessary when using Metal

◆ clearModelAttributeData()

void U4DEngine::U4DRenderImage::clearModelAttributeData ( )
virtual

clears all attributes containers

clears attributes containers such as vertices and UVs

Reimplemented from U4DEngine::U4DRenderEntity.

Reimplemented in U4DEngine::U4DRenderFont.

◆ initMTLRenderLibrary()

void U4DEngine::U4DRenderImage::initMTLRenderLibrary ( )

Initializes the library shaders.

It initializes the vertex and fragment shaders for the entity

◆ initMTLRenderPipeline()

void U4DEngine::U4DRenderImage::initMTLRenderPipeline ( )

Initializes the Rendering Pipeline.

It prepares the rendering descriptor with the appropriate color attachment, depth attachment, shaders and attributes

◆ initTextureSamplerObjectNull()

void U4DEngine::U4DRenderImage::initTextureSamplerObjectNull ( )
virtual

Set texture sampler to NULL.

Creates a texture and sampler object and initializes to NULL

Reimplemented from U4DEngine::U4DRenderEntity.

◆ loadMTLBuffer()

bool U4DEngine::U4DRenderImage::loadMTLBuffer ( )
virtual

Loads the attributes and Uniform data.

It prepares the attribute data so that it is aligned. It then loads the attributes into a buffer. It also loads uniform data into a buffer

Returns
True if loading is successful

Reimplemented from U4DEngine::U4DRenderEntity.

◆ loadMTLTexture()

void U4DEngine::U4DRenderImage::loadMTLTexture ( )
virtual

Loads image texture into GPU.

It decodes the current texture image, creates a texture object, a texture sampler, and loads the raw data into a buffer

Reimplemented from U4DEngine::U4DRenderEntity.

◆ render()

void U4DEngine::U4DRenderImage::render ( id< MTLRenderCommandEncoder >  uRenderEncoder)
virtual

Renders the current entity.

Updates the space matrix and any rendering flags. It encodes the pipeline, buffers and issues the draw command

Parameters
uRenderEncoderMetal encoder object for the current entity

Reimplemented from U4DEngine::U4DRenderEntity.

Reimplemented in U4DEngine::U4DRenderSprite.

◆ updateSpaceUniforms()

void U4DEngine::U4DRenderImage::updateSpaceUniforms ( )
virtual

Updates the space matrix of the entity.

Updates the image space matrix of the entity by computing the world, view and orthogonal space matrix

Reimplemented from U4DEngine::U4DRenderEntity.