Line 45: |
Line 45: |
| | 0x4 | | | 0x4 |
| | 0x4 | | | 0x4 |
− | | Unknown, same value as in DVLE. (Possibly a version number?) | + | | Unknown, same value as in DVLE. (Likely a version number) |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 95: |
Line 95: |
| | 0x4 | | | 0x4 |
| | 0x2 | | | 0x2 |
− | | Unknown, same value as in DVLP. (Possibly a version number?) | + | | Unknown, same value as in DVLP. (Likely a version number) |
| |- | | |- |
| | 0x6 | | | 0x6 |
Line 103: |
Line 103: |
| | 0x7 | | | 0x7 |
| | 0x1 | | | 0x1 |
− | | true = merge vertex/geometry shader outmaps ('dummy' output attribute is present) | + | | true = merge vertex and geometry shader outmaps (geometry shader) |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 187: |
Line 187: |
| |- | | |- |
| | 0x0 | | | 0x0 |
− | | 0x1 | + | | 0x2 |
| | Label ID | | | Label ID |
| + | |- |
| + | | 0x0 |
| + | | 0x2 |
| + | | Unknown (always 1?) |
| |- | | |- |
| | 0x4 | | | 0x4 |
Line 196: |
Line 200: |
| | 0x8 | | | 0x8 |
| | 0x4 | | | 0x4 |
− | | ? | + | | Size of label's location (in words). 0xFFFFFFFF/(uint32_t)-1 if there is no size. |
| |- | | |- |
| | 0xC | | | 0xC |
Line 206: |
Line 210: |
| === Constant Table Entry === | | === Constant Table Entry === |
| | | |
− | Each executable's constants are stored as in a constant table. This information is used by ctrulib's SHDR framework to automatically send those values to the GPU when changing to a given program. An entry is constituted by a header and the constant data, the latter of which uses a format specific to the constant type. | + | Each executable's constants are stored in a constant table. This information is used by ctrulib's SHDR framework to automatically send those values to the GPU when changing to a given program. An entry is constituted by a header and the constant data, the latter of which uses a format specific to the constant type. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 220: |
Line 224: |
| | 0x2 | | | 0x2 |
| | 0x1 | | | 0x1 |
− | | Constant ID | + | | Constant register ID |
| |} | | |} |
| | | |
Line 237: |
Line 241: |
| | 0x2 | | | 0x2 |
| | 0x1 | | | 0x1 |
− | | Constant bool ID | + | | Boolean constant register ID |
| |- | | |- |
| | 0x4 | | | 0x4 |
Line 256: |
Line 260: |
| | 0x2 | | | 0x2 |
| | 0x1 | | | 0x1 |
− | | Constant integer vector ID | + | | Integer constant register ID |
| |- | | |- |
| | 0x4 | | | 0x4 |
Line 287: |
Line 291: |
| | 0x2 | | | 0x2 |
| | 0x1 | | | 0x1 |
− | | Constant vector ID | + | | floating-point constant register ID |
| |- | | |- |
| | 0x4 | | | 0x4 |
Line 309: |
Line 313: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Bit | + | ! Offset |
| + | ! Size |
| ! Description | | ! Description |
| |- | | |- |
− | | 0-3 | + | | 0x0 |
| + | | 0x2 |
| | Output type (see table below) | | | Output type (see table below) |
| |- | | |- |
− | | 16-19 | + | | 0x2 |
| + | | 0x2 |
| | Register ID | | | Register ID |
| |- | | |- |
− | | 32-35 | + | | 0x4 |
| + | | 0x2 |
| | Output attribute component mask (e.g. 5=xz) | | | Output attribute component mask (e.g. 5=xz) |
| + | |- |
| + | | 0x6 |
| + | | 0x2 |
| + | | Unknown (Consistently the same number throughout the DVLE, may vary between DVLEs?) |
| + | |- |
| |} | | |} |
| | | |
Line 325: |
Line 338: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! ID | + | ! Type |
| ! Description | | ! Description |
| |- | | |- |
Line 360: |
Line 373: |
| Keep in mind that the usage of the term "Uniform" here is used as [https://developer.download.nvidia.com/CgTutorial/cg_tutorial_chapter03.html defined by Nvidia] (variable who obtains its initial value from an external environment) and not as defined by RenderMan/GLSL (variables whose values are constant over a shaded surface). | | Keep in mind that the usage of the term "Uniform" here is used as [https://developer.download.nvidia.com/CgTutorial/cg_tutorial_chapter03.html defined by Nvidia] (variable who obtains its initial value from an external environment) and not as defined by RenderMan/GLSL (variables whose values are constant over a shaded surface). |
| | | |
− | The uniform table contains a list of all registers whose initial values are derived by an external source. | + | The uniform table contains a list of all registers whose initial values are derived by an external source along with their layout and associated symbol. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |