Changes

773 bytes added ,  15:32, 11 April 2015
Rewrite most of this page.
Line 1: Line 1:  
This page describes the [[GPU_Commands|GPU commands]] used for textures.
 
This page describes the [[GPU_Commands|GPU commands]] used for textures.
   −
== Command set 0x0081 ==
+
== Texture unit setup: Register 0x80 ==
 +
Register 0x80 is used to enable individual texture units.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Command Index
+
Bit
!  CommandID
  −
!  Parameter
   
!  Description
 
!  Description
 
|-
 
|-
 
| 0
 
| 0
| 0x0081
+
| Enable texture unit 0.
|
  −
| This is used to set the current texture info used for rendering.
   
|-
 
|-
 
| 1
 
| 1
| 0x008E
+
| Enable texture unit 1.
| u32 color type
+
|-
| This sets the current texture color type.
+
| 2
 +
| Enable texture unit 2.
 
|}
 
|}
   −
Textures are initially disabled when beginning rendering for each mesh, this command set also enables textures. This command set is used for index0, commands 0x0091 and 0x0099 are used for index1-index2.
+
== Configuration of texture unit 0 ==
 
  −
=== Texture info parameter structure for command 0x0081 ===
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Index Word
+
Register ID
 
!  Description
 
!  Description
 
|-
 
|-
| 0
+
| 0x0081
| ?
+
| Border color (unverified)
 +
|-
 +
| 0x0082
 +
| Bits 16-31 are the texture width. Bits 0-15 are the texture height. The maximum texture size in either direction is 1024.
 +
|-
 +
| 0x0083
 +
| Texture parameters (filtering, wrapping), see below.
 +
|-
 +
| 0x0084
 +
| LOD setup?
 +
|-
 +
| 0x0085
 +
| Physical address of texture data (divided by 8).
 +
|-
 +
| 0x0086
 +
| Physical address of texture data for cube mapping?
 +
|-
 +
| 0x0087
 +
| Physical address of texture data for cube mapping?
 +
|-
 +
| 0x0088
 +
| Physical address of texture data for cube mapping?
 +
|-
 +
| 0x0089
 +
| Physical address of texture data for cube mapping?
 
|-
 
|-
| 1
+
| 0x008A
| The low u16 is the texture image width, and the high u16 is the texture image height.
+
| Physical address of texture data for cube mapping?
 
|-
 
|-
| 2
+
| 0x008B
| Texture parameters, initialized by glTexParameter().
+
| Shadow related?
 
|-
 
|-
| 3
+
| 0x008E
| ?
+
| Texture format (see below)
 +
|}
 +
 
 +
== Configuration of texture units 1 and 2 ==
 +
Texture units 1 and 2 use a configuration block similar to the one of texture unit 0. They are based at registers 0x0091 and 0x0099.
 +
 
 +
{| class="wikitable" border="1"
 +
!  Index word
 +
!  Description
 
|-
 
|-
| 4
+
| 0-4
| Texture image data physical address >> 3.
+
| Same as for texture unit 0
 
|-
 
|-
| 5-9
+
| 5
| Value zero
+
| Texture format (see below)
 
|}
 
|}
 +
 +
== Configuration of texture unit 3 ==
 +
The configuration block for texture unit 3 seems to be vastly different from the other texture units. Instead, registers 0x00A8 through 0x00B7 are used to configure procedural texturing features.
    
== Texture info parameter structure for commands 0x0091 and 0x0099 ==
 
== Texture info parameter structure for commands 0x0091 and 0x0099 ==
549

edits