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>