Kanzi 3.9.10
kanzi::ShaderProgram Class Reference

ShaderProgram defines programmable vertex and fragment operations done by the GPU for a draw call. More...

#include <kanzi/core.ui/platform/graphics_backend/gl/shader.hpp>

Inheritance diagram for kanzi::ShaderProgram:
[legend]

Classes

struct  BindingInfo
 Binding info. More...
 
struct  CreateInfo
 Struct that contains all the parameters that Kanzi needs to create a ShaderProgram. More...
 
struct  CreateInfoProgramBinary
 ShaderProgram creation parameters for initialized from vendor specific GL program binary. More...
 
struct  CreateInfoShaderBinary
 ShaderProgram creation parameters for initialized from vendor specific GL shader binary. More...
 
struct  CreateInfoShaderSources
 ShaderProgram creation parameters for initialized from shader source code strings. More...
 
struct  FixedUniformFunctionInfo
 Information on fixed uniform function. More...
 
struct  SamplerInfo
 
struct  UniformProperty
 

Public Types

using BindingContainer
 Container for bindings in the material.
 
using BindingIterator
 Binding iterator type.
 
typedef array< int, VertexAttribute::SemanticCountFixedAttributeArray
 
typedef FixedAttributeArray::const_iterator FixedAttributeArrayConstIterator
 
typedef FixedAttributeArray::iterator FixedAttributeArrayIterator
 
enum class  FixedUniform {
  ProjectionCameraWorldMatrix , WorldMatrix , ProjectionMatrix , CameraMatrix ,
  CameraPosition , ViewPosition , Viewport , WindowSize ,
  NormalMatrix , CameraNormalMatrix , CameraWorldMatrix , NearFarPlane ,
  Time , MorphWeights , MorphIndices , MorphDataTexture ,
  MorphDataPositionOffset , MorphDataNormalOffset , MorphDataTangentOffset , MorphDataSize ,
  MatrixPalette , Count , Invalid
}
 Fixed uniform locations of the shader program. More...
 
typedef void(* FixedUniformFunction) (Renderer &renderer, int uniformLocation, const Material &material, RenderPass &renderPass, Node &node)
 Function pointer type for fixed operations that do not require a binding.
 
enum  UniformBindingType { UniformBindingTypeNone , UniformBindingTypeDefault , UniformBindingTypeManual }
 Uniform binding association type. More...
 
typedef vector< UniformPropertyUniformContainer
 
typedef UniformContainer::const_iterator UniformContainerConstIterator
 
typedef vector< intUniformLocationContainer
 
enum  UniformTransformation {
  UniformTransformationPassThrough , UniformTransformationSRgbToLinear , UniformTransformationLinearToSRgb , UniformTransformationNotPresent ,
  UniformTransformationCount
}
 How value for uniform should be transformed when setting uniform value. More...
 
- Public Types inherited from kanzi::GPUResource
enum  MemoryType { GpuOnly , GpuAndRam , RamOnly }
 Memory upload and RAM preservation strategy for GPU resources. More...
 
- Public Types inherited from kanzi::PropertyObject
typedef PropertyStorageContainer::const_iterator PropertyStorageConstIterator
 
typedef vector< PropertyStoragePtrPropertyStorageContainer
 
typedef PropertyStorageContainer::iterator PropertyStorageIterator
 
typedef intrusive_ptr< AbstractPropertyTypeDescriptor::PropertyStoragePropertyStoragePtr
 
typedef PropertyStorageContainer::reverse_iterator PropertyStorageReverseIterator
 

Public Member Functions

BindingIterator beginBindings () const
 Gets an iterator to the beginning of bindings.
 
UniformContainerConstIterator beginFixedUniforms () const
 Gets a const iterator to the beginning of the fixed uniforms.
 
UniformContainerConstIterator beginUniforms () const
 Gets an const iterator to the beginning of the property uniforms.
 
void bind () const
 Binds the shader program for rendering.
 
BindingIterator endBindings () const
 Gets an iterator to the end of bindings.
 
UniformContainerConstIterator endFixedUniforms () const
 Gets a const iterator to the end of the fixed uniforms.
 
UniformContainerConstIterator endUniforms () const
 Gets an const iterator to the end of the property uniforms.
 
bool getBlendingControl () const
 Get shader blending control.
 
UniformTransformation getFixedUniformTransformation (FixedUniform fixedUniform) const
 Get uniform transformation for a fixed uniform.
 
