GPU/Internal Registers: Difference between revisions
Steveice10 (talk | contribs) |
Steveice10 (talk | contribs) |
||
Line 6,199: | Line 6,199: | ||
== Fragment lighting registers == | == Fragment lighting registers == | ||
=== | === GPUREG_LIGHT''i''_SPECULAR0 === | ||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Blue | |||
|- | |||
| 10-17 | |||
| unsigned, Green | |||
|- | |||
| 20-27 | |||
| unsigned, Red | |||
|} | |||
These registers contain the specular0 color of the corresponding light. Usually set to material_specular0*lightX_specular0. | |||
=== GPUREG_LIGHT''i''_SPECULAR1 === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Blue | |||
|- | |||
| 10-17 | |||
| unsigned, Green | |||
|- | |||
| 20-27 | |||
| unsigned, Red | |||
|} | |||
These registers contain the specular1 color of the corresponding light. Usually set to material_specular1*lightX_specular1. | |||
=== GPUREG_LIGHT''i''_DIFFUSE === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Blue | |||
|- | |||
| 10-17 | |||
| unsigned, Green | |||
|- | |||
| 20-27 | |||
| unsigned, Red | |||
|} | |||
These registers contain the diffuse color of the corresponding light. Usually set to material_diffuse*lightX_diffuse. | |||
=== GPUREG_LIGHT''i''_AMBIENT === | |||
=== | {| class="wikitable" border="1" | ||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Blue | |||
|- | |||
| 10-17 | |||
| unsigned, Green | |||
|- | |||
| 20-27 | |||
| unsigned, Red | |||
|} | |||
These registers contain the ambient color of the corresponding light. Usually set to material_ambient*lightX_ambient. | |||
=== GPUREG_LIGHT''i''_XY === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-15 | |||
| float1.5.10, X coordinate | |||
|- | |||
| 16-31 | |||
| float1.5.10, Y coordinate | |||
|} | |||
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. | |||
=== GPUREG_LIGHT''i''_Z === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-15 | |||
| float1.5.10, Z coordinate | |||
|} | |||
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. | |||
=== GPUREG_LIGHT''i''_SPOTDIR_XY === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-12 | |||
| fixed1.1.11, X coordinate (Usually the input value is negated) | |||
|- | |||
| 16-28 | |||
| fixed1.1.11, Y coordinate (Usually the input value is negated) | |||
|} | |||
These registers (along with _Z) represent the spot direction (unitary) vector of the corresponding light. | |||
=== GPUREG_LIGHT''i''_SPOTDIR_Z === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-12 | |||
| fixed1.1.11, Z coordinate (Usually the input value is negated) | |||
|} | |||
These registers (along with _XY) represent the spot direction (unitary) vector of the corresponding light. | |||
=== | === GPUREG_LIGHT''i''_CONFIG === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,214: | Line 6,333: | ||
|- | |- | ||
| 0 | | 0 | ||
| unsigned, | | unsigned, Light type (0 = positional light, 1 = directional light) | ||
|- | |- | ||
| 1 | | 1 | ||
| | | unsigned, Two side diffuse (0 = one side, 1 = both sides) | ||
|- | |||
| 2 | |||
| unsigned, Use geometric factor 0 (0 = don't use, 1 = use) | |||
|- | |||
| 3 | |||
| unsigned, Use geometric factor 1 (0 = don't use, 1 = use) | |||
|} | |||
=== GPUREG_LIGHT''i''_ATTENUATION_BIAS === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-19 | |||
| float1.7.12, Distance attenuation bias | |||
|} | |||
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)). | |||
=== GPUREG_LIGHT''i''_ATTENUATION_SCALE === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-19 | |||
| float1.7.12, Distance attenuation scale | |||
|} | |||
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)). | |||
=== GPUREG_LIGHTING_AMBIENT === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Blue | |||
|- | |||
| 10-17 | |||
| unsigned, Green | |||
|- | |||
| 20-27 | |||
| unsigned, Red | |||
|} | |||
This register contains the initial value of the fragment primary color before the partial colors that correspond to each enabled light are added. Usually set to material_emission + material_ambient*scene_ambient. | |||
=== GPUREG_LIGHTING_NUM_LIGHTS === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-2 | |||
| unsigned, Number of active lights - 1 | |||
|} | |||
=== GPUREG_LIGHTING_CONFIG0 === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0 | |||
| unsigned, Shadow factor enabled (0 = disabled, 1 = enabled) (usually accompanied by bit 16, 17, or 18) | |||
|- | |- | ||
| 2-3 | | 2-3 | ||
| unsigned, | | unsigned, Fresnel selector | ||
|- | |- | ||
| 4-7 | | 4-7 | ||
| unsigned, | | unsigned, Light environment configuration | ||
|- | |- | ||
| 8- | | 8-11 | ||
| | | 0x4 | ||
|- | |- | ||
| 16 | | 16 | ||
| unsigned, | | unsigned, Apply shadow attenuation to primary color (0 = don't apply, 1 = apply) | ||
|- | |- | ||
| 17 | | 17 | ||
| unsigned, | | unsigned, Apply shadow attenuation to secondary color (0 = don't apply, 1 = apply) | ||
|- | |- | ||
| 18 | | 18 | ||
| unsigned, | | unsigned, Invert shadow attenuation (0 = don't invert, 1 = invert) | ||
|- | |- | ||
| 19 | | 19 | ||
| unsigned, | | unsigned, Apply shadow attenuation to alpha component (0 = don't apply, 1 = apply) | ||
|- | |- | ||
| 22-23 | | 22-23 | ||
| unsigned, | | unsigned, Bump map texture unit | ||
|- | |- | ||
| 24-25 | | 24-25 | ||
| unsigned, | | unsigned, Shadow map texture unit | ||
|- | |- | ||
| 27 | | 27 | ||
| unsigned, | | unsigned, Clamp highlights (0 = disabled, 1 = enabled) | ||
|- | |- | ||
| 28-29 | | 28-29 | ||
| unsigned, | | unsigned, Bump mode | ||
|- | |- | ||
| 30 | | 30 | ||
| unsigned, | | unsigned, Recalculate bump vectors (0 = enabled, 1 = disabled) (usually set to 1 when bump mode is not 0) | ||
|- | |- | ||
| 31 | | 31 | ||
| | | 0x1 | ||
|} | |} | ||
Fresnel selector | Fresnel selector values: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,272: | Line 6,453: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | None | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Primary alpha | ||
|- | |- | ||
| 2 | | 2 | ||
| | | Secondary alpha | ||
|- | |- | ||
| 3 | | 3 | ||
| | | Primary and secondary alpha | ||
|} | |} | ||
The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If | The light environment configuration controls which LUTs are available for use. If a LUT is not available in the selected configuration, its value will always read a constant 1.0 regardless of the enable state in GPUREG_LIGHTING_CONFIG1. If RR is enabled but not RG or RB, the output of RR is used for the three components; Red, Green and Blue. | ||
Light | Light environment configuration values: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,294: | Line 6,475: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | Configuration 0 | ||
| | | D0, RR, SP, DA | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Configuration 1 | ||
| | | FR, RR, SP, DA | ||
|- | |- | ||
| 2 | | 2 | ||
| | | Configuration 2 | ||
| | | D0, D1, RR, DA | ||
|- | |- | ||
| 3 | | 3 | ||
| | | Configuration 3 | ||
| | | D0, D1, FR, DA | ||
|- | |- | ||
| 4 | | 4 | ||
| | | Configuration 4 | ||
| All except for | | All except for FR | ||
|- | |- | ||
| 5 | | 5 | ||
| | | Configuration 5 | ||
| All except for | | All except for D1 | ||
|- | |- | ||
| 6 | | 6 | ||
| | | Configuration 6 | ||
| All except for | | All except for RB and RG | ||
|- | |- | ||
| 8 | | 8 | ||
| | | Configuration 7 | ||
| All | | All | ||
|} | |} | ||
Bump mode | Bump mode values: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,333: | Line 6,514: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | Not used | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Use as bump map | ||
|- | |- | ||
| 2 | | 2 | ||
| | | Use as tangent map | ||
|} | |} | ||
=== GPUREG_LIGHTING_CONFIG1 === | === GPUREG_LIGHTING_CONFIG1 === | ||
Line 6,351: | Line 6,530: | ||
|- | |- | ||
| 0 | | 0 | ||
| unsigned, | | unsigned, Fragment light source 0 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 1 | | 1 | ||
| unsigned, | | unsigned, Fragment light source 1 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 2 | | 2 | ||
| unsigned, | | unsigned, Fragment light source 2 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 3 | | 3 | ||
| unsigned, | | unsigned, Fragment light source 3 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 4 | | 4 | ||
| unsigned, | | unsigned, Fragment light source 4 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 5 | | 5 | ||
| unsigned, | | unsigned, Fragment light source 5 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 6 | | 6 | ||
| unsigned, | | unsigned, Fragment light source 6 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 7 | | 7 | ||
| unsigned, | | unsigned, Fragment light source 7 shadows disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 8 | | 8 | ||
| unsigned, | | unsigned, Fragment light source 0 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 9 | | 9 | ||
| unsigned, | | unsigned, Fragment light source 1 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 10 | | 10 | ||
| unsigned, | | unsigned, Fragment light source 2 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 11 | | 11 | ||
| unsigned, | | unsigned, Fragment light source 3 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 12 | | 12 | ||
| unsigned, | | unsigned, Fragment light source 4 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 13 | | 13 | ||
| unsigned, | | unsigned, Fragment light source 5 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 14 | | 14 | ||
| unsigned, | | unsigned, Fragment light source 6 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 15 | | 15 | ||
| unsigned, | | unsigned, Fragment light source 7 spot light disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 16 | | 16 | ||
| unsigned, | | unsigned, Term 0 distribution component D0 LUT disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 17 | | 17 | ||
| unsigned, | | unsigned, Term 1 distribution component D1 LUT disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 18 | | 18 | ||
| | | 0x1 | ||
|- | |- | ||
| 19 | | 19 | ||
| unsigned, | | unsigned, Fresnel FR LUT disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 20 | | 20-22 | ||
| unsigned, | | unsigned, Term 1 reflection component RB LUT disabled (0 = enabled, 7 = disabled) | ||
|- | |- | ||
| 21 | | 21 | ||
| unsigned, | | unsigned, Term 1 reflection component RG LUT disabled (0 = enabled, 7 = disabled) | ||
|- | |- | ||
| 22 | | 22 | ||
| unsigned, | | unsigned, Term 1 reflection component RR LUT disabled (0 = enabled, 7 = disabled) | ||
|- | |- | ||
| 24 | | 24 | ||
| unsigned, | | unsigned, Fragment light source 0 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 25 | | 25 | ||
| unsigned, | | unsigned, Fragment light source 1 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 26 | | 26 | ||
| unsigned, | | unsigned, Fragment light source 2 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 27 | | 27 | ||
| unsigned, | | unsigned, Fragment light source 3 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 28 | | 28 | ||
| unsigned, | | unsigned, Fragment light source 4 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 29 | | 29 | ||
| unsigned, | | unsigned, Fragment light source 5 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 30 | | 30 | ||
| unsigned, | | unsigned, Fragment light source 6 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 31 | | 31 | ||
| unsigned, | | unsigned, Fragment light source 7 distance attenuation disabled (0 = enabled, 1 = disabled) | ||
|} | |} | ||
=== | === GPUREG_LIGHTING_LUT_INDEX === | ||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |||
| 0-7 | |||
| unsigned, Starting index | |||
|- | |||
| 8-12 | |||
| unsigned, Look-up table | |||
|} | |||
This register controls which LUT and what offset into it the LUT_DATA register writes to. | |||
Lookup table values: | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| | | D0 | ||
|- | |- | ||
| | | 1 | ||
| | | D1 | ||
|- | |- | ||
| | | 3 | ||
| | | FR | ||
|- | |- | ||
| | | 4 | ||
| | | RB | ||
|- | |- | ||
| | | 5 | ||
| | | RG | ||
|- | |- | ||
| | | 6 | ||
| | | RR | ||
|- | |- | ||
| | | 8-15 | ||
| | | SP0-7 | ||
|- | |- | ||
| | | 16-23 | ||
| | | DA0-7 | ||
|} | |} | ||
=== | === GPUREG_LIGHTING_ENABLE1 === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,488: | Line 6,675: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| unsigned, | | unsigned, Disabled (0 = enabled, 1 = disabled) | ||
| | |} | ||
This register is set to 1 when fragment lighting is disabled, and to 0 when it is enabled. | |||
| | |||
=== GPUREG_LIGHTING_LUT_DATA''i'' === | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
|- | |- | ||
| | | 0-23 | ||
| LUT data | |||
| | |||
|} | |} | ||
Lighting LUT data is written here. | |||
A LUT contains data for the input domain [-1.0, 1.0], which is indexed using a signed 8-bit number [-128, 127]. Therefore a LUT contains 256 entries. The index of a value is (int)(x/127.0f) & 0xFF. | |||
DA: The input domain is [0.0, 1.0], and the index is an unsigned 8-bit number [0, 255] instead. | |||
Format of an entry: | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bits | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0-11 | ||
| | | fixed0.0.12, Entry value | ||
|- | |- | ||
| | | 12-23 | ||
| fixed1.0.11, Absolute value of the difference between the next entry and this entry, used to implement linear interpolation | |||
| | |||
|} | |} | ||
Line 6,542: | Line 6,717: | ||
|- | |- | ||
| 1 | | 1 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of D0 (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 5 | | 5 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of D1 (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 9 | | 9 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of SP (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 13 | | 13 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of FR (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 17 | | 17 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of RB (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 21 | | 21 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of RG (0 = enabled, 1 = disabled) | ||
|- | |- | ||
| 25 | | 25 | ||
| unsigned, abs() flag for the input of | | unsigned, abs() flag for the input of RR (0 = enabled, 1 = disabled) | ||
|} | |} | ||
This register controls whether the absolute value of the input is taken before using a LUT. | This register controls whether the absolute value of the input is taken before using a LUT. | ||
=== | === GPUREG_LIGHTING_LUTINPUT_SELECT === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,571: | Line 6,746: | ||
! Description | ! Description | ||
|- | |- | ||
| 0- | | 0-2 | ||
| unsigned, | | unsigned, Input selector for D0 | ||
|- | |- | ||
| 4- | | 4-6 | ||
| unsigned, | | unsigned, Input selector for D1 | ||
|- | |- | ||
| 8- | | 8-10 | ||
| unsigned, | | unsigned, Input selector for SP | ||
|- | |- | ||
| 12- | | 12-14 | ||
| unsigned, | | unsigned, Input selector for FR | ||
|- | |- | ||
| 16- | | 16-18 | ||
| unsigned, | | unsigned, Input selector for RB | ||
|- | |- | ||
| 20- | | 20-22 | ||
| unsigned, | | unsigned, Input selector for RG | ||
|- | |- | ||
| 24- | | 24-26 | ||
| unsigned, | | unsigned, Input selector for RR | ||
|} | |} | ||
Input selector values: | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,600: | Line 6,775: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | N·H | ||
|- | |- | ||
| 1 | | 1 | ||
| | | V·H | ||
|- | |- | ||
| 2 | | 2 | ||
| | | N·V | ||
|- | |- | ||
| 3 | | 3 | ||
| | | L·N | ||
|- | |- | ||
| | | 4 | ||
| | | -L·P (aka Spotlight aka SP) | ||
|- | |- | ||
| | | 5 | ||
| | | cos φ (aka CP) | ||
|} | |} | ||
=== GPUREG_LIGHTING_LUTINPUT_SCALE === | |||
=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,628: | Line 6,799: | ||
! Description | ! Description | ||
|- | |- | ||
| 0- | | 0-2 | ||
| unsigned, | | unsigned, Scaler selector for D0 | ||
|- | |||
| 4-6 | |||
| unsigned, Scaler selector for D1 | |||
|- | |- | ||
| 8-10 | | 8-10 | ||
| unsigned, | | unsigned, Scaler selector for SP | ||
|- | |- | ||
| | | 12-14 | ||
| unsigned, | | unsigned, Scaler selector for FR | ||
|- | |- | ||
| | | 16-18 | ||
| | | unsigned, Scaler selector for RB | ||
|- | |- | ||
| | | 20-22 | ||
| | | unsigned, Scaler selector for RG | ||
|- | |- | ||
| | | 24-26 | ||
| unsigned, Scaler selector for RR | |||
| | |||
|} | |} | ||
This register controls the scaling that is applied to the output of a LUT. | |||
Scaler selector values: | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,670: | Line 6,830: | ||
|- | |- | ||
| 0 | | 0 | ||
| | | 1x | ||
|- | |- | ||
| 1 | | 1 | ||
| | | 2x | ||
|- | |- | ||
| 2 | | 2 | ||
| | | 4x | ||
|- | |- | ||
| | | 3 | ||
| | | 8x | ||
|- | |- | ||
| | | 6 | ||
| | | 0.25x | ||
|- | |- | ||
| | | 7 | ||
| | | 0.5x | ||
|} | |} | ||
=== GPUREG_LIGHTING_LIGHT_PERMUTATION === | |||
=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 6,724: | Line 6,854: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0-2 | ||
| unsigned, | | unsigned, ID of the 1st enabled light | ||
|- | |- | ||
| | | 4-6 | ||
| unsigned, | | unsigned, ID of the 2nd enabled light | ||
|- | |- | ||
| | | 8-10 | ||
| unsigned, | | unsigned, ID of the 3rd enabled light | ||
|- | |- | ||
| | | 12-14 | ||
| unsigned, | | unsigned, ID of the 4th enabled light | ||
|- | |- | ||
| | | 16-18 | ||
| | | unsigned, ID of the 5th enabled light | ||
|- | |- | ||
| | | 20-22 | ||
| | | unsigned, ID of the 6th enabled light | ||
|- | |- | ||
| | | 24-26 | ||
| | | unsigned, ID of the 7th enabled light | ||
|- | |- | ||
| | | 28-30 | ||
| unsigned, ID of the 8th enabled light | |||
| | |||
|} | |} | ||
== Geometry pipeline registers == | == Geometry pipeline registers == |