Line 26: |
Line 26: |
| | Parameter mask | | | Parameter mask |
| |- | | |- |
− | | 20-30 | + | | 20-27 |
| | Number of extra parameters (may be zero) | | | Number of extra parameters (may be zero) |
| + | |- |
| + | | 28-30 |
| + | | Unused |
| |- | | |- |
| | 31 | | | 31 |
Line 4,158: |
Line 4,161: |
| | | |
| These registers map components of the corresponding vertex shader output register to specific fixed-function semantics. | | These registers map components of the corresponding vertex shader output register to specific fixed-function semantics. |
| + | |
| + | Semantics that have not been mapped to a component of an output register have a value of 1 |
| | | |
| Semantic values: | | Semantic values: |
Line 4,993: |
Line 4,998: |
| | unsigned, Minification filter | | | unsigned, Minification filter |
| |- | | |- |
− | | 3-10 | + | | 3-6 |
− | | 0x60 | + | | Min LOD (usually 0) |
| + | |- |
| + | | 7-10 |
| + | | Max LOD (usually 6) |
| |- | | |- |
| | 11-18 | | | 11-18 |
Line 5,037: |
Line 5,045: |
| |- | | |- |
| | 0-7 | | | 0-7 |
− | | unsigned, Texture offset | + | | unsigned, Texture offset (Mipmap level 0 / base level) |
| + | |- |
| + | | 8-15 |
| + | | unsigned, mipmap level 1 offset (usually 0x80) |
| + | |- |
| + | | 16-23 |
| + | | unsigned, mipmap level 2 offset (usually 0xC0) |
| |- | | |- |
− | | 8-31 | + | | 24-31 |
− | | 0xE0C080 | + | | unsigned, mipmap level 3 offset (usually 0xE0) |
| |} | | |} |
| | | |
− | This register is used to set the procedural texture unit's offset. | + | This register is used to set the procedural texture unit's offset. Mipmap level 4-7 seems to be hardcoded at offset 0xF0, 0xF8, 0xFC and 0xFE . |
| | | |
| === GPUREG_PROCTEX_LUT === | | === GPUREG_PROCTEX_LUT === |
Line 5,105: |
Line 5,119: |
| |- | | |- |
| | 12-23 | | | 12-23 |
− | | fixed1.0.11, Difference from next element | + | | fixed0.0.12 with two's complement ( [0.5,1.0) mapped to [-1.0,0) ), Difference from next element |
| |} | | |} |
| | | |
Line 5,119: |
Line 5,133: |
| |- | | |- |
| | 12-23 | | | 12-23 |
− | | fixed1.0.11, Difference from next element | + | | fixed0.0.12 with two's complement, Difference from next element |
| |} | | |} |
| | | |
Line 5,133: |
Line 5,147: |
| |- | | |- |
| | 12-23 | | | 12-23 |
− | | fixed1.0.11, Difference from next element | + | | fixed0.0.12 with two's complement, Difference from next element |
| |} | | |} |
| | | |
Line 5,164: |
Line 5,178: |
| |- | | |- |
| | 0-7 | | | 0-7 |
− | | fixed1.0.7, Red difference between current and next color table elements | + | | signed, Half of red difference between current and next color table elements |
| |- | | |- |
| | 8-15 | | | 8-15 |
− | | fixed1.0.7, Green difference between current and next color table elements | + | | signed, Half of green difference between current and next color table elements |
| |- | | |- |
| | 16-23 | | | 16-23 |
− | | fixed1.0.7, Blue difference between current and next color table elements | + | | signed, Half of blue difference between current and next color table elements |
| |- | | |- |
| | 24-31 | | | 24-31 |
− | | fixed1.0.7, Alpha difference between current and next color table elements | + | | signed, Half of alpha difference between current and next color table elements |
| |} | | |} |
| | | |
Line 5,239: |
Line 5,253: |
| | Previous | | | Previous |
| |} | | |} |
| + | |
| + | Using previous source in the first TEV stage returns the primary color, while previous buffer returns zero. |
| | | |
| === GPUREG_TEXENV''i''_OPERAND === | | === GPUREG_TEXENV''i''_OPERAND === |
Line 5,703: |
Line 5,719: |
| This register is used to configure the blending function. | | This register is used to configure the blending function. |
| | | |
− | Equation values: | + | '''Equation values:''' |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 5,725: |
Line 5,741: |
| |} | | |} |
| | | |
− | Function values: | + | Blend equations 5, 6, 7 appear to behave the same as blend equation 0 (Add) |
| + | |
| + | '''Function values:''' |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 6,363: |
Line 6,381: |
| | 0-7 | | | 0-7 |
| | unsigned, View shading effect in line-of-sight direction | | | unsigned, View shading effect in line-of-sight direction |
| + | |- |
| + | | 8 |
| + | | Gas color LUT input |
| |} | | |} |
| | | |
− | This register configures gas light shading in the line-of-sight direction. | + | This register configures gas light shading in the line-of-sight direction, and the input to the gas color LUT. |
| + | |
| + | Color LUT input values: |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | Gas density |
| + | |- |
| + | | 1 |
| + | | Light factor |
| + | |} |
| | | |
| === GPUREG_GAS_LUT_INDEX === | | === GPUREG_GAS_LUT_INDEX === |
Line 6,433: |
Line 6,467: |
| | 0-23 | | | 0-23 |
| | fixed0.16.8, Depth direction attenuation proportion | | | fixed0.16.8, Depth direction attenuation proportion |
| + | |- |
| + | | 24-25 |
| + | | unsigned, Depth function |
| |} | | |} |
| | | |
− | This register is used to configure the gas depth direction attenuation proportion. | + | This register is used to configure the gas depth direction attenuation proportion, as well as the gas depth function. |
| + | |
| + | Gas depth function values: |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | Never |
| + | |- |
| + | | 1 |
| + | | Always |
| + | |- |
| + | | 2 |
| + | | Greater than/Greater than or equal |
| + | |- |
| + | | 3 |
| + | | Less than/Less than or equal/Equal/Not equal |
| + | |} |
| | | |
| === GPUREG_FRAGOP_SHADOW === | | === GPUREG_FRAGOP_SHADOW === |
Line 6,850: |
Line 6,906: |
| | unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled) | | | unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled) |
| |- | | |- |
− | | 20-22 | + | | 20 |
− | | unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled) | + | | unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 1 = disabled) |
| |- | | |- |
| | 21 | | | 21 |
− | | unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled) | + | | unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 1 = disabled) |
| |- | | |- |
| | 22 | | | 22 |
− | | unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled) | + | | unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 1 = disabled) |
| |- | | |- |
| | 24 | | | 24 |
Line 7,675: |
Line 7,731: |
| | | |
| This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit. | | This register sets whether to use the geometry shader configuration or reuse the vertex shader configuration for the geometry shader shading unit. |
| + | When disabled and the geometry unit is not in use, as configured by GPUREG_GEOSTAGE_CONFIG, uniforms, outmap mask, program code and swizzle data are propagated to the geometry shader unit. |
| | | |
| === GPUREG_START_DRAW_FUNC0 === | | === GPUREG_START_DRAW_FUNC0 === |