GPU/Internal Registers: Difference between revisions

Steveice10 (talk | contribs)
Steveice10 (talk | contribs)
Line 6,428: Line 6,428:
|}
|}


These registers (along with _Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.
These registers (along with GPUREG_LIGHT''i''_Z) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.


=== GPUREG_LIGHT''i''_Z ===
=== GPUREG_LIGHT''i''_Z ===
Line 6,440: Line 6,440:
|}
|}


These registers (along with _XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.
These registers (along with GPUREG_LIGHT''i''_XY) represent the light position (for a positional light) or the light direction vector (for a directional light) of the corresponding light.


=== GPUREG_LIGHT''i''_SPOTDIR_XY ===
=== GPUREG_LIGHT''i''_SPOTDIR_XY ===
Line 6,449: Line 6,449:
|-
|-
| 0-12
| 0-12
| fixed1.1.11, X coordinate (Usually the input value is negated)
| fixed1.1.11, X coordinate (negated)
|-
|-
| 16-28
| 16-28
| fixed1.1.11, Y coordinate (Usually the input value is negated)
| fixed1.1.11, Y coordinate (negated)
|}
|}


These registers (along with _Z) represent the spot direction (unitary) vector of the corresponding light.
These registers (along with GPUREG_LIGHT''i''_SPOTDIR_Z) represent the spot direction (unitary) vector of the corresponding light.


=== GPUREG_LIGHT''i''_SPOTDIR_Z ===
=== GPUREG_LIGHT''i''_SPOTDIR_Z ===
Line 6,464: Line 6,464:
|-
|-
| 0-12
| 0-12
| fixed1.1.11, Z coordinate (Usually the input value is negated)
| fixed1.1.11, Z coordinate (negated)
|}
|}


These registers (along with _XY) represent the spot direction (unitary) vector of the corresponding light.
These registers (along with GPUREG_LIGHT''i''_SPOTDIR_XY) represent the spot direction (unitary) vector of the corresponding light.


=== GPUREG_LIGHT''i''_CONFIG ===
=== GPUREG_LIGHT''i''_CONFIG ===
Line 6,487: Line 6,487:
| unsigned, Use geometric factor 1 (0 = don't use, 1 = use)
| unsigned, Use geometric factor 1 (0 = don't use, 1 = use)
|}
|}
This register configures a light's properties.


=== GPUREG_LIGHT''i''_ATTENUATION_BIAS ===
=== GPUREG_LIGHT''i''_ATTENUATION_BIAS ===
Line 6,498: Line 6,500:
|}
|}


These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is lut_DA(clip(bias + scale*distance, 0.0, 1.0)).
These registers contain the distance attenuation bias value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).


=== GPUREG_LIGHT''i''_ATTENUATION_SCALE ===
=== GPUREG_LIGHT''i''_ATTENUATION_SCALE ===
Line 6,510: Line 6,512:
|}
|}


These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is lut_DA(clip(bias + scale*distance, 0.0, 1.0)).
These registers contain the distance attenuation scale value of the corresponding light. The attenuation factor is DA(clip(bias + scale*distance, 0.0, 1.0)).


=== GPUREG_LIGHTING_AMBIENT ===
=== GPUREG_LIGHTING_AMBIENT ===
Line 6,539: Line 6,541:
| unsigned, Number of active lights - 1
| unsigned, Number of active lights - 1
|}
|}
This register configures the number of active lights.


=== GPUREG_LIGHTING_CONFIG0 ===
=== GPUREG_LIGHTING_CONFIG0 ===
Line 6,588: Line 6,592:
| 0x1
| 0x1
|}
|}
This register configures the light environment.


Fresnel selector values:
Fresnel selector values:
Line 6,765: Line 6,771:
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)
| unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled)
|}
|}
This register is used to disable various aspects of the light environment.


=== GPUREG_LIGHTING_LUT_INDEX ===
=== GPUREG_LIGHTING_LUT_INDEX ===
Line 6,779: Line 6,787:
|}
|}


This register controls which LUT and what offset into it the LUT_DATA register writes to.
This register controls which LUT and what offset into it the GPUREG_LIGHTING_LUT_DATA''i'' register writes to.


Lookup table values:
Lookup table values:
Line 6,910: Line 6,918:
| unsigned, Input selector for RR
| unsigned, Input selector for RR
|}
|}
This register selects the input from LUTs.


Input selector values:
Input selector values:
Line 7,021: Line 7,031:
| unsigned, ID of the 8th enabled light
| unsigned, ID of the 8th enabled light
|}
|}
This register sets the IDs of enabled light sources.


== Geometry pipeline registers ==
== Geometry pipeline registers ==