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><Needs Study></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>