LiteFX 0.4.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::ShaderProgram< TShaderModule > Class Template Referenceabstract

Represents a shader program, consisting of multiple IShaderModules. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::IShaderProgram.

Public Types

using shader_module_type = TShaderModule
 

Public Member Functions

 ~ShaderProgram () noexcept override=default
 
virtual const Array< UniquePtr< const shader_module_type > > & modules () const noexcept=0
 
- Public Member Functions inherited from LiteFX::Rendering::IShaderProgram
 ~IShaderProgram () noexcept override=default
 
 IShaderProgram (const IShaderProgram &)=delete
 
 IShaderProgram (IShaderProgram &&) noexcept=delete
 
auto operator= (const IShaderProgram &)=delete
 
auto operator= (IShaderProgram &&) noexcept=delete
 
const IShaderModuleoperator[] (StringView name) const
 Returns a pointer to shader module based on its (case-sensitive) name.
 
bool contains (StringView name) const
 Returns true, if the program contains a shader module with the provided name or file name and false otherwise.
 
bool contains (const IShaderModule &module) const
 Returns true, if the program contains the provided shader module and false otherwise.
 
Enumerable< const IShaderModule & > modules () const
 Returns the modules, the shader program is build from.
 
SharedPtr< IPipelineLayoutreflectPipelineLayout () const
 Uses shader reflection to extract the pipeline layout of a shader. May not be available in all backends.
 
ShaderRecordCollection buildShaderRecordCollection () const noexcept
 Builds a shader record collection based on the current shader program.
 
- Public Member Functions inherited from LiteFX::SharedObject
virtual ~SharedObject () noexcept=default
 Destroys the shared object.
 
template<typename TSelf >
auto shared_from_this (this TSelf &&self) noexcept
 Returns a shared pointer to the current object instance.
 
template<typename TSelf >
auto weak_from_this (this TSelf &&self) noexcept -> WeakPtr< std::remove_reference_t< TSelf > >
 Returns a weak pointer to the current object instance.
 

Protected Member Functions

 ShaderProgram () noexcept=default
 
 ShaderProgram (const ShaderProgram &)=default
 
 ShaderProgram (ShaderProgram &&) noexcept=default
 
ShaderProgramoperator= (const ShaderProgram &)=default
 
ShaderProgramoperator= (ShaderProgram &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IShaderProgram
 IShaderProgram () noexcept=default
 
- Protected Member Functions inherited from LiteFX::SharedObject
 SharedObject () noexcept=default
 Initializes a new shared object.
 
 SharedObject (SharedObject &&) noexcept=default
 
 SharedObject (const SharedObject &)=default
 
SharedObjectoperator= (SharedObject &&) noexcept=default
 
SharedObjectoperator= (const SharedObject &)=default
 

Additional Inherited Members

- Static Protected Member Functions inherited from LiteFX::SharedObject
template<typename T , typename... TArgs>
static auto create (TArgs &&... args) -> SharedPtr< T >
 Generic factory method used to create instances of the shared object.
 

Detailed Description

template<typename TShaderModule>
requires meta::implements<TShaderModule, IShaderModule>
class LiteFX::Rendering::ShaderProgram< TShaderModule >

Represents a shader program, consisting of multiple IShaderModules.

Template Parameters
TShaderModuleThe type of the shader module. Must implement IShaderModule.

Member Typedef Documentation

◆ shader_module_type

template<typename TShaderModule >
using LiteFX::Rendering::ShaderProgram< TShaderModule >::shader_module_type = TShaderModule

Constructor & Destructor Documentation

◆ ShaderProgram() [1/3]

template<typename TShaderModule >
LiteFX::Rendering::ShaderProgram< TShaderModule >::ShaderProgram ( )
protecteddefaultnoexcept

◆ ShaderProgram() [2/3]

template<typename TShaderModule >
LiteFX::Rendering::ShaderProgram< TShaderModule >::ShaderProgram ( const ShaderProgram< TShaderModule > & )
protecteddefault

◆ ShaderProgram() [3/3]

template<typename TShaderModule >
LiteFX::Rendering::ShaderProgram< TShaderModule >::ShaderProgram ( ShaderProgram< TShaderModule > && )
protecteddefaultnoexcept

◆ ~ShaderProgram()

template<typename TShaderModule >
LiteFX::Rendering::ShaderProgram< TShaderModule >::~ShaderProgram ( )
overridedefaultnoexcept

Member Function Documentation

◆ modules()

template<typename TShaderModule >
virtual const Array< UniquePtr< const shader_module_type > > & LiteFX::Rendering::ShaderProgram< TShaderModule >::modules ( ) const
pure virtualnoexcept

◆ operator=() [1/2]

template<typename TShaderModule >
ShaderProgram & LiteFX::Rendering::ShaderProgram< TShaderModule >::operator= ( const ShaderProgram< TShaderModule > & )
protecteddefault

◆ operator=() [2/2]

template<typename TShaderModule >
ShaderProgram & LiteFX::Rendering::ShaderProgram< TShaderModule >::operator= ( ShaderProgram< TShaderModule > && )
protecteddefaultnoexcept