<ShaderProgramDescriptionCtr>

Description

Information describing the shader program.

Attributes

TypeAttributesDescription
VertexShaderIndexThe index number of the vertex shader in the file.
GeometryShaderIndexThe index number of the geometry shader in the file.
MaxBoneCountThe maximum number of bones that the vertex shader can accept as input.
MaxVertexLightCountThe maximum number of vertex lights that the vertex shader can accept as input.
VertexLightEndUniformThe end position of the uniform register used by vertex light.
IsSupportingRigidSkinningFlag indicating whether the shader supports rigid skinning.
IsSupportingSmoothSkinningFlag indicating whether the shader supports smooth skinning.
IsSupportingHemiSphereLightingFlag indicating whether the shader supports hemispherical lighting.
IsSupportingVertexMorphShaderFlag indicating whether the shader supports vertex morphing.
GeometryShaderModeThe enumerated type representing the operational modes of the geometry shader.
The standard runtime library does not support any specification except None.

GeometryShaderMode enumerators

TypeAttributesDescription
NoneGeometry shader not being used. This is the normal case for rendering.
PointsA point geometry shader.
LinesA line geometry shader.
LineStripA LineStrip geometry shader.
PointSpritesA PointSprite geometry shader.
SilhouetteTrianglesA Triangle List with Silhouette geometry shader.
SilhouetteStripA Triangle Strip with Silhouette geometry shader.
SubdivisionA Subdivision geometry shader.
SubdivisionLoopA Subdivision Loop geometry shader.

<Symbols> element

Bundles together multiple shader symbols. Child elements hold a multitude of these elements:
BoolShaderSymbolCtr, Vector1ShaderSymbolCtr, Vector2ShaderSymbolCtr, Vector3ShaderSymbolCtr, Vector4ShaderSymbolCtr,

Shader symbol attributes

TypeAttributesDescription
NameThe name of the shader.
IsEnabled This sets whether to use DefaultValue or user-defined values (the material's shader parameters).
If set to true, the default values defined by the child elements are applied.
If set to false, the material's shader parameters (<ShaderParameters>) are used.

Shader symbol default values

The default values for shader symbols are defined as the child elements boolean Vector1Xml Vector2Xml Vector3Xml Vector4Xml.
These are used when the IsEnabled attribute is true or when there is no relevant uniform name for a given shader parameter.

<AttributeSymbols> element

Child elements hold the type information for numerous shaders (<AttributeSymbolCtr>).

<AttributeSymbolCtr> element attributes

TypeAttributesDescription
UsageVertexAttributeCtrUsage enumerator indicating how the attribute value is being used.
NameThe name of the attribute value.
The first character must be a lowercase "a," which indicates that this is an attribute.

VertexAttributeCtrUsage Enumerated Type

ValueDescription
PositionVertex position information.
NormalNormal vector information of vertex.
TangentTangent vector information of vertex.
ColorVertex color information.
TextureCoordinate0Texture coordinate 0 information of vertex.
TextureCoordinate1Texture coordinate 1 information of vertex.
TextureCoordinate2Texture coordinate 2 information of vertex.
BoneIndexBone index number information of vertex.
BoneWeightVertex bone weight information.
UserAttribute0User attribute 0 information of vertex.
UserAttribute1User attribute 1 information of vertex.
UserAttribute2User attribute 2 information of vertex.
UserAttribute3User attribute 3 information of vertex.
UserAttribute4User attribute 4 information of vertex.
UserAttribute5User attribute 5 information of vertex.
UserAttribute6User attribute 6 information of vertex.
UserAttribute7User attribute 7 information of vertex.
UserAttribute8User attribute 8 information of vertex.
UserAttribute9User attribute 9 information of vertex.
UserAttribute10User attribute 10 information of vertex.
UserAttribute11User attribute 11 information of vertex.
InterleaveInterleave format information.

Example Output

<ShaderCtr Name="ParticleDefaultShader">
<BinaryData>RFZMQgIAAABQBwAAPAsAAER...</BinaryData>
<ShaderKinds>
<ShaderKindCtr>VertexShader</ShaderKindCtr>
<ShaderKindCtr>GeometryShader</ShaderKindCtr>
</ShaderKinds>
<Descriptions>
<ShaderProgramDescriptionCtr
VertexShaderIndex="0"
GeometryShaderIndex="1"
MaxBoneCount="0"
MaxVertexLightCount="0"
VertexLightEndUniform="60"
IsSupportingRigidSkinning="false"
IsSupportingSmoothSkinning="false"
IsSupportingHemiSphereLighting="false"
IsSupportingVertexMorphShader="false"
GeometryShaderMode="None">
<Symbols>
<Vector4ShaderSymbolCtr Name="ShaderSymbol_1" IsEnabled="true">
<Vector4Xml X="1" Y="2" Z="3" W="4" />
</Vector4ShaderSymbolCtr>
<BoolShaderSymbolCtr Name="ShaderSymbol_1" IsEnabled="true">
<boolean>true</boolean>
</BoolShaderSymbolCtr>
</Symbols>
<AttributeSymbols>
<AttributeSymbolCtr Usage="Position" Name="aPosition" />
<AttributeSymbolCtr Usage="Normal" Name="aNormal" />
<AttributeSymbolCtr Usage="Tangent" Name="aTangent" />
<AttributeSymbolCtr Usage="Color" Name="aColor" />
<AttributeSymbolCtr Usage="TextureCoordinate0" Name="aTexCoord0" />
<AttributeSymbolCtr Usage="TextureCoordinate1" Name="aTexCoord1" />
<AttributeSymbolCtr Usage="TextureCoordinate2" Name="aTexCoord2" />
<AttributeSymbolCtr Usage="BoneIndex" Name="aBoneIndex" />
<AttributeSymbolCtr Usage="BoneWeight" Name="aBoneWeight" />
<AttributeSymbolCtr Usage="UserAttribute0" Name="aUserAttribute0" />
<AttributeSymbolCtr Usage="UserAttribute1" Name="aUserAttribute1" />
<AttributeSymbolCtr Usage="UserAttribute2" Name="aUserAttribute2" />
</AttributeSymbols>
</ShaderProgramDescriptionCtr>
</Descriptions>
</ShaderCtr>

CONFIDENTIAL