SHBIN: Difference between revisions

Oreo639 (talk | contribs)
mNo edit summary
Oreo639 (talk | contribs)
Update DVOJ section
 
(6 intermediate revisions by the same user not shown)
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 127: Line 127:
|  0x15
|  0x15
|  0x1
|  0x1
|  Starting float uniform register number for storing the fixed-size primitive vertex array (geometry shader, fixed mode)
|  Starting float constant register number for storing the fixed-size primitive vertex array (geometry shader, fixed mode)
|-
|-
|  0x16
|  0x16
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 constant uniform 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
Uniform ID
Constant register ID
|}
|}


Line 237: Line 241:
|  0x2
|  0x2
|  0x1
|  0x1
Uniform bool ID
Boolean constant register ID
|-
|-
|  0x4
|  0x4
Line 256: Line 260:
|  0x2
|  0x2
|  0x1
|  0x1
Uniform integer vector ID
Integer constant register ID
|-
|-
|  0x4
|  0x4
Line 287: Line 291:
|  0x2
|  0x2
|  0x1
|  0x1
Uniform 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 357: Line 370:


=== Uniform Table Entry ===
=== Uniform Table Entry ===
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 along with their layout and associated symbol.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 369: Line 387:
|  0x4
|  0x4
|  0x2
|  0x2
Variable start register
Register index of the start of the uniform
|-
|-
|  0x6
|  0x6
|  0x2
|  0x2
Variable end register (equal to start register for non-arrays)
Register index of the end of the uniform (equal to start register for non-arrays)
|-
|-
|}
|}
Line 415: Line 433:
|-
|-
|  0x04
|  0x04
0x4
0x2
|  Unknown. Seems to be related to the DVLE shader type.
|  Unknown. (Likely a version number)
|-
|  0x06
|  0x1
|  Shader type (0x0 = vertex shader, 0x1 = geometry shader; might contain other flags)
|-
|  0x07
|  0x1
|  true = merge vertex and geometry shader outmaps (geometry shader)
|-
|-
|  0x08
|  0x08
0x4
0x2
Unknown.
Bitmask of used input registers.
|-
|  0x10
|  0x2
|  Bitmask of used output registers.
|-
|-
|  0x0C
|  0x0C
Line 452: Line 482:
|  0x28
|  0x28
|  0x4
|  0x4
|  Offset (relative to DVLP start) to shader instruction extension table
|  Offset to operand descriptor table
|-
|-
|  0x2C
|  0x2C
|  0x4
|  0x4
|  Number of shader instruction extension table entries (each entry is 8-byte long)
|  Number of operand descriptor table entries (each entry is 8-bytes long)
|-
|-
|  0x30
|  0x30