unsigned int getProgramHandle () const
 Get shader program handle.
 
AbstractPropertyType getPropertyTypeByName (string_view propertyTypeName) const
 Gets property type from shader program by name. Returns 0 if not found.
 
bool getStrictWarningLogged () const
 
ShaderTextureUniform getTextureUniformLocation (unsigned int textureUnit) const
 Returns texture size uniform locations from shader program.
 
unsigned int getUniformElementCount (string_view name)
 Get uniform element count from the shader program by name.
 
int getUniformLocation (string_view name)
 Get uniform location from the shader program by name.
 
const ShaderAttributeCollectiongetVertexFormat () const
 
bool hasSamplersWithoutProperties () const
 Return true if shader program has samplers that have no corresponding texture property.
 
bool isDeployedOverride () const override
 GpuResoucre::isDeployedOverride() implementation.
 
void reloadFromKzbOverride (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser) override
 Resource::reloadFromKzbOverride() implementation.
 
void setStrictWarningLogged ()
 
 ShaderProgram (Domain *domain, const CreateInfo &createInfo, string_view name)
 Constructor.
 
- Public Member Functions inherited from kanzi::GPUResource
void destroy ()
 Destroys a GPU resource.
 
unsigned int getGPUMemoryUsage () const
 
RenderergetRenderer () const
 
void invalidate ()
 Notify resource that graphics context was lost and all GPU resources are invalid.
 
bool isDeployed () const
 
 ~GPUResource () override
 
- Public Member Functions inherited from kanzi::Resource
virtual unsigned int getCPUMemoryUsage () const
 Function for getting the memory usage of a resource.
 
const string & getName () const
 Gets the resource name.
 
const string & getUrl () const
 Gets the resource URL.
 
bool isKeepAlive () const
 Tells if the resource has keep alive flag set.
 
void reload ()
 
void reloadFromFile (string_view filePath)
 
void reloadFromKzb (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser)
 
void setKeepAlive (bool keepAlive)
 Sets the keep alive flag.
 
void setUrl (string_view url)
 Sets the resource URL.
 
 ~Resource () override
 Destructor.
 
- Public Member Functions inherited from kanzi::Object
AppliedStyleEntrySharedPtr applyObjectStyle (kanzi::StyleSharedPtr style)
 Applies a style to an object.
 
void applyObjectStyles ()
 Apply all styles for an object node.
 
DomaingetDomain () const
 Returns the domain the object belongs to.
 
const MetaclassgetDynamicMetaclass () const override
 Returns the metaclass of the dynamic type of the object.
 
MainLoopSchedulergetMainLoopScheduler () const
 Returns the MainLoopScheduler instance of the associated Domain.
 
detail::MessageDispatcher * getMessageDispatcher () const
 Returns the message dispatcher of the object.
 
ResourceManagergetResourceManager () const
 Returns the resource manager of the object.
 
ScriptingContextSharedPtr getScriptingContext () const
 Gets the scripting context of the object.
 
 Object (Domain *domain)
 
void setScriptingContext (ScriptingContextSharedPtr context)
 Sets the scripting context of the object.
 
void unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry)
 
void unapplyObjectStyles ()
 Unapplies and removes all applied styles.
 
 ~Object () override
 
- Public Member Functions inherited from kanzi::MetaObject
bool isTypeOf (const Metaclass *objectType) const
 Determines if the type of this object is the given type or derived from it.
 
virtual ~MetaObject ()
 
- Public Member Functions inherited from kanzi::PropertyObject
template<typename DataType >
void addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 
template<typename DataType >
void addPropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 Adds a property modifier without notifying handlers.
 
template<typename DataType >
void addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner)
 
template<typename DataType >
void addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner)
 
template<typename DataType >
void addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer)
 
PropertyStorageContainer::iterator beginPropertyStorage ()
 Returns the begin iterator to the internal property storage container.
 
PropertyStorageContainer::const_iterator beginPropertyStorage () const
 Returns the begin iterator to the internal property storage container.
 
void clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag)
 
void copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType)
 Copies local value of single property from another object.
 
void copyLocalValues (const PropertyObject &other)
 Copies all local values from another object.
 
PropertyStorageContainer::iterator endPropertyStorage ()
 Returns the end iterator to the internal property storage container.
 
