Linked shader program on the GPU. More...

#include <Urho3D/Graphics/OpenGL/OGLShaderProgram.h>

Inheritance diagram for Urho3D::ShaderProgram:
[legend]
Collaboration diagram for Urho3D::ShaderProgram:
[legend]

Public Member Functions

 ShaderProgram (Graphics *graphics, ShaderVariation *vertexShader, ShaderVariation *pixelShader)
 Construct.
 
 ~ShaderProgram () override
 Destruct.
 
void OnDeviceLost () override
 Mark the GPU resource destroyed on context destruction.
 
void Release () override
 Release shader program.
 
bool Link ()
 Link the shaders and examine the uniforms and samplers used. Return true if successful.
 
ShaderVariationGetVertexShader () const
 Return the vertex shader.
 
ShaderVariationGetPixelShader () const
 Return the pixel shader.
 
bool HasParameter (StringHash param) const
 Return whether uses a shader parameter.
 
bool HasTextureUnit (TextureUnit unit) const
 Return whether uses a texture unit.
 
const ShaderParameterGetParameter (StringHash param) const
 Return the info for a shader parameter, or null if does not exist.
 
const StringGetLinkerOutput () const
 Return linker output.
 
const HashMap< Pair< unsigned char, unsigned char >, unsigned > & GetVertexAttributes () const
 Return semantic to vertex attributes location mappings used by the shader.
 
unsigned GetUsedVertexAttributes () const
 Return attribute location use bitmask.
 
const SharedPtr< ConstantBuffer > * GetConstantBuffers () const
 Return all constant buffers.
 
bool NeedParameterUpdate (ShaderParameterGroup group, const void *source)
 Check whether a shader parameter group needs update. Does not actually check whether parameters exist in the shaders.
 
void ClearParameterSource (ShaderParameterGroup group)
 Clear a parameter source. Affects only the current shader program if appropriate.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
 RefCounted (const RefCounted &rhs)=delete
 Prevent copy construction.
 
RefCountedoperator= (const RefCounted &rhs)=delete
 Prevent assignment.
 
void AddRef ()
 Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting.
 
void ReleaseRef ()
 Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting.
 
int Refs () const
 
int WeakRefs () const
 
RefCountRefCountPtr ()
 Return pointer to the reference count structure.
 
- Public Member Functions inherited from Urho3D::GPUObject
 GPUObject (Graphics *graphics)
 Construct with graphics subsystem pointer.
 
virtual ~GPUObject ()
 Destruct. Remove from the Graphics.
 
virtual void OnDeviceReset ()
 Recreate the GPU resource and restore data if applicable.
 
void ClearDataLost ()
 Clear the data lost flag.
 
GraphicsGetGraphics () const
 Return the graphics subsystem associated with this GPU object.
 
void * GetGPUObject () const
 Return the object pointer. Applicable only on Direct3D.
 
unsigned GetGPUObjectName () const
 Return the object name. Applicable only on OpenGL.
 
bool IsDataLost () const
 
bool HasPendingData () const
 Return whether has pending data assigned while graphics context was lost.
 

Static Public Member Functions

static void ClearParameterSources ()
 Clear all parameter sources from all shader programs by incrementing the global parameter source framenumber.
 
static void ClearGlobalParameterSource (ShaderParameterGroup group)
 Clear a global parameter source when constant buffers change.
 

Private Attributes

WeakPtr< ShaderVariationvertexShader_
 Vertex shader.
 
WeakPtr< ShaderVariationpixelShader_
 Pixel shader.
 
HashMap< StringHash, ShaderParametershaderParameters_
 Shader parameters.
 
bool useTextureUnits_ [MAX_TEXTURE_UNITS] {}
 Texture unit use.
 
HashMap< Pair< unsigned char, unsigned char >, unsigned > vertexAttributes_
 Vertex attributes.
 
unsigned usedVertexAttributes_ {}
 Used vertex attribute location bitmask.
 
SharedPtr< ConstantBufferconstantBuffers_ [MAX_SHADER_PARAMETER_GROUPS *2]
 Constant buffers by binding index.
 
const void * parameterSources_ [MAX_SHADER_PARAMETER_GROUPS] {}
 Remembered shader parameter sources for individual uniform mode.
 
String linkerOutput_
 Shader link error string.
 
unsigned frameNumber_ {}
 Shader parameter source framenumber.
 

Static Private Attributes

static unsigned globalFrameNumber = 0
 Global shader parameter source framenumber.
 
static const void * globalParameterSources [MAX_SHADER_PARAMETER_GROUPS]
 Remembered global shader parameter sources for constant buffer mode.
 

Additional Inherited Members

- Protected Attributes inherited from Urho3D::GPUObject
WeakPtr< Graphicsgraphics_
 Graphics subsystem.
 
GPUObjectHandle object_ {}
 Object pointer or name.
 
bool dataLost_ {}
 Data lost flag.
 
bool dataPending_ {}
 Data pending flag.
 

Detailed Description

Linked shader program on the GPU.


The documentation for this class was generated from the following files:
  • Source/Urho3D/Graphics/OpenGL/OGLShaderProgram.h
  • Source/Urho3D/Graphics/OpenGL/OGLShaderProgram.cpp