1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
3	<head>
4		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5		<meta http-equiv="Content-Style-Type" content="text/css" />
6		<title>ShaderProgramDescriptionCtr</title>
7		<link rel="stylesheet" href="../css/mainpage.css" type="text/css" />
8	</head>
9	<body>
10		<h1>&lt;ShaderProgramDescriptionCtr&gt;</h1>
11		<h2>Description</h2>
12		<p>
13            Information describing the shader program.
14            </p>
15		<h2>Attributes</h2>
16		<table class="arguments">
17<thead><tr><td>Type</td><td>Attributes</td><td>Description</td></tr></thead>
18<tr><td /><th>VertexShaderIndex</th><td>The index number of the vertex shader in the file.</td></tr>
19<tr><td /><th>GeometryShaderIndex</th><td>The index number of the geometry shader in the file.</td></tr>
20<tr><td /><th>MaxBoneCount</th><td>The maximum number of bones that the vertex shader can accept as input.</td></tr>
21<tr><td /><th>MaxVertexLightCount</th><td>The maximum number of vertex lights that the vertex shader can accept as input.</td></tr>
22<tr><td /><th>VertexLightEndUniform</th><td>The end position of the uniform register used by vertex light.</td></tr>
23<tr><td /><th>IsSupportingRigidSkinning</th><td>Flag indicating whether the shader supports rigid skinning.</td></tr>
24<tr><td /><th>IsSupportingSmoothSkinning</th><td>Flag indicating whether the shader supports smooth skinning.</td></tr>
25<tr><td /><th>IsSupportingHemiSphereLighting</th><td>Flag indicating whether the shader supports hemispherical lighting.</td></tr>
26<tr><td /><th>IsSupportingVertexMorphShader</th><td>Flag indicating whether the shader supports vertex morphing.</td></tr>
27<tr><td /><th>GeometryShaderMode</th><td>The enumerated type representing the operational modes of the geometry shader.<BR> <strong>The standard runtime library does not support any specification except <CODE>None</CODE>.</strong></td></tr>
28</table>
29
30<h2>GeometryShaderMode enumerators</h2>
31
32<table class="arguments">
33	<thead><tr><td>Type</td><td>Attributes</td><td>Description</td></tr></thead>
34	<tr><td /><th>None</th><td>Geometry shader not being used. This is the normal case for rendering.</td></tr>
35	<tr><td /><th>Points</th><td>A point geometry shader.</td></tr>
36	<tr><td /><th>Lines</th><td>A line geometry shader.</td></tr>
37	<tr><td /><th>LineStrip</th><td>A LineStrip geometry shader.</td></tr>
38	<tr><td /><th>PointSprites</th><td>A PointSprite geometry shader.</td></tr>
39	<tr><td /><th>SilhouetteTriangles</th><td>A Triangle List with Silhouette geometry shader.</td></tr>
40	<tr><td /><th>SilhouetteStrip</th><td>A Triangle Strip with Silhouette geometry shader.</td></tr>
41	<tr><td /><th>Subdivision</th><td>A Subdivision geometry shader.</td></tr>
42	<tr><td /><th>SubdivisionLoop</th><td>A Subdivision Loop geometry shader.</td></tr>
43</table>
44
45<h2>&lt;Symbols&gt; element</h2>
46<p>
47Bundles together multiple shader symbols. Child elements hold a multitude of these elements:<br> BoolShaderSymbolCtr, Vector1ShaderSymbolCtr, Vector2ShaderSymbolCtr, Vector3ShaderSymbolCtr, Vector4ShaderSymbolCtr,
48</p>
49
50<h3>Shader symbol attributes</h3>
51		<table class="arguments">
52<thead><tr><td>Type</td><td>Attributes</td><td>Description</td></tr></thead>
53<tr><td /><th>Name</th><td>The name of the shader.</td></tr>
54<tr><td /><th>IsEnabled</th><td>
55This sets whether to use <CODE>DefaultValue</CODE> or user-defined values (the material's shader parameters).<br> If set to <CODE>true</CODE>, the default values defined by the child elements are applied.<br> If set to <CODE>false</CODE>, the material's shader parameters (<CODE><a href="cmdl__ShaderParamaters.html">&lt;ShaderParameters&gt;</a></CODE>) are used.
56</td></tr>
57</table>
58
59<h3>Shader symbol default values</h3>
60<p>
61The default values for shader symbols are defined as the child elements <CODE>boolean Vector1Xml Vector2Xml Vector3Xml Vector4Xml</CODE>.<br> These are used when the <CODE>IsEnabled</CODE> attribute is <CODE>true</CODE> or when there is no relevant uniform name for a given shader parameter.
62</p>
63
64
65<h2>&lt;AttributeSymbols&gt; element</h2>
66<p>
67Child elements hold the type information for numerous shaders (<CODE>&lt;AttributeSymbolCtr&gt;</CODE>).<br>
68
69</p>
70
71<h3><CODE>&lt;AttributeSymbolCtr&gt;</CODE> element attributes</h3>
72		<table class="arguments">
73<thead><tr><td>Type</td><td>Attributes</td><td>Description</td></tr></thead>
74<tr><td /><th>Usage</th><td><CODE>VertexAttributeCtrUsage</CODE> enumerator indicating how the attribute value is being used.</td></tr>
75<tr><td /><th>Name</th><td>The name of the attribute value.<br> The first character must be a lowercase &quot;<I>a</I>,&quot; which indicates that this is an attribute.</td></tr>
76</table>
77
78		<h3>VertexAttributeCtrUsage Enumerated Type</h3>
79		<table class="arguments">
80<thead><tr><td>Value</td><td>Description</td></tr></thead><tr><th>Position</th><td>Vertex position information.</td></tr><tr><th>Normal</th><td>Normal vector information of vertex.</td></tr><tr><th>Tangent</th><td>Tangent vector information of vertex.</td></tr><tr><th>Color</th><td>Vertex color information.</td></tr><tr><th>TextureCoordinate0</th><td>Texture coordinate 0 information of vertex.</td></tr><tr><th>TextureCoordinate1</th><td>Texture coordinate 1 information of vertex.</td></tr><tr><th>TextureCoordinate2</th><td>Texture coordinate 2 information of vertex.</td></tr><tr><th>BoneIndex</th><td>Bone index number information of vertex.</td></tr><tr><th>BoneWeight</th><td>Vertex bone weight information.</td></tr><tr><th>UserAttribute0</th><td>User attribute 0 information of vertex.</td></tr><tr><th>UserAttribute1</th><td>User attribute 1 information of vertex.</td></tr><tr><th>UserAttribute2</th><td>User attribute 2 information of vertex.</td></tr><tr><th>UserAttribute3</th><td>User attribute 3 information of vertex.</td></tr><tr><th>UserAttribute4</th><td>User attribute 4 information of vertex.</td></tr><tr><th>UserAttribute5</th><td>User attribute 5 information of vertex.</td></tr><tr><th>UserAttribute6</th><td>User attribute 6 information of vertex.</td></tr><tr><th>UserAttribute7</th><td>User attribute 7 information of vertex.</td></tr><tr><th>UserAttribute8</th><td>User attribute 8 information of vertex.</td></tr><tr><th>UserAttribute9</th><td>User attribute 9 information of vertex.</td></tr><tr><th>UserAttribute10</th><td>User attribute 10 information of vertex.</td></tr><tr><th>UserAttribute11</th><td>User attribute 11 information of vertex.</td></tr><tr><th>Interleave</th><td>Interleave format information.</td></tr></table>
81
82<h2>Example Output</h2>
83<table>
84<tr>
85<td><pre>
86&lt;ShaderCtr Name=&quot;ParticleDefaultShader&quot;&gt;<br></strong>
87  &lt;BinaryData&gt;RFZMQgIAAABQBwAAPAsAAER...&lt;/BinaryData&gt;<br>
88  &lt;ShaderKinds&gt;<br>
89    &lt;ShaderKindCtr&gt;VertexShader&lt;/ShaderKindCtr&gt;<br>
90    &lt;ShaderKindCtr&gt;GeometryShader&lt;/ShaderKindCtr&gt;<br>
91  &lt;/ShaderKinds&gt;<br>
92  &lt;Descriptions&gt;<br>
93<strong>    &lt;ShaderProgramDescriptionCtr <br>
94      VertexShaderIndex=&quot;0&quot; <br>
95      GeometryShaderIndex=&quot;1&quot; <br>
96      MaxBoneCount=&quot;0&quot; <br>
97      MaxVertexLightCount=&quot;0&quot; <br>
98      VertexLightEndUniform=&quot;60&quot; <br>
99      IsSupportingRigidSkinning=&quot;false&quot; <br>
100      IsSupportingSmoothSkinning=&quot;false&quot; <br>
101      IsSupportingHemiSphereLighting=&quot;false&quot; <br>
102      IsSupportingVertexMorphShader=&quot;false&quot; <br>
103      GeometryShaderMode=&quot;None&quot;&gt;<br></strong>
104      &lt;Symbols&gt;<br>
105        &lt;Vector4ShaderSymbolCtr Name=&quot;ShaderSymbol_1&quot; IsEnabled=&quot;true&quot;&gt;<br>
106	  &lt;Vector4Xml X=&quot;1&quot; Y=&quot;2&quot; Z=&quot;3&quot; W=&quot;4&quot; /&gt;<br>
107        &lt;/Vector4ShaderSymbolCtr&gt;<br>
108        &lt;BoolShaderSymbolCtr Name=&quot;ShaderSymbol_1&quot; IsEnabled=&quot;true&quot;&gt;<br>
109	  &lt;boolean&gt;true&lt;/boolean&gt;<br>
110        &lt;/BoolShaderSymbolCtr&gt;<br>
111      &lt;/Symbols&gt;<br>
112      &lt;AttributeSymbols&gt;<br>
113        &lt;AttributeSymbolCtr Usage=&quot;Position&quot; Name=&quot;aPosition&quot; /&gt;<br>
114        &lt;AttributeSymbolCtr Usage=&quot;Normal&quot; Name=&quot;aNormal&quot; /&gt;<br>
115        &lt;AttributeSymbolCtr Usage=&quot;Tangent&quot; Name=&quot;aTangent&quot; /&gt;<br>
116        &lt;AttributeSymbolCtr Usage=&quot;Color&quot; Name=&quot;aColor&quot; /&gt;<br>
117        &lt;AttributeSymbolCtr Usage=&quot;TextureCoordinate0&quot; Name=&quot;aTexCoord0&quot; /&gt;<br>
118        &lt;AttributeSymbolCtr Usage=&quot;TextureCoordinate1&quot; Name=&quot;aTexCoord1&quot; /&gt;<br>
119        &lt;AttributeSymbolCtr Usage=&quot;TextureCoordinate2&quot; Name=&quot;aTexCoord2&quot; /&gt;<br>
120        &lt;AttributeSymbolCtr Usage=&quot;BoneIndex&quot; Name=&quot;aBoneIndex&quot; /&gt;<br>
121        &lt;AttributeSymbolCtr Usage=&quot;BoneWeight&quot; Name=&quot;aBoneWeight&quot; /&gt;<br>
122        &lt;AttributeSymbolCtr Usage=&quot;UserAttribute0&quot; Name=&quot;aUserAttribute0&quot; /&gt;<br>
123        &lt;AttributeSymbolCtr Usage=&quot;UserAttribute1&quot; Name=&quot;aUserAttribute1&quot; /&gt;<br>
124        &lt;AttributeSymbolCtr Usage=&quot;UserAttribute2&quot; Name=&quot;aUserAttribute2&quot; /&gt;<br>
125      &lt;/AttributeSymbols&gt;<br><strong>
126    &lt;/ShaderProgramDescriptionCtr&gt;<br></strong>
127  &lt;/Descriptions&gt;<br>
128<strong>&lt;/ShaderCtr&gt;<br></strong>
129</pre></td>
130</tr></table>
131
132	<hr><p>CONFIDENTIAL</p></body>
133</html>