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