PropertyStorageContainer::const_iterator endPropertyStorage () const
 Returns the end iterator to the internal property storage container.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getAbstractProperty (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalProperty (const PropertyType< DataType > &propertyType) const
 Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value.
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalPropertyBase (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getProperty (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property type.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getPropertyBase (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property disregarding modifiers.
 
template<typename DataType >
size_t getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) const
 Gets number of current notification handlers for given property type.
 
bool hasBaseValue (AbstractPropertyType propertyType) const
 Evaluates whether there are any inputs into the property value, disregarding modifiers.
 
bool hasLocalValue (AbstractPropertyType propertyType) const
 Evaluates whether there is a local value set for the property.
 
bool hasNonClassValue (AbstractPropertyType propertyType) const
 Evaluates whether there is a value of any precedence higher than class default value set for the property.
 
bool hasValue (AbstractPropertyType propertyType) const
 Evaluates whether there are any inputs into the property value.
 
bool isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const
 
virtual void onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason)
 Virtual function to handle property change notifications.
 
 PropertyObject ()
 
void removeKzbProperties ()
 Remove all KZB properties.
 
void removeKzbProperties (flat_set< AbstractPropertyType > *keepProperties)
 Remove all KZB properties that are not included in a given set.
 
template<typename DataType >
void removeLocalPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer)
 
void removeLocalValue (AbstractPropertyType propertyType)
 Removes the local value associated with the property.
 
template<typename DataType >
void removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 
template<typename DataType >
void removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner)
 
template<typename DataType >
void removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer)
 
template<typename DataType >
void setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value)
 
template<typename DataType >
void setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value)
 Sets the local value of a property type.
 
void setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag)
 
KZ_DEPRECATED void validatePropertyModifiers (AbstractPropertyType propertyType)
 Validates property modifiers and notifies handlers.
 
void validatePropertyModifiersAndNotifyHandlers (AbstractPropertyType propertyType)
 Validates property modifiers and notifies handlers.
 
virtual ~PropertyObject ()
 

Static Public Member Functions

static ShaderProgramSharedPtr create (Domain *domain, const CreateInfo &createInfo, string_view name)
 Create function.
 
static ResourceManager::LoadTaskSharedPtr createLoadTask (string_view name, KzbFile *kzbFile, ReadOnlyMemoryFilePtr file)
 
- Static Public Member Functions inherited from kanzi::Object
static const MetaclassgetStaticMetaclass ()
 Returns the metaclass of Object class.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 Default implementation that returns empty editor info.
 
- Static Public Member Functions inherited from kanzi::MetaObject
static const MetaclassgetStaticMetaclass ()
 Returns the metaclass of Object class.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 Default implementation that returns empty editor info.
 

Protected Member Functions

void destroyOverride () override
 GPUResource::destroyOverride() implementation.
 
void invalidateOverride () override
 GPUResource::invalidateOverride() implementation.
 
void reloadOverride () override
 Resource::reloadOverride() implementation.
 
- Protected Member Functions inherited from kanzi::GPUResource
virtual unsigned int getGPUMemoryUsageOverride () const
 Gets the amount of GPU memory consumed by the resource.
 
 GPUResource (Domain *domain, string_view name="")
 Constructor.
 
- Protected Member Functions inherited from kanzi::Resource
virtual unsigned int getCPUMemoryUsageOverride () const
 
virtual void reloadFromFileOverride (string_view filePath)
 
 Resource (Domain *domain, string_view name)
 Constructor.
 
- Protected Member Functions inherited from kanzi::Object
void initialize ()
 
void onCopy (const Object &other)
 
- Protected Member Functions inherited from kanzi::MetaObject
void initialize ()
 
 MetaObject ()
 
- Protected Member Functions inherited from kanzi::PropertyObject
AbstractPropertyTypeDescriptor::ValueSourceEntryacquireLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor, PropertyStoragePtr &propertyStorage)
 Acquires a local value source entry that is free for the assignment of a value.
 
AbstractPropertyTypeDescriptor::ModifierStorageacquireModifierStorage (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage)
 
AbstractPropertyTypeDescriptor::NotificationStorageacquireNotificationStorage (AbstractPropertyTypeDescriptor &descriptor)
 
PropertyStoragePtr acquirePropertyStorage (AbstractPropertyTypeDescriptor &descriptor)
 
template<typename DataType >
void addPropertyModifierBase (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner, bool notify)
 Adds a property modifier entry to the property modifier stack and validates them.
 
void addPropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner)
 Internally adds a property value source.
 
void addPropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer)
 Internally adds a property value source.
 
AbstractPropertyTypeDescriptor::ValueSourceEntryconstructLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage)
 
