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