Copy Link
Add to Bookmark
Report
Some notes on the Tiling Accelerator
Some notes on the Tiling Accelerator:
update: filled in some stuff about blending modes and clarified and corrected
some stuff.
2001-08-18 update: filled in some stuff on sprites and modifier volumes
Note: There are a few different incarnations of the PowerVR-chipset and they
are not completely compatible with each other. Unfortunately previous versions
of this document contained information only relevant to the older CLX1 chipset
whereas the Dreamcast uses a chipset similar to the newer CLX2. Information has
now been updated and where differences exist they are noted with the tags CLX1
and CLX2. [This note was mistakenly excluded from the previous version.]
The interface used to communicate with the Tiling Accelerator is mapped to
memory at address 0x10000000. The normal mode of operation is not to access
this area directly but to use either the two Store Queues of the SH-4, or DMA
(currently not described in this document) to send information to it.
A transfer to the TA can be up to 64 bytes, which is the maximum size of the
two store queues. The full contents of a Store Queue is always sent, so it is
only possible to send either 32 bytes or 64 bytes to the Tiling Accelerator.
The data of such a transfer is hereafter referred to as a list, which is the
smallest piece of information the Tiling Accelerator can process.
A list consists of a command followed by parameters whose format depend on the
command. The general format for a list is as follows:
The first word is the command and consists of:
+-----------------+
bit: | 31-29 | 28-0 |
name:| cmd | options |
+-----------------+
cmd: 0 - END_OF_LIST
1 - USER_CLIP
2 - ???
3 - ???
4 - POLYGON / MODIFIER_VOLUME
5 - SPRITE
6 - ???
7 - VERTEX
options: The format of the options changes depending on the command.
This first word is followed by either 7 or 15 words of parameters, to make a
list of 32 or 64 bytes. Since the format changes for these, I will list the
commands, the options and the parameters together with a short description of
what they do. Reserved or unused options and parameters should be set to 0.
--------------------------------------------------------------------------------
Command 0 - END_OF_LIST:
Options:
~~~~~~~~
+----------------------+
| 28-0 |
| reserved? (set to 0) |
+----------------------+
Parameters:
~~~~~~~~~~~
1-7: Not used
Description:
~~~~~~~~~~~~
Sent after all data of a specific listtype has been sent to the Tiling
Accelerator and will generate an IRQ when registration for that listtype
has been completed. After terminating a listtype with this list it is not
possible to send more instances of that listtype in the same registration
process.
--------------------------------------------------------------------------------
Command 1 - USER_CLIP
Options:
~~~~~~~~
+----------------------+
| 28-0 |
| reserved? (set to 0) |
+----------------------+
Parameters:
~~~~~~~~~~~
1-3: Not used
4: +---------------------+
| 31-0 |
| Xmin |
+---------------------+
5: +---------------------+
| 31-0 |
| Ymin |
+---------------------+
6: +---------------------+
| 31-0 |
| Xmax |
+---------------------+
7: +---------------------+
| 31-0 |
| Ymax |
+---------------------+
Description:
~~~~~~~~~~~~
Sets the User Clipping for the Tile Buffer
--------------------------------------------------------------------------------
Command 4 - POLYGON / MODIFIER_VOLUME
Command 5 - SPRITE
Options:
~~~~~~~~
+----------------------------------------------------------+
| 28-27 | 26-24 | 23 | 22-20 | 19-18 |
| reserved? | listtype | unknown | reserved? | striplength |
+----------------------------------------------------------+
+--------------------------------------------------------------+
| 17-16 | 15-8 | 7 | 6 | 5-4 |
| clipmode | reserved? | modifier | modifier mode | colourtype |
+--------------------------------------------------------------+
+------------------------------------------+
| 3 | 2 | 1 | 0 |
| texture | specular | shading | UV format |
+------------------------------------------+
listtype (26-24):
~~~~~~~~~~~~~~~~~
0: opaque polygon
1: opaque modifier (only valid for MODIFIER)
2: transparent polygon
3: transparent modifier (only valid for MODIFIER)
4: punchthru polygon
striplength (19-18):
~~~~~~~~~~~~~~~~~~~~
0: striplength 1
1: striplength 2
2: striplength 4
3: striplength 6
clipmode (17-16):
~~~~~~~~~~~~~~~~~
0: disable user clip
1: reserved
2: user clip inside
3: user clip outside
modifier (7):
~~~~~~~~~~~~~
0: polygon is not affected by modifier volume
1: polygon is affected by modifier volume (only valid for POLYGON)
modifier mode (6):
~~~~~~~~~~~~~~~~~~
0: cheap shadow modifier
1: normal modifier
colour type (5-4):
~~~~~~~~~~~~~~~~~
0: 32bit ARGB packed colour
1: 32bit * 4 floating point colour (not valid for SPRITES)
2: intensity (not valid for SPRITES)
3: intensity from previous face (not valid for SPRITES)
texture (3):
~~~~~~~~~~~~
0: disable texture
1: enable texture
specular (2):
~~~~~~~~~~~~~
0: disable specular highlight
1: enable specular highlight (not valid for SPRITES)
shading (1):
~~~~~~~~~~~~
0: flat shading
1: gouraud shading (not valid for SPRITES)
UV format (0):
~~~~~~~~~~~~~~
0: 32 bit float (not valid for SPRITES)
1: 16 bit float
if polygon (listtype 0, 2, 4) is specified (for a POLYGON or SPRITE list):
1: +-------------------------------------------------------+
| 31-29 | 28-27 | 26 | 25 | 24 |
| depthmode | cullingmode | zwrite | texture | specular |
+-------------------------------------------------------+
+-----------------------------------------------------------+
| 23 | 22 | 21 | 20 | 19-0 |
| shading | UVFormat | reserved? | D calc exact | reserved? |
+-----------------------------------------------------------+
depthmode (31-29):
~~~~~~~~~~~~~~~~~~
0: never
1: less
2: equal
3: lessequal
4: greater
5: notequal
6: greaterequal
7: always
cullingmode (28-27):
~~~~~~~~~~~~~~~~~~~~
0: disable culling
1: cull small
2: cull counterclockwise
3: cull clockwise
zwrite (26):
~~~~~~~~~~~~
0: enable zwrite
1: disable zwrite
texture (25):
~~~~~~~~~~~~~
0: disable texture
1: enable texture
specular (24): (this doesnt seem correct; redundant + non-working)
~~~~~~~~~~~~~~
0: disable specular highlight
1: enable specular highlight
shading (23): (this doesnt seem correct; redundant + non-working)
~~~~~~~~~~~~~
0: flat shading
1: gouraud shading
UVFormat (22): (this doesnt seem correct; redundant + non-working)
~~~~~~~~~~~~~~
0: 32-bit float
1: 16-bit float
D calc exact (20):
~~~~~~~~~~~~~~~~~~
0: approximate mipmap D parameter
1: calculate mipmap D parameter exact
2: +-----------------------------------------------------------------+
| 31-29 | 28-26 | 25 | 24 | 23-22 | 21 | 20 |
| srcblend | dstblend | srcmode | dstmode | fog | clamp | alpha |
+-----------------------------------------------------------------+
+-------------------------------------------------------------------+
| 19 | 18-17 | 16-15 | 14-12 | 11-8 | 7-6 |
| text.alpha | UV flip | UV clamp | filter | mipmap | text. shading |
+-------------------------------------------------------------------+
+---------------+
| 5-3 | 2-0 |
| Usize | Vsize |
+---------------+
(blending info is not completely accurate)
srcblend (31-29):
~~~~~~~~~~~~~~~~~
0: zero (0, 0, 0, 0)
1: one (1, 1, 1, 1)
2: dst colour (ad, Rd, Gd, Bd)
3: inverse dst colour (1 - ad, 1 - Rd, 1 - Gd, 1 - Bd)
4: src alpha (as, as, as, as)
5: inverse src alpha (1 - as, 1 - as, 1 - as, 1 - as)
6: dst alpha (ad, ad, ad, ad)
7: inverse dst alpha (1 - ad, 1 - ad, 1 - ad, 1 - ad)
dstblend (28-26):
~~~~~~~~~~~~~~~~~
0: zero (0, 0, 0, 0)
1: one (1, 1, 1, 1)
2: src colour (as, Rs, Gs, Bs)
3: inverse src colour (1 - as, 1 - Rs, 1 - Gs, 1 - Bs)
4: src alpha (as, as, as, as)
5: inverse src alpha (1 - as, 1 - as, 1 - as, 1 - as)
6: dst alpha (ad, ad, ad, ad)
7: inverse dst alpha (1 - ad, 1 - ad, 1 - ad, 1 - ad)
srcmode (25):
~~~~~~~~~~~~~
0: disable src blending
1: enable src blending
dstmode (24):
~~~~~~~~~~~~~
0: disable dst blending
1: enable dst blending
fog (23-22):
~~~~~~~~~~~~
0: fog table
1: fog vertex
2: fog disabled
3: fog table2
clamp (21):
~~~~~~~~~~~
0: disable colour clamping
1: enable colour clamp
alpha (20):
~~~~~~~~~~~
0: disable alpha bit
1: enable alpha bit
texture alpha (19):
~~~~~~~~~~~~~~~~~~~
0: enable texture transparency
1: disable texture transparency
UV flip (18-17):
~~~~~~~~~~~~~~~~
0: disable UV flipping
1: flip V when repeating texture
2: flip U when repeating texture
3: flip U and V when repeating texture
UV clamp (16-15):
~~~~~~~~~~~~~~~~~
0: disable UV clamping
1: clamp V
2: clamp U
3: clamp U and V
filter (14-12):
~~~~~~~~~~~~~~~
0: point sample
1: bi-linear
2: ???
3: ???
4: tri-linear, one pass
5: ???
6: tri-linear, two passes
7: ???
mipmap (11-8):
~~~~~~~~~~~~~~
0: reserved?
1: D=0.25
2: D=0.50
3: D=0.75
4: D=1.00 (normal mode)
5: D=1.25
6: D=1.50
7: D=1.75
8: D=2.00
9: D=2.25
10: D=2.50
11: D=2.75
12: D=3.00
13: D=3.25
14: D=3.50
15: D=3.75
texture shading (7-6):
~~~~~~~~~~~~~~~~~~~~~~
0: colour = texture-RGB + offset-RGB
alpha = texture-alpha
1: colour = shading-RGB * texture-RGB + offset-RGB
alpha = texture-alpha
2: colour = (texture-RGB * texture-alpha)
+ (shading-RGB * (1 - texture-alpha)) + offset-RGB
alpha = shading-alpha
3: colour = (texture-RGB * shading-RGB) + offset-RGB
alpha = shading-alpha * texture-alpha
Usize (5-3):
~~~~~~~~~~~~
0: 8 pixels
1: 16 pixels
2: 32 pixels
3: 64 pixels
4: 128 pixels
5: 256 pixels
6: 512 pixels
7: 1024 pixels
Vsize (2-0):
~~~~~~~~~~~~
0: 8 pixels
1: 16 pixels
2: 32 pixels
3: 64 pixels
4: 128 pixels
5: 256 pixels
6: 512 pixels
7: 1024 pixels
if texture is specified:
3: +--------------------------------------------------------+
| 31 | 30 | 29-27 | 26-21 | 20-0 |
| mipmap | VQ | pixelformat | special* | texture surface |
+--------------------------------------------------------+
mipmap (31):
~~~~~~~~~~~~
0: disable mipmap
1: enable mipmap
VQ (30):
~~~~~~~~
0: disable compression
1: enable VQ compression for texture
pixelformat for texture (29-27):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0: ARGB15555
1: RGB565
2: ARGB4444
3: YUV422
4: BUMP
5: 4BPP_PALETTE
6: 8BPP_PALETTE
texture surface (20-0):
~~~~~~~~~~~~~~~~~~~~~~~
address in framebuffer for texture surface.
lowest 3 bits of address is automatically read as 0 and added.
special* (26-21):
~~~~~~~~~~~~~~~~
in palette mode these bits specify palette bank to be used.
in other cases they mean the following:
+-------------------------------------------+
| 26-25 | 24 | 23-22 | 21 |
| reserved? | twiddled | reserved? | stride |
+-------------------------------------------+
twiddled (24):
~~~~~~~~~~~~~~
0: twiddled texture
1: non-twiddled texture
stride (21):
~~~~~~~~~~~~
0: no stride
1: stride
if colour type intensity (2) is specified (also used for colours of SPRITES?):
4: +-------------------------+
| 31-0 |
| BaseColourAlpha (float) |
+-------------------------+
5: +-----------------------+
| 31-0 |
| BaseColourRed (float) |
+-----------------------+
6: +-------------------------+
| 31-0 |
| BaseColourGreen (float) |
+-------------------------+
7: +------------------------+
| 31-0 |
| BaseColourBlue (float) |
+------------------------+
if colour type intensity (2) is specified together with specular hightlight:
4-7: Not used
8: +-------------------------+
| 31-0 |
| BaseColourAlpha (float) |
+-------------------------+
9: +-----------------------+
| 31-0 |
| BaseColourRed (float) |
+-----------------------+
10: +-------------------------+
| 31-0 |
| BaseColourGreen (float) |
+-------------------------+
11: +------------------------+
| 31-0 |
| BaseColourBlue (float) |
+------------------------+
12: +---------------------------+
| 31-0 |
| OffsetColourAlpha (float) |
+---------------------------+
13: +-------------------------+
| 31-0 |
| OffsetColourRed (float) |
+-------------------------+
14: +---------------------------+
| 31-0 |
| OffsetColourGreen (float) |
+---------------------------+
15: +--------------------------+
| 31-0 |
| OffsetColourBlue (float) |
+--------------------------+
if modifier volume (listtype 1, 3) is specified:
1: +-----------------------------------+
| 31-29 | 28-0 |
| ModifierInstruction | reservered? |
+-----------------------------------+
ModifierInstruction (31-29):
~~~~~~~~~~~~~~~~~~~~~~~~~~~
0: other polygon
1: first polygon in inclusion volume
2: last polygon in exclusion volume
2-7: Not used
Description:
~~~~~~~~~~~~
This list does not draw any primitives but sets up the environent for primitives
following. One or more VERTEX lists are expected to follow and it is an error to
send any other list until the VERTEX lists have been sent and terminated (see
description of VERTEX below for elaboration).
A POLYGON is a standard polygon in 3d-space. A MODIFIER_VOLUME is a special
type of polygon that is never directly drawn but interacts with other
polygons. Depending on whether the polygons are inside or outside the
MODIFIER_VOLUME, different parameters for texturing, shading etc. will be
used. This can be an effective way of simulating shadows etc. A SPRITE is a
polygon in 2d-space, meaning it will not have to perform any kind of
perspective-correcting texturing or shading calculations (hence it will
generally be faster to render).
POLYGONS use any of the below VERTICES (except type 15, 16, and 17) depending
on the environment specified. SPRITES use types 15, 16 depending on whether
texturing is enabled whereas MODIFIER_VOLUMES always use type 17.
--------------------------------------------------------------------------------
Command 7 - VERTEX
Options:
~~~~~~~~
+----------------------------+
| 28 | 27-0 |
| eos | reserved? (set to 0) |
+----------------------------+
eos (28):
~~~~~~~~~
0: normal vertex
1: end-of-strip (indicates last vertex has been sent)
Parameters:
~~~~~~~~~~~
Parameters depend on the environment set by the POLYGON, MODIFIER_VOLUME, or
SPRITE list that must precede this. The eos-bit should be set for the last
vertex sent in a triangle-strip. In cases of SPRITE-lists this must always be
set because they contain all the vertices inside one VERTEX-list (this is
possibly also true for MODIFIER_VOLUMES). The different types depend on what
is specified in the previous environment. Using the wrong type may cause
unpredictable behaviour.
type 0: non-textured, packed-colour:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: CLX1: CLX2:
+-------------+ Not used
| 31-0 |
| Base Colour |
+-------------+
5: Not used
6: CLX1: CLX2:
Not used +-------------+
| 31-0 |
| Base Colour |
+-------------+
7: Not used
type 1: non-textured, floating colour:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +---------------------------+
| 31-0 |
| Base Colour Alpha (float) |
+---------------------------+
5: +-------------------------+
| 31-0 |
| Base Colour Red (float) |
+-------------------------+
6: +---------------------------+
| 31-0 |
| Base Colour Green (float) |
+---------------------------+
7: +--------------------------+
| 31-0 |
| Base Colour Blue (float) |
+--------------------------+
type 2: non-textured, intensity:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: CLX1: CLX2:
+------------------------+ Not used
| 31-0 |
| Base Intensity (float) |
+------------------------+
5: Not used
6: CLX1: CLX2:
Not used +------------------------+
| 31-0 |
| Base Intensity (float) |
+------------------------+
7: Not used
type 3: textured, packed-colour:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +------------+
| 31-0 |
| U (float) |
+------------+
5: +------------+
| 31-0 |
| V (float) |
+------------+
6: +-------------+
| 31-0 |
| Base Colour |
+-------------+
7: +---------------+
| 31-0 |
| Offset Colour |
+---------------+
type 4: textured, packed-colour, 16bit UV:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +-----------------------+
| 31-16 | 15-0 |
| U (float) | V (float) |
+-----------------------+
5: Not used
6: +-------------+
| 31-0 |
| Base Colour |
+-------------+
7: +---------------+
| 31-0 |
| Offset Colour |
+---------------+
type 5: textured, floating colour:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +------------+
| 31-0 |
| U (float) |
+------------+
5: +------------+
| 31-0 |
| V (float) |
+------------+
6-7: Not used
8: +---------------------------+
| 31-0 |
| Base Colour Alpha (float) |
+---------------------------+
9: +-------------------------+
| 31-0 |
| Base Colour Red (float) |
+-------------------------+
10: +---------------------------+
| 31-0 |
| Base Colour Green (float) |
+---------------------------+
11: +--------------------------+
| 31-0 |
| Base Colour Blue (float) |
+--------------------------+
12: +-----------------------------+
| 31-0 |
| Offset Colour Alpha (float) |
+-----------------------------+
13: +---------------------------+
| 31-0 |
| Offset Colour Red (float) |
+---------------------------+
14: +-----------------------------+
| 31-0 |
| Offset Colour Green (float) |
+-----------------------------+
15: +----------------------------+
| 31-0 |
| Offset Colour Blue (float) |
+----------------------------+
type 6: textured, floating colour, 16-bit UV
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +-----------------------+
| 31-16 | 15-0 |
| U (float) | V (float) |
+-----------------------+
5-7: Not used
8: +---------------------------+
| 31-0 |
| Base Colour Alpha (float) |
+---------------------------+
9: +-------------------------+
| 31-0 |
| Base Colour Red (float) |
+-------------------------+
10: +---------------------------+
| 31-0 |
| Base Colour Green (float) |
+---------------------------+
11: +--------------------------+
| 31-0 |
| Base Colour Blue (float) |
+--------------------------+
12: +-----------------------------+
| 31-0 |
| Offset Colour Alpha (float) |
+-----------------------------+
13: +---------------------------+
| 31-0 |
| Offset Colour Red (float) |
+---------------------------+
14: +-----------------------------+
| 31-0 |
| Offset Colour Green (float) |
+-----------------------------+
15: +----------------------------+
| 31-0 |
| Offset Colour Blue (float) |
+----------------------------+
type 7: textured, intensity
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +------------+
| 31-0 |
| U (float) |
+------------+
5: +------------+
| 31-0 |
| V (float) |
+------------+
6: +------------------------+
| 31-0 |
| Base Intensity (float) |
+------------------------+
7: +--------------------------+
| 31-0 |
| Offset Intensity (float) |
+--------------------------+
type 8: textured, intensity, 16-bit UV
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +------------------------+
| 31-16 | 15-0 |
| U (float) | V (float) |
+------------------------+
5: Not used
6: +------------------------+
| 31-0 |
| Base Intensity (float) |
+------------------------+
7: +--------------------------+
| 31-0 |
| Offset Intensity (float) |
+--------------------------+
type 9: non-textured, packed-color, affected by modifier volume
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +---------------+
| 31-0 |
| Base Colour 0 |
+---------------+
5: +---------------+
| 31-0 |
| Base Colour 1 |
+---------------+
6-7: Not used
type 10: non-textured, intensity, affected by modifier volume
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +---------------------+
| 31-0 |
| Intensity 0 (float) |
+---------------------+
5: +---------------------+
| 31-0 |
| Intensity 1 (float) |
+---------------------+
6-7: Not used
type 11: textured, packed-colour, affected by modifier volume:
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +-------------+
| 31-0 |
| U0 (float) |
+-------------+
5: +-------------+
| 31-0 |
| V0 (float) |
+-------------+
6: +---------------+
| 31-0 |
| Base Colour 0 |
+---------------+
7: +-----------------+
| 31-0 |
| Offset Colour 0 |
+-----------------+
8: +-------------+
| 31-0 |
| U1 (float) |
+-------------+
9: +-------------+
| 31-0 |
| V1 (float) |
+-------------+
10: +---------------+
| 31-0 |
| Base Colour 1 |
+---------------+
11: +-----------------+
| 31-0 |
| Offset Colour 1 |
+-----------------+
12-15: Not used
type 12: textured, packed-colour, 16-bit UV, affected by modifier volume
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +--------------+
| 31-16 | 15-0 |
| U0 | V0 |
+--------------+
5: Not used
6: +---------------+
| 31-0 |
| Base Colour 0 |
+---------------+
7: +-----------------+
| 31-0 |
| Offset Colour 0 |
+-----------------+
8: +--------------+
| 31-16 | 15-0 |
| U1 | V1 |
+--------------+
9: Not used
10: +---------------+
| 31-0 |
| Base Colour 1 |
+---------------+
11: +-----------------+
| 31-0 |
| Offset Colour 1 |
+-----------------+
12-15: Not used
type 13: textured, intensity, affected by modifier volume
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +-------------+
| 31-0 |
| U0 (float) |
+-------------+
5: +-------------+
| 31-0 |
| V0 (float) |
+-------------+
6: +--------------------------+
| 31-0 |
| Base Intensity 0 (float) |
+--------------------------+
7: +----------------------------+
| 31-0 |
| Offset Intensity 0 (float) |
+----------------------------+
8: +-------------+
| 31-0 |
| U1 (float) |
+-------------+
9: +-------------+
| 31-0 |
| V1 (float) |
+-------------+
10: +--------------------------+
| 31-0 |
| Base Intensity 1 (float) |
+--------------------------+
11: +----------------------------+
| 31-0 |
| Offset Intensity 1 (float) |
+----------------------------+
12-15: Not used
type 14: textured, intensity, 16-bit UV, affected by modifier volume
1: +------------+
| 31-0 |
| X (float) |
+------------+
2: +------------+
| 31-0 |
| Y (float) |
+------------+
3: +------------+
| 31-0 |
| Z (float) |
+------------+
4: +--------------+
| 31-16 | 15-0 |
| U0 | V0 |
+--------------+
5: Not used
6: +--------------------------+
| 31-0 |
| Base Intensity 0 (float) |
+--------------------------+
7: +----------------------------+
| 31-0 |
| Offset Intensity 0 (float) |
+----------------------------+
8: +--------------+
| 31-16 | 15-0 |
| U1 | V1 |
+--------------+
9: Not used
10: +--------------------------+
| 31-0 |
| Base Intensity 1 (float) |
+--------------------------+
11: +----------------------------+
| 31-0 |
| Offset Intensity 1 (float) |
+----------------------------+
12-15: Not used
type 15: non-textured sprite
1: +-------------+
| 31-0 |
| AX (float) |
+-------------+
2: +-------------+
| 31-0 |
| AY (float) |
+-------------+
3: +-------------+
| 31-0 |
| AZ (float) |
+-------------+
4: +-------------+
| 31-0 |
| BX (float) |
+-------------+
5: +-------------+
| 31-0 |
| BY (float) |
+-------------+
6: +-------------+
| 31-0 |
| BZ (float) |
+-------------+
7: +-------------+
| 31-0 |
| CX (float) |
+-------------+
8: +-------------+
| 31-0 |
| CY (float) |
+-------------+
9: +-------------+
| 31-0 |
| CZ (float) |
+-------------+
10: +-------------+
| 31-0 |
| DX (float) |
+-------------+
11: +-------------+
| 31-0 |
| DY (float) |
+-------------+
12-15: Not used
type 16: textured sprite
1: +-------------+
| 31-0 |
| AX (float) |
+-------------+
2: +-------------+
| 31-0 |
| AY (float) |
+-------------+
3: +-------------+
| 31-0 |
| AZ (float) |
+-------------+
4: +-------------+
| 31-0 |
| BX (float) |
+-------------+
5: +-------------+
| 31-0 |
| BY (float) |
+-------------+
6: +-------------+
| 31-0 |
| BZ (float) |
+-------------+
7: +-------------+
| 31-0 |
| CX (float) |
+-------------+
8: +-------------+
| 31-0 |
| CY (float) |
+-------------+
9: +-------------+
| 31-0 |
| CZ (float) |
+-------------+
10: +-------------+
| 31-0 |
| DX (float) |
+-------------+
11: +-------------+
| 31-0 |
| DY (float) |
+-------------+
12: Not used
13: +--------------+
| 31-16 | 15-0 |
| AU | AV |
+--------------+
14: +--------------+
| 31-16 | 15-0 |
| BU | BV |
+--------------+
15: +--------------+
| 31-16 | 15-0 |
| CU | CV |
+--------------+
type 17: shadow volume
1: +-------------+
| 31-0 |
| AX (float) |
+-------------+
2: +-------------+
| 31-0 |
| AY (float) |
+-------------+
3: +-------------+
| 31-0 |
| AZ (float) |
+-------------+
4: +-------------+
| 31-0 |
| BX (float) |
+-------------+
5: +-------------+
| 31-0 |
| BY (float) |
+-------------+
6: +-------------+
| 31-0 |
| BZ (float) |
+-------------+
7: +-------------+
| 31-0 |
| CX (float) |
+-------------+
8: +-------------+
| 31-0 |
| CY (float) |
+-------------+
9: +-------------+
| 31-0 |
| CZ (float) |
+-------------+
10-15: Not used
Description:
~~~~~~~~~~~~
Most of these should be self-explanatory, but a few maybe need to be clarified.
If a polygon is affected by a MODIFIER_VOLUME it should use type 9-14 which
have two instances of every parameter. This means that the parts of the polygon
(if any) that are outside the MODIFIER_VOLUME will use the first set of
parameters, while those parts inside will use the second set.