PropertyStoragePtr constructPropertyStorage (AbstractPropertyTypeDescriptor &descriptor)
 
void copyLocalValue (const AbstractPropertyTypeDescriptor::PropertyStorage &otherPropertyStorage)
 Copy local value from property storage.
 
AbstractPropertyTypeDescriptor::ModifierStoragefindModifierStorage (AbstractPropertyTypeDescriptor &descriptor)
 
AbstractPropertyTypeDescriptor::NotificationStoragefindNotificationStorage (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::PropertyStoragefindPropertyStorage (AbstractPropertyTypeDescriptor &descriptor) const
 Gets the property storage for given property type descriptor.
 
PropertyStoragePtr findPropertyStoragePtr (AbstractPropertyTypeDescriptor &descriptor) const
 Gets property storage intrusive pointer which you can use to hold a reference until the end of the operation.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByNameAndDataType (string_view name, PropertyDataType dataType) const
 Finds a property type descriptor by name and data type.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByQualifiedNameAndDataType (string_view qualifiedName, PropertyDataType dataType) const
 Like findPropertyTypeDescriptorByNameAndDataType, but only searches by matching with qualified names.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByUnqualifiedNameAndDataType (string_view unqualifiedName, PropertyDataType dataType) const
 Like findPropertyTypeDescriptorByNameAndDataType, but only searches by matching with unqualified names.
 
AbstractPropertyTypeDescriptor::ValueSourcegetClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetFinalValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetNonClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetTopValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 Gets the top-level value source for a given property descriptor.
 
virtual void notifyPropertyHandlers (PropertyStoragePtr &storagePtr, PropertyNotificationReason reason)
 Notifies all property handlers on a property storage.
 
void onCopy (const PropertyObject &other)
 
void removeLocalValue (AbstractPropertyTypeDescriptor &descriptor, PropertyStoragePtr &propertyStorage)
 Removes a local value from the given property storage.
 
void removePropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, void *owner)
 Removes a property value source.
 
void validatePropertyModifiers (PropertyStoragePtr &propertyStorage)
 Validates property modifiers without notifying handlers.
 
void validatePropertyModifiersAndNotifyHandlers (PropertyStoragePtr &propertyStorage)
 Validates property modifiers and notifies handlers.
 

Friends

void swap (ShaderProgram &shader1, ShaderProgram &shader2)
 

Additional Inherited Members

- Protected Types inherited from kanzi::Object
typedef vector< AppliedStyleEntrySharedPtrAppliedStyleContainer
 Applied style container.
 
- Protected Attributes inherited from kanzi::Object
AppliedStyleContainer m_appliedStyles
 Listing of applied styles applied to this object.
 

Detailed Description

ShaderProgram defines programmable vertex and fragment operations done by the GPU for a draw call.

For each draw call, graphics device executes a vertex shader for each vertex, rasterizes primitives, and for each rasterized fragment, the fragment shader is executed.

In order to create a ShaderProgram, you must prepare ShaderProgram::CreateInfo structure and make sure it is valid using CreateInfo::validate(), then create the ShaderProgram with ShaderProgram::create(). If ShaderProgram creation parameters are not valid, ShaderProgram::create() will throw an exception, which can stop program execution.

See also
ShaderProgram::CreateInfo
ShaderProgram::CreateInfoShaderSources
ShaderProgram::CreateInfoShaderBinary
ShaderProgram::CreateInfoProgramBinary

ShaderProgram consist of vertex shader, fragment shader, specification of vertex attributes consumed by the vertex shader, and specification of property types that are used to control uniforms,

Shader programs consume per vertex attribute data, and per draw call values known as uniforms.

Vertex attribute data is typically sourced from Meshes. Kanzi Shader lists a number of shader vertex attributes. Shader vertex attributes have name, semantic and semantic type. When Kanzi prepares a draw call, a mesh is typically used as source for attribute data that is consumed by the shader program. Each mesh has a number of mesh vertex attributes; these are mapped to shader vertex attributes based on attribute semantic and semantic index.

Uniforms are typically sourced from properties, for example Material properties, or from engine. Engine uniforms are for example final transform for the current Model3D node being drawn, camera transformation, or positions and colors of lights in the scene. Engine uniforms are also called "fixed uniforms" in Kanzi.

Values of uniforms can be transformed by Kanzi before they are sent to shader program. Currently only color uniforms have transformations available. With linear to sRGB transform, a linear color is convertex to sRGB when it is sent to uniform. With sRGB to linear transform, a sRGB color value is transformed to linear when it is sent to uniform.

