CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::GPUShaderProgram Class Referenceabstract

#include <CeresEngine/RenderAPI/GPUShader.hpp>

Inheritance diagram for CeresEngine::GPUShaderProgram:
CeresEngine::TDeviceObject< GPUShaderProgramDescriptor > CeresEngine::GPUDeviceObject CeresEngine::GPUObject CeresEngine::GLShaderProgram CeresEngine::MKShaderProgram CeresEngine::MTShaderProgram CeresEngine::NLShaderProgram CeresEngine::VKShaderProgram CeresEngine::WGShaderProgram

Public Member Functions

 GPUShaderProgram (GPUDevice &device, const Descriptor &descriptor, const GPUShaderReflectionDescriptor &reflection)
 Initializes a new ShaderProgram object instance.
 
 GPUShaderProgram (const GPUShaderProgram &)=delete
 Deleted copy constructor.
 
GPUShaderProgramoperator= (const GPUShaderProgram &)=delete
 
 GPUShaderProgram (GPUShaderProgram &&)=delete
 Deleted move constructor.
 
GPUShaderProgramoperator= (GPUShaderProgram &&)=delete
 
const GPUShaderReflectionDescriptorreflect () const
 Extracts reflection information from the shader.
 
virtual GPUPipelineLayoutPtr getPipelineLayout () const =0
 The pipeline layout deduced for this shader program.
 
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Inherited constructors.
 
 TDeviceObject (const TDeviceObject &)=delete
 Inherited constructors.
 
 TDeviceObject (TDeviceObject &&)=delete
 Inherited constructors.
 
- Public Member Functions inherited from CeresEngine::TDeviceObject< GPUShaderProgramDescriptor >
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Initializes a new RenderAPI device object instance.
 
 TDeviceObject (const TDeviceObject &)=delete
 
 TDeviceObject (TDeviceObject &&)=delete
 
 ~TDeviceObject () override=default
 
TDeviceObjectoperator= (const TDeviceObject &)=delete
 
TDeviceObjectoperator= (TDeviceObject &&)=delete
 
- Public Member Functions inherited from CeresEngine::GPUDeviceObject
 GPUDeviceObject (GPUDevice &device)
 
 ~GPUDeviceObject () override
 
- Public Member Functions inherited from CeresEngine::GPUObject
 GPUObject ()=default
 
virtual ~GPUObject ()=default
 
 GPUObject (const GPUObject &)=delete
 
GPUObjectoperator= (const GPUObject &)=delete
 
 GPUObject (GPUObject &&)=delete
 
GPUObjectoperator= (GPUObject &&)=delete
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Releases the object by decrementing it's reference count by one.
 

Public Attributes

const GPUShaderReflectionDescriptorreflection
 The shader reflection descriptor.
 
- Public Attributes inherited from CeresEngine::TDeviceObject< GPUShaderProgramDescriptor >
const Descriptordescriptor
 A structure that describes the object and it's properties.
 
- Public Attributes inherited from CeresEngine::GPUDeviceObject
GPUDevicedevice
 The owning device this object was created from.
 

Additional Inherited Members

- Public Types inherited from CeresEngine::TDeviceObject< GPUShaderProgramDescriptor >
using Descriptor = GPUShaderProgramDescriptor
 An type-alias to the descriptor struct type.
 
- Protected Member Functions inherited from CeresEngine::GPUObject
virtual void destroy () noexcept
 A internal method called by the system when the object reference count reaches zero.
 

Constructor & Destructor Documentation

◆ GPUShaderProgram() [1/3]

CeresEngine::GPUShaderProgram::GPUShaderProgram ( GPUDevice device,
const Descriptor descriptor,
const GPUShaderReflectionDescriptor reflection 
)
inlineexplicit

Initializes a new ShaderProgram object instance.

◆ GPUShaderProgram() [2/3]

CeresEngine::GPUShaderProgram::GPUShaderProgram ( const GPUShaderProgram )
delete

Deleted copy constructor.

◆ GPUShaderProgram() [3/3]

CeresEngine::GPUShaderProgram::GPUShaderProgram ( GPUShaderProgram &&  )
delete

Deleted move constructor.

Member Function Documentation

◆ getPipelineLayout()

virtual GPUPipelineLayoutPtr CeresEngine::GPUShaderProgram::getPipelineLayout ( ) const
pure virtual

The pipeline layout deduced for this shader program.

Will be used if the user doesn't provide another when creating a new pipeline.

Can be null if the shader doesn't have any reflection metadata to create a pipeline layout for the program.

Implemented in CeresEngine::MTShaderProgram, CeresEngine::MKShaderProgram, CeresEngine::NLShaderProgram, CeresEngine::VKShaderProgram, CeresEngine::WGShaderProgram, and CeresEngine::GLShaderProgram.

◆ operator=() [1/2]

GPUShaderProgram & CeresEngine::GPUShaderProgram::operator= ( const GPUShaderProgram )
delete

◆ operator=() [2/2]

GPUShaderProgram & CeresEngine::GPUShaderProgram::operator= ( GPUShaderProgram &&  )
delete

◆ reflect()

const GPUShaderReflectionDescriptor & CeresEngine::GPUShaderProgram::reflect ( ) const
inline

Extracts reflection information from the shader.

Returns
The reflected shader descriptor.

◆ TDeviceObject() [1/3]

Inherited constructors.

◆ TDeviceObject() [2/3]

CeresEngine::TDeviceObject< TDescriptor, TParent >::TDeviceObject ( GPUDevice device,
const Descriptor descriptor 
)
inlineexplicit

Inherited constructors.

◆ TDeviceObject() [3/3]

CeresEngine::TDeviceObject< TDescriptor, TParent >::TDeviceObject ( TDeviceObject &&  )
delete

Inherited constructors.

Member Data Documentation

◆ reflection

const GPUShaderReflectionDescriptor& CeresEngine::GPUShaderProgram::reflection

The shader reflection descriptor.

Can be used to enumerate shader input, output, parameters and other introspectable data.


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