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