1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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    <link rel="stylesheet" href="../../css/document.css" type="text/css" />
7    <title>Register Assignments</title>
8  </head>
9  <body>
10    <h1>Shader Registers</h1>
11    <h2 id="register_list">Shader Register List</h2>
12    <div class="section">
13      <ul>
14        <li>Registers listed in red must not be overwritten by anything other than the NW4C shader and geometry shader.</li>
15        <li>Registers listed in green can be changed by user shaders.</li>
16        <li>The remaining registers are in regions that are used by the library in the current version.</li>
17        <li>You can change the names of the input registers. The <B>Usage</B> column indicates items that must be specified.</li>
18      </ul>
19
20      <table class="register">
21        <tr><td colspan="5" bgcolor="#ffffff">Input Registers (12 registers)</td></tr>
22        <tr><th>Default Name</th><th>Default Register</th><th>Usage</th><th>Number</th><th>Description</th></tr>
23        <tr>
24          <td><CODE>aPosition.xyz</CODE></td>
25          <td><CODE>v0</CODE></td>
26          <td>Position</td>
27          <td>1</td>
28          <td>Position information of vertex</td>
29        </tr>
30        <tr>
31          <td><CODE>aNormal.xyz</CODE></td>
32          <td><CODE>v1</CODE></td>
33          <td>Normal</td>
34          <td>1</td>
35          <td>Normal vector information of vertex</td>
36        </tr>
37        <tr>
38          <td><CODE>aTangent.xyz</CODE></td>
39          <td><CODE>v2</CODE></td>
40          <td>Tangent</td>
41          <td>1</td>
42          <td>Tangent vector information of vertex</td>
43        </tr>
44        <tr>
45          <td><CODE>aColor</CODE></td>
46          <td><CODE>v3</CODE></td>
47          <td>Color</td>
48          <td>1</td>
49          <td>Color information of vertex (<CODE>w</CODE> is used together with the hemispherical light alpha)</td>
50        </tr>
51        <tr>
52          <td><CODE>aTexCoord0.xy</CODE></td>
53          <td><CODE>v4</CODE></td>
54          <td>TexCoord0</td>
55          <td>1</td>
56          <td>Texture coordinate information of vertex</td>
57        </tr>
58        <tr>
59          <td><CODE>aTexCoord1.xy</CODE></td>
60          <td><CODE>v5</CODE></td>
61          <td>TexCoord1</td>
62          <td>1</td>
63          <td>Texture coordinate information of vertex</td>
64        </tr>
65        <tr>
66          <td><CODE>aTexCoord2.xy</CODE></td>
67          <td><CODE>v6</CODE></td>
68          <td>TexCoord2</td>
69          <td>1</td>
70          <td>Texture coordinate information of vertex</td>
71        </tr>
72        <tr>
73          <td><CODE>aBoneIndex</CODE></td>
74          <td><CODE>v7</CODE></td>
75          <td>BoneIndex</td>
76          <td>1</td>
77          <td>Bone index number information of vertex</td>
78        </tr>
79        <tr>
80          <td><CODE>aBoneWeight</CODE></td>
81          <td><CODE>v8</CODE></td>
82          <td>BoneWeight</td>
83          <td>1</td>
84          <td>Vertex bone weight information</td>
85        </tr>
86        <tr>
87          <td><CODE>aUserAttribute?</CODE></td>
88          <td><CODE>v9</CODE>-<CODE>v11</CODE></td>
89          <td>UserAttribute?</td>
90          <td>0~12</td>
91          <td>User attribute information of vertex</td>
92        </tr>
93      </table>
94      <table class="register">
95        <tr><td colspan="4" bgcolor="#ffffff">Constant Registers (96 registers)</td></tr>
96        <tr><th>Name</th><th>Registers</th><th>Number</th><th>Description</th></tr>
97        <tr>
98          <td><CODE>WrldMtx</CODE></td>
99          <td><CODE>c0</CODE></td>
100          <td>3</td>
101          <td>World matrix</td>
102        </tr>
103        <tr>
104          <td><CODE>NormMtx</CODE></td>
105          <td><CODE>c3</CODE></td>
106          <td>3</td>
107          <td>Normal matrix</td>
108        </tr>
109        <tr>
110          <td><CODE>PosOffs</CODE></td>
111          <td><CODE>c6</CODE></td>
112          <td>1</td>
113          <td>Position offset for input registers</td>
114        </tr>
115        <tr>
116          <td rowspan="3"><CODE>IrScale</CODE></td>
117          <td rowspan="3"><CODE>c7</CODE></td>
118          <td rowspan="3">2</td>
119          <td>Scale for input register</td>
120        </tr>
121        <tr>
122          <td><CODE>m00</CODE>: Position, <CODE>m01</CODE>: Normal, <CODE>m02</CODE>: Tangent, <CODE>m03</CODE>: Color</td>
123        </tr>
124        <tr>
125          <td><CODE>m10</CODE>: TexCoord0, <CODE>m11</CODE>: TexCoord1, <CODE>m12</CODE>: TexCoord2, <CODE>m13</CODE>: BoneWeight</td>
126        </tr>
127        <tr>
128          <td>-</td>
129          <td>c8</td>
130          <td>1</td>
131          <td>Reserved</td>
132        </tr>
133        <tr>
134          <td rowspan="4"><CODE>Tex.xyz</CODE></td>
135          <td rowspan="4"><CODE>c10</CODE></td>
136          <td rowspan="4">1</td>
137          <td>Texture coordinate allocation</td>
138        </tr>
139        <tr>
140          <td><CODE>UvCoordinateMap(0.0-2.0)</CODE>, <CODE>CameraSphereEnvMap(0.0)</CODE>, <CODE>CameraCubeEnvMap(4.0)</CODE>, <CODE>ProjectionMap(0.0)</CODE></td>
141        </tr>
142        <tr>
143          <td><CODE>x</CODE>,<CODE>y</CODE>,<CODE>z</CODE>: <CODE>Texture0</CODE>, <CODE>Texture1</CODE>, <CODE>Texture2</CODE></td>
144        </tr>
145        <tr>
146          <td>Values <CODE>0</CODE> through <CODE>2</CODE> represent texture assignments, while <CODE>3</CODE> and <CODE>4</CODE> represent <CODE>Cube</CODE> and <CODE>SphereMap</CODE>, respectively.</td>
147        </tr>
148        <tr>
149          <td><CODE>TexMtx0</CODE></td>
150          <td><CODE>c11</CODE></td>
151          <td>3</td>
152          <td>Texture coordinate matrix <CODE>0</CODE></td>
153        </tr>
154        <tr>
155          <td><CODE>TexMtx1</CODE></td>
156          <td><CODE>c14</CODE></td>
157          <td>3</td>
158          <td>Texture coordinate matrix <CODE>1</CODE></td>
159        </tr>
160        <tr>
161          <td><CODE>TexMtx2</CODE></td>
162          <td><CODE>c17</CODE></td>
163          <td>2</td>
164          <td>Texture coordinate matrix <CODE>2</CODE></td>
165        </tr>
166        <tr>
167          <td><CODE>TexTran</CODE></td>
168          <td><CODE>c19</CODE></td>
169          <td>1</td>
170          <td>Texture translation (uses <CODE>Tex0</CODE> and <CODE>Tex1</CODE> projection maps)</td>
171        </tr>
172        <tr>
173          <td><CODE>MatAmbi</CODE></td>
174          <td><CODE>c20</CODE></td>
175          <td>1</td>
176          <td>Material ambient color (<CODE>w</CODE> = <CODE>VertexColorScale</CODE>)</td>
177        </tr>
178        <tr>
179          <td><CODE>MatDiff</CODE></td>
180          <td><CODE>c21</CODE></td>
181          <td>1</td>
182          <td>Material diffuse color</td>
183        </tr>
184        <tr>
185          <td><CODE>HslGCol</CODE></td>
186          <td bgcolor="#aaffaa"><CODE></CODE>c22</td>
187          <td>1</td>
188          <td>Ground color for hemispherical lighting</td>
189        </tr>
190        <tr>
191          <td><CODE>HslSCol</CODE></td>
192          <td bgcolor="#aaffaa"><CODE>c23</CODE></td>
193          <td>1</td>
194          <td>Space color for hemispherical lighting</td>
195        </tr>
196        <tr>
197          <td><CODE>HslSDir</CODE></td>
198          <td bgcolor="#aaffaa"><CODE>c24</CODE></td>
199          <td>1</td>
200          <td>Directional vector toward space for hemispherical lighting (<CODE>w</CODE> = <CODE>LerpFactor</CODE>)</td>
201        </tr>
202        <tr>
203          <td><CODE>UnivReg</CODE></td>
204          <td bgcolor="#aaffaa"><CODE>c25</CODE></td>
205          <td>60</td>
206          <td>Universal register (Mutable. Set first half for matrix palette, second half for lights)</td>
207        </tr>
208        <tr>
209          <td rowspan="7"><CODE>bn</CODE> = number of bones<br/><CODE>ln</CODE> = number of vertex lights</td>
210          <td rowspan="7" bgcolor="#aaffaa"></td>
211          <td>3 x <CODE>bn</CODE></td>
212          <td>Position matrix</td>
213        </tr>
214        <tr>
215          <td>1 x <CODE>ln</CODE></td>
216          <td>Light ambient color</td>
217        </tr>
218        <tr>
219          <td>1 x <CODE>ln</CODE></td>
220          <td>Light diffuse color</td>
221        </tr>
222        <tr>
223          <td>1 x <CODE>ln</CODE></td>
224          <td>Light position (<CODE>w</CODE> = <CODE>IsDirectionalLight</CODE>)</td>
225        </tr>
226        <tr>
227          <td>1 x <CODE>ln</CODE></td>
228          <td>Spotlight direction (<CODE>w</CODE> = <CODE>IsSpotLightEnabled</CODE>)</td>
229        </tr>
230        <tr>
231          <td>1 x <CODE>ln</CODE></td>
232          <td>Light distance attenuation parameters (<CODE>x</CODE> = <CODE>K0</CODE>,  <CODE>y</CODE> = <CODE>K1</CODE>, <CODE>z</CODE> = <CODE>K2</CODE>, <CODE>w</CODE> = <CODE>IsAttenuationDistanceEnabled</CODE>)</td>
233        </tr>
234        <tr>
235          <td>1 x <CODE>ln</CODE></td>
236          <td>Light spot parameters (<CODE>x</CODE> = <CODE>SpotExponent</CODE>, <CODE>y</CODE> = <CODE>SpotCutoffAngle</CODE>)</td>
237        </tr>
238        <tr>
239          <td>-</td>
240          <td bgcolor="#aaffaa"><CODE>c85</CODE></td>
241          <td>1</td>
242          <td>Empty</td>
243        </tr>
244        <tr>
245          <td><CODE>ProjMtx</CODE></td>
246          <td bgcolor="#ff7777"><CODE>c86</CODE></td>
247          <td>4</td>
248          <td>Projection matrix</td>
249        </tr>
250        <tr>
251          <td><CODE>ViewMtx</CODE></td>
252          <td bgcolor="#ff7777"><CODE>c90</CODE></td>
253          <td>3</td>
254          <td>View matrix.</td>
255        </tr>
256        <tr>
257          <td>-</td>
258          <td bgcolor="#ff7777"><CODE>c93</CODE></td>
259          <td>3</td>
260          <td>Constant value</td>
261        </tr>
262      </table>
263      <table class="register">
264        <tr><td colspan="4" bgcolor="#ffffff">Boolean Registers (16 registers)</td></tr>
265        <tr><th>Name</th><th>Registers</th><th>Number</th><th>Description</th></tr>
266        <tr>
267          <td></td>
268          <td bgcolor="#ff7777"><CODE>b0</CODE></td>
269          <td>1</td>
270          <td>Reserved by DMP</td>
271        </tr>
272        <tr>
273          <td><CODE>IsSmoSk</CODE></td>
274          <td><CODE>b1</CODE></td>
275          <td>1</td>
276          <td>Skinning ON/OFF</td>
277        </tr>
278        <tr>
279          <td><CODE>IsRgdSk</CODE></td>
280          <td><CODE>b2</CODE></td>
281          <td>1</td>
282          <td>Rigid skinning ON/OFF</td>
283        </tr>
284        <tr>
285          <td>-</td>
286          <td bgcolor="#aaffaa"><CODE>b3</CODE></td>
287          <td>1</td>
288          <td>Empty</td>
289        </tr>
290        <tr>
291          <td>-</td>
292          <td bgcolor="#aaffaa"><CODE>b4</CODE></td>
293          <td>1</td>
294          <td>Empty</td>
295        </tr>
296        <tr>
297          <td><CODE>IsHemiL</CODE></td>
298          <td bgcolor="#aaffaa"><CODE>b5</CODE></td>
299          <td>1</td>
300          <td>Hemispherical light ON/OFF</td>
301        </tr>
302        <tr>
303          <td><CODE>IsHemiO</CODE></td>
304          <td bgcolor="#aaffaa"><CODE>b6</CODE></td>
305          <td>1</td>
306          <td>Hemispherical light occlusion ON/OFF</td>
307        </tr>
308        <tr>
309          <td><CODE>IsVertA</CODE></td>
310          <td><CODE>b7</CODE></td>
311          <td>1</td>
312          <td>Vertex color alpha ON/OFF</td>
313        </tr>
314        <tr>
315          <td><CODE>IsBoneW</CODE></td>
316          <td><CODE>b8</CODE></td>
317          <td>1</td>
318          <td>Bone weight ON/OFF</td>
319        </tr>
320        <tr>
321          <td><CODE>UvMap0</CODE></td>
322          <td><CODE>b9</CODE></td>
323          <td>1</td>
324          <td>UV mapping <CODE>0</CODE> ON/OFF</td>
325        </tr>
326        <tr>
327          <td><CODE>UvMap1</CODE></td>
328          <td><CODE>b10</CODE></td>
329          <td>1</td>
330          <td>UV mapping <CODE>1</CODE> ON/OFF</td>
331        </tr>
332        <tr>
333          <td><CODE>UvMap2</CODE></td>
334          <td><CODE>b11</CODE></td>
335          <td>1</td>
336          <td>UV mapping <CODE>2</CODE> ON/OFF</td>
337        </tr>
338        <tr>
339          <td><CODE>IsVertL</CODE></td>
340          <td><CODE>b12</CODE></td>
341          <td>1</td>
342          <td>Vertex lighting ON/OFF</td>
343        </tr>
344        <tr>
345          <td><CODE>IsTex1</CODE></td>
346          <td><CODE>b13</CODE></td>
347          <td>1</td>
348          <td>Texture <CODE>1</CODE> ON/OFF</td>
349        </tr>
350        <tr>
351          <td><CODE>IsTex2</CODE></td>
352          <td><CODE>b14</CODE></td>
353          <td>1</td>
354          <td>Texture <CODE>2</CODE> ON/OFF</td>
355        </tr>
356        <tr>
357          <td><CODE>IsQuate</CODE></td>
358          <td><CODE>b15</CODE></td>
359          <td>1</td>
360          <td>Quaternion calculation ON/OFF</td>
361        </tr>
362      </table>
363      <table class="register">
364        <tr><td colspan="4" bgcolor="#ffffff">Integer Registers (4 registers)</td></tr>
365        <tr><th>Name</th><th>Registers</th><th>Number</th><th>Description</th></tr>
366        <tr>
367          <td><CODE>LightCt</CODE></td>
368          <td><CODE>i0</CODE></td>
369          <td>1</td>
370          <td>Number of vertex lights (loop counter)</td>
371        </tr>
372        <tr>
373          <td></td>
374          <td bgcolor="#aaffaa"><CODE>i1</CODE></td>
375          <td>1</td>
376          <td>Empty</td>
377        </tr>
378        <tr>
379          <td></td>
380          <td bgcolor="#aaffaa"><CODE>i2</CODE></td>
381          <td>1</td>
382          <td>Empty</td>
383        </tr>
384        <tr>
385          <td></td>
386          <td bgcolor="#aaffaa"><CODE>i3</CODE></td>
387          <td>1</td>
388          <td>Empty</td>
389        </tr>
390      </table>
391    </div>
392
393    <h2 id="register_allocation">Universal Register Assignments</h2>
394    <div class="section"><img src="images/UnivRegister.png" border="0" width="451" height="433"/></div>
395
396  <hr><p>CONFIDENTIAL</p></body>
397</html>
398