Vertex or pixel shader on the GPU. More...

#include <Urho3D/Graphics/ShaderVariation.h>

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

Public Member Functions

 ShaderVariation (Shader *owner, ShaderType type)
 Construct.
 
 ~ShaderVariation () override
 Destruct.
 
void OnDeviceLost () override
 Mark the GPU resource destroyed on graphics context destruction.
 
void Release () override
 Release the shader.
 
bool Create ()
 Compile the shader. Return true if successful.
 
void SetName (const String &name)
 Set name.
 
void SetDefines (const String &defines)
 Set defines.
 
ShaderGetOwner () const
 Return the owner resource.
 
ShaderType GetShaderType () const
 Return shader type.
 
const StringGetName () const
 Return shader name.
 
String GetFullName () const
 Return full shader name.
 
bool HasParameter (StringHash param) const
 Return whether uses a parameter. Not applicable on OpenGL, where this information is contained in ShaderProgram instead.
 
bool HasTextureUnit (TextureUnit unit) const
 Return whether uses a texture unit (only for pixel shaders). Not applicable on OpenGL, where this information is contained in ShaderProgram instead.
 
const HashMap< StringHash, ShaderParameter > & GetParameters () const
 Return all parameter definitions. Not applicable on OpenGL, where this information is contained in ShaderProgram instead.
 
unsigned long long GetElementHash () const
 Return vertex element hash.
 
const PODVector< unsigned char > & GetByteCode () const
 Return shader bytecode. Stored persistently on Direct3D11 only.
 
const StringGetDefines () const
 Return defines.
 
const StringGetCompilerOutput () const
 Return compile error/warning string.
 
const unsigned * GetConstantBufferSizes () const
 Return constant buffer data sizes.
 
const StringGetDefinesClipPlane ()
 Return defines with the CLIPPLANE define appended. Used internally on Direct3D11 only, will be empty on other APIs.
 
- 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 Attributes

static const char * elementSemanticNames []
 D3D11 vertex semantic names. Used internally. More...
 

Private Member Functions

bool LoadByteCode (const String &binaryShaderName)
 Load bytecode from a file. Return true if successful.
 
bool Compile ()
 Compile from source. Return true if successful.
 
void ParseParameters (unsigned char *bufData, unsigned bufSize)
 Inspect the constant parameters and input layout (if applicable) from the shader bytecode.
 
void SaveByteCode (const String &binaryShaderName)
 Save bytecode to a file.
 
void CalculateConstantBufferSizes ()
 Calculate constant buffer sizes from parameters.
 

Private Attributes

WeakPtr< Shaderowner_
 Shader this variation belongs to.
 
ShaderType type_
 Shader type.
 
unsigned long long elementHash_ {}
 Vertex element hash for vertex shaders. Zero for pixel shaders. Note that hashing is different than vertex buffers.
 
HashMap< StringHash, ShaderParameterparameters_
 Shader parameters.
 
bool useTextureUnits_ [MAX_TEXTURE_UNITS] {}
 Texture unit use flags.
 
unsigned constantBufferSizes_ [MAX_SHADER_PARAMETER_GROUPS] {}
 Constant buffer sizes. 0 if a constant buffer slot is not in use.
 
PODVector< unsigned char > byteCode_
 Shader bytecode. Needed for inspecting the input signature and parameters. Not used on OpenGL.
 
String name_
 Shader name.
 
String defines_
 Defines to use in compiling.
 
String definesClipPlane_
 Defines to use in compiling + CLIPPLANE define appended. Used only on Direct3D11.
 
String compilerOutput_
 Shader compile error string.
 

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

Vertex or pixel shader on the GPU.

Member Data Documentation

◆ elementSemanticNames

const char * Urho3D::ShaderVariation::elementSemanticNames
static
Initial value:
=
{
"POS",
"NORMAL",
"BINORMAL",
"TANGENT",
"TEXCOORD",
"COLOR",
"BLENDWEIGHT",
"BLENDINDICES",
"OBJECTINDEX"
}

D3D11 vertex semantic names. Used internally.


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