Member Typedef Documentation

◆ FixedUniformFunction

typedef void(* kanzi::ShaderProgram::FixedUniformFunction) (Renderer &renderer, int uniformLocation, const Material &material, RenderPass &renderPass, Node &node)

Function pointer type for fixed operations that do not require a binding.

Parameters
rendererRenderer to use.
uniformShader uniform information.
renderPassLocal render pass context.
nodeLocal node context.

◆ FixedAttributeArray

◆ FixedAttributeArrayIterator

◆ FixedAttributeArrayConstIterator

◆ UniformContainer

◆ UniformContainerConstIterator

◆ UniformLocationContainer

◆ BindingContainer

Container for bindings in the material.

◆ BindingIterator

Member Enumeration Documentation

◆ FixedUniform

Fixed uniform locations of the shader program.

Enumerator
ProjectionCameraWorldMatrix 

Projection * camera * world matrix.

WorldMatrix 

World matrix.

ProjectionMatrix 

Projection matrix.

CameraMatrix 

Camera matrix.

CameraPosition 

Camera position.

ViewPosition 

Homogeneous position to use for calculating the view direction to world position.

Viewport 

Viewport area.

WindowSize 

Vec2 containing current window size.

NormalMatrix 

Normal matrix.

CameraNormalMatrix 

Camera * normal matrix (screen space normal).

CameraWorldMatrix 

Camera * world matrix.

NearFarPlane 

Vec2 containing near and far plane.

Time 

Debug timer.

MorphWeights 

Morph weights.

MorphIndices 

Morph indices.

    \since Kanzi 3.9.7 
MorphDataTexture 

Morph data texture.

    \since Kanzi 3.9.7 
MorphDataPositionOffset 

Morph position offset.

    \since Kanzi 3.9.7 
MorphDataNormalOffset 

Morph normal offset.

    \since Kanzi 3.9.7 
MorphDataTangentOffset 

Morph tangent offset.

    \since Kanzi 3.9.7 
MorphDataSize 

The combined size, in pixels, of all morph data elements.

    \since Kanzi 3.9.7 
MatrixPalette 

Bone matrices.

Count 

Number of fixed uniforms.

Invalid 

◆ UniformTransformation

How value for uniform should be transformed when setting uniform value.

Enumerator
UniformTransformationPassThrough 

No transformation.

UniformTransformationSRgbToLinear 

Convert from sRGB to linear.

UniformTransformationLinearToSRgb 

Convert from linear to sRGB.

UniformTransformationNotPresent 

Fixed uniform is not present.

UniformTransformationCount 

Number of uniform transformations.

◆ UniformBindingType

Uniform binding association type.

Enumerator
UniformBindingTypeNone 

No binding associated.

UniformBindingTypeDefault 

Default binding associated.

UniformBindingTypeManual 

Manual binding associated.

Constructor & Destructor Documentation

◆ ShaderProgram()

kanzi::ShaderProgram::ShaderProgram ( Domain * domain,
const CreateInfo & createInfo,
string_view name )
explicit

Constructor.

Parameters
domainDomain to use.
createInfoShader create info.
nameShader name.

Member Function Documentation

◆ createLoadTask()

static ResourceManager::LoadTaskSharedPtr kanzi::ShaderProgram::createLoadTask ( string_view name,
KzbFile * kzbFile,
ReadOnlyMemoryFilePtr file )
static

◆ create()

static ShaderProgramSharedPtr kanzi::ShaderProgram::create ( Domain * domain,
const CreateInfo & createInfo,
string_view name )
static

Create function.

Parameters
domainDomain to use.
createInfoShader create info.
nameShader name.

◆ getBlendingControl()

bool kanzi::ShaderProgram::getBlendingControl ( ) const
inline

Get shader blending control.

See also
setBlendingControlEnabled()
Returns
Shader blending control. If true, applying materials using this shader will set renderer blend mode.

◆ getPropertyTypeByName()

AbstractPropertyType kanzi::ShaderProgram::getPropertyTypeByName ( string_view propertyTypeName) const

Gets property type from shader program by name. Returns 0 if not found.

◆ beginFixedUniforms()

UniformContainerConstIterator kanzi::ShaderProgram::beginFixedUniforms ( ) const
inline

Gets a const iterator to the beginning of the fixed uniforms.

This is the same as the beginning of the uniform list.

Returns
Const iterator to the beginning of the fixed uniforms.

◆ endFixedUniforms()

UniformContainerConstIterator kanzi::ShaderProgram::endFixedUniforms ( ) const
inline

Gets a const iterator to the end of the fixed uniforms.

This is the same as the end of the uniform list if there is only fixed uniforms.

Returns
Const iterator to the end of the fixed uniforms.

◆ beginUniforms()

UniformContainerConstIterator kanzi::ShaderProgram::beginUniforms ( ) const
inline

Gets an const iterator to the beginning of the property uniforms.

Returns
Const iterator to the beginning of the property uniforms.

◆ endUniforms()

UniformContainerConstIterator kanzi::ShaderProgram::endUniforms ( ) const
inline

Gets an const iterator to the end of the property uniforms.

Returns
Const iterator to the end of the property uniforms.

◆ beginBindings()

BindingIterator kanzi::ShaderProgram::beginBindings ( ) const
inline

Gets an iterator to the beginning of bindings.

Returns
Iterator to the beginning of binding container.

◆ endBindings()

BindingIterator kanzi::ShaderProgram::endBindings ( ) const
inline

Gets an iterator to the end of bindings.

Returns
Iterator to the end of binding container.

◆ getProgramHandle()

unsigned int kanzi::ShaderProgram::getProgramHandle ( ) const

Get shader program handle.

Returns
Program handle.

◆ getVertexFormat()

const ShaderAttributeCollection & kanzi::ShaderProgram::getVertexFormat ( ) const

◆ bind()

void kanzi::ShaderProgram::bind ( ) const

Binds the shader program for rendering.

◆ hasSamplersWithoutProperties()

bool kanzi::ShaderProgram::hasSamplersWithoutProperties ( ) const

Return true if shader program has samplers that have no corresponding texture property.

◆ getTextureUniformLocation()

ShaderTextureUniform kanzi::ShaderProgram::getTextureUniformLocation ( unsigned int textureUnit) const

Returns texture size uniform locations from shader program.

◆ getUniformLocation()

int kanzi::ShaderProgram::getUniformLocation ( string_view name)

Get uniform location from the shader program by name.

Parameters
nameName of the uniform. Compared to the property name.
Returns
Uniform location in shader program, or -1 if uniform was not found in the shader program.

◆ getUniformElementCount()

unsigned int kanzi::ShaderProgram::getUniformElementCount ( string_view name)

Get uniform element count from the shader program by name.

Parameters
nameName of the uniform. Compared to the property name.
Returns
Element count from the uniform or 0 if uniform was not found in the shader program.

◆ getFixedUniformTransformation()

UniformTransformation kanzi::ShaderProgram::getFixedUniformTransformation ( FixedUniform fixedUniform) const

Get uniform transformation for a fixed uniform.

Parameters
fixedUniformFixed uniform to query.
Returns
Uniform transformation for requested fixed uniform.

◆ setStrictWarningLogged()

void kanzi::ShaderProgram::setStrictWarningLogged ( )
inline

◆ getStrictWarningLogged()

bool kanzi::ShaderProgram::getStrictWarningLogged ( ) const
inline

◆ reloadFromKzbOverride()

void kanzi::ShaderProgram::reloadFromKzbOverride ( KzbFile & kzbFile,
ReadOnlyMemoryFile & file,
KzbMemoryParser & parser )
overridevirtual

Resource::reloadFromKzbOverride() implementation.

Reimplemented from kanzi::Resource.

◆ isDeployedOverride()

bool kanzi::ShaderProgram::isDeployedOverride ( ) const
overridevirtual

GpuResoucre::isDeployedOverride() implementation.

Implements kanzi::GPUResource.

◆ reloadOverride()

void kanzi::ShaderProgram::reloadOverride ( )
overrideprotectedvirtual

Resource::reloadOverride() implementation.

Reimplemented from kanzi::Resource.

◆ invalidateOverride()

void kanzi::ShaderProgram::invalidateOverride ( )
overrideprotectedvirtual

GPUResource::invalidateOverride() implementation.

Reimplemented from kanzi::GPUResource.

◆ destroyOverride()

void kanzi::ShaderProgram::destroyOverride ( )
overrideprotectedvirtual

GPUResource::destroyOverride() implementation.

Reimplemented from kanzi::GPUResource.

Friends And Related Symbol Documentation

◆ swap

void swap ( ShaderProgram & shader1,
ShaderProgram & shader2 )
friend

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