Difference between revisions of "NV2A/Pixel Combiner"

From xboxdevwiki
Jump to: navigation, search
(Data types)
(D3D portion stolen from Cxbx)
Line 43: Line 43:
 
!ID
 
!ID
 
!Name
 
!Name
 +
!D3D name
 
!GL Name
 
!GL Name
 
!Stage 1
 
!Stage 1
Line 51: Line 52:
 
|-
 
|-
 
|0x00
 
|0x00
|PS_TEXTUREMODES_NONE<br>texcoord?{{citation needed}}
+
|PS_TEXTUREMODES_NONE
 +
|
 
|NONE
 
|NONE
 
|{{yes}}
 
|{{yes}}
Line 60: Line 62:
 
|-
 
|-
 
|0x01
 
|0x01
|PS_TEXTUREMODES_PROJECT2D<br>tex
+
|PS_TEXTUREMODES_PROJECT2D
 +
|tex
 
|TEXTURE_2D
 
|TEXTURE_2D
 
|{{yes}}
 
|{{yes}}
Line 70: Line 73:
 
|0x02
 
|0x02
 
|PS_TEXTUREMODES_PROJECT3D
 
|PS_TEXTUREMODES_PROJECT3D
 +
|tex
 
|TEXTURE_3D
 
|TEXTURE_3D
 
|{{yes}}
 
|{{yes}}
Line 79: Line 83:
 
|0x03
 
|0x03
 
|PS_TEXTUREMODES_CUBEMAP
 
|PS_TEXTUREMODES_CUBEMAP
 +
|tex
 
|TEXTURE_CUBE_MAP_ARB
 
|TEXTURE_CUBE_MAP_ARB
 
|{{yes}}
 
|{{yes}}
Line 87: Line 92:
 
|-
 
|-
 
|0x04
 
|0x04
|PS_TEXTUREMODES_PASSTHRU<br>texcoord?{{citation needed}}
+
|PS_TEXTUREMODES_PASSTHRU
 +
|texcoord
 
|PASS_THROUGH_NV
 
|PASS_THROUGH_NV
 
|{{yes}}
 
|{{yes}}
Line 96: Line 102:
 
|-
 
|-
 
|0x05
 
|0x05
|PS_TEXTUREMODES_CLIPPLANE<br>texkill
+
|PS_TEXTUREMODES_CLIPPLANE
 +
|texkill
 
|CULL_FRAGMENT_NV
 
|CULL_FRAGMENT_NV
 
|{{yes}}
 
|{{yes}}
Line 105: Line 112:
 
|-
 
|-
 
|0x06
 
|0x06
|PS_TEXTUREMODES_BUMPENVMAP<br>texbem
+
|PS_TEXTUREMODES_BUMPENVMAP
 +
|texbem
 
|OFFSET_TEXTURE_2D_NV
 
|OFFSET_TEXTURE_2D_NV
 
|{{no}}
 
|{{no}}
Line 114: Line 122:
 
|-
 
|-
 
|0x07
 
|0x07
|PS_TEXTUREMODES_BUMPENVMAP_LUM<br>texbeml
+
|PS_TEXTUREMODES_BUMPENVMAP_LUM
 +
|texbeml
 
|OFFSET_TEXTURE_2D_SCALE_NV
 
|OFFSET_TEXTURE_2D_SCALE_NV
 
|{{no}}
 
|{{no}}
Line 123: Line 132:
 
|-
 
|-
 
|0x08
 
|0x08
|PS_TEXTUREMODES_BRDF<br>texm3x2tex
+
|PS_TEXTUREMODES_BRDF
 +
|texbrdf
 
|
 
|
 
|{{no}}
 
|{{no}}
Line 132: Line 142:
 
|-
 
|-
 
|0x09
 
|0x09
|PS_TEXTUREMODES_DOT_ST<br>texm3x2pad?{{citation needed}}
+
|PS_TEXTUREMODES_DOT_ST
 +
|texm3x2tex?{{citation needed}}
 
|DOT_PRODUCT_NV{{citation needed}}
 
|DOT_PRODUCT_NV{{citation needed}}
 
|{{no}}
 
|{{no}}
Line 141: Line 152:
 
|-
 
|-
 
|0x0A
 
|0x0A
|PS_TEXTUREMODES_DOT_ZW<br>texm3x2tex?{{citation needed}}
+
|PS_TEXTUREMODES_DOT_ZW
 +
|texm3x2tex?{{citation needed}}
 
|DOT_PRODUCT_NV{{citation needed}}
 
|DOT_PRODUCT_NV{{citation needed}}
 
|{{no}}
 
|{{no}}
Line 151: Line 163:
 
|0x0B
 
|0x0B
 
|PS_TEXTUREMODES_DOT_RFLCT_DIFF
 
|PS_TEXTUREMODES_DOT_RFLCT_DIFF
 +
|texm3x3diff
 
|DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV{{citation needed}}
 
|DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV{{citation needed}}
 
|{{no}}
 
|{{no}}
Line 160: Line 173:
 
|0x0C
 
|0x0C
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC
 +
|texm3x3spec
 
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV{{citation needed}}
 
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV{{citation needed}}
 
|{{no}}
 
|{{no}}
Line 169: Line 183:
 
|0x0D
 
|0x0D
 
|PS_TEXTUREMODES_DOT_STR_3D
 
|PS_TEXTUREMODES_DOT_STR_3D
 +
|texm3x3tex
 
|DOT_PRODUCT_TEXTURE_3D_NV
 
|DOT_PRODUCT_TEXTURE_3D_NV
 
|{{no}}
 
|{{no}}
Line 178: Line 193:
 
|0x0E
 
|0x0E
 
|PS_TEXTUREMODES_DOT_STR_CUBE
 
|PS_TEXTUREMODES_DOT_STR_CUBE
 +
|texm3x3vspec
 
|DOT_PRODUCT_REFLECT_CUBE_MAP_NV
 
|DOT_PRODUCT_REFLECT_CUBE_MAP_NV
 
|{{no}}
 
|{{no}}
Line 186: Line 202:
 
|-
 
|-
 
|0x0F
 
|0x0F
|PS_TEXTUREMODES_DPNDNT_AR<br>texreg2ar
+
|PS_TEXTUREMODES_DPNDNT_AR
 +
|texreg2ar
 
|DEPENDENT_AR_TEXTURE_2D_NV
 
|DEPENDENT_AR_TEXTURE_2D_NV
 
|{{no}}
 
|{{no}}
Line 195: Line 212:
 
|-
 
|-
 
|0x10
 
|0x10
|PS_TEXTUREMODES_DPNDNT_GB<br>texreg2gb
+
|PS_TEXTUREMODES_DPNDNT_GB
 +
|texreg2gb
 
|DEPENDENT_GB_TEXTURE_2D_NV
 
|DEPENDENT_GB_TEXTURE_2D_NV
 
|{{no}}
 
|{{no}}
Line 205: Line 223:
 
|0x11
 
|0x11
 
|PS_TEXTUREMODES_DOTPRODUCT
 
|PS_TEXTUREMODES_DOTPRODUCT
 +
|texm3x3pad<br>texm3x2pad
 
|DOT_PRODUCT_NV
 
|DOT_PRODUCT_NV
 
|{{no}}
 
|{{no}}
Line 214: Line 233:
 
|0x12
 
|0x12
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC_CONST
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC_CONST
 +
|texm3x3spec
 
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV
 
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV
 
|{{no}}
 
|{{no}}

Revision as of 18:55, 28 May 2017

The NV2A implements at least parts of the following OpenGL extensions:


Data types

NV_texture_shader suggests that: "The 8-bit and 16-bit signed fixed-point types are used for signed internal texture formats, while the 9-bit signed fixed-point type is used for register combiners computations." Here is a table from the GL extension:

floating-point 8-bit fixed-point 9-bit fixed-point 16-bit fixed-point
1.0 n/a 255 n/a
0.99996... n/a n/a 32767
0.99218... 127 n/a n/a
0.0 0 0 0
-1.0 -128 -255 -32768
-1.00392... n/a -256 n/a

This means:

  • 8-bit fixed-point: [-128, 127] → [-128/128, 127/128] → [-1.0, 0.99218...]
  • 9-bit fixed-point: [-256, 255] → [-256/255, 255/255] → [-1.00392..., 1.0]
  • 16-bit fixed-point: [-32768, 32767] → [-32768/32768, 32767/32768] → [-1.0, 0.99996...]

It is not known if the NV2A really implements these 3 datatypes. It is also not yet known how exactly conversion or negation of these types would work.

Texturing modes

ID Name D3D name GL Name Stage 1 Stage 2 Stage 3 Stage 4 Notes
0x00 PS_TEXTUREMODES_NONE NONE
0x01 PS_TEXTUREMODES_PROJECT2D tex TEXTURE_2D
0x02 PS_TEXTUREMODES_PROJECT3D tex TEXTURE_3D
0x03 PS_TEXTUREMODES_CUBEMAP tex TEXTURE_CUBE_MAP_ARB
0x04 PS_TEXTUREMODES_PASSTHRU texcoord PASS_THROUGH_NV
0x05 PS_TEXTUREMODES_CLIPPLANE texkill CULL_FRAGMENT_NV
0x06 PS_TEXTUREMODES_BUMPENVMAP texbem OFFSET_TEXTURE_2D_NV
0x07 PS_TEXTUREMODES_BUMPENVMAP_LUM texbeml OFFSET_TEXTURE_2D_SCALE_NV
0x08 PS_TEXTUREMODES_BRDF texbrdf
0x09 PS_TEXTUREMODES_DOT_ST texm3x2tex?[citation needed] DOT_PRODUCT_NV[citation needed]
0x0A PS_TEXTUREMODES_DOT_ZW texm3x2tex?[citation needed] DOT_PRODUCT_NV[citation needed]
0x0B PS_TEXTUREMODES_DOT_RFLCT_DIFF texm3x3diff DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV[citation needed]
0x0C PS_TEXTUREMODES_DOT_RFLCT_SPEC texm3x3spec DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV[citation needed]
0x0D PS_TEXTUREMODES_DOT_STR_3D texm3x3tex DOT_PRODUCT_TEXTURE_3D_NV
0x0E PS_TEXTUREMODES_DOT_STR_CUBE texm3x3vspec DOT_PRODUCT_REFLECT_CUBE_MAP_NV
0x0F PS_TEXTUREMODES_DPNDNT_AR texreg2ar DEPENDENT_AR_TEXTURE_2D_NV
0x10 PS_TEXTUREMODES_DPNDNT_GB texreg2gb DEPENDENT_GB_TEXTURE_2D_NV
0x11 PS_TEXTUREMODES_DOTPRODUCT texm3x3pad
texm3x2pad
DOT_PRODUCT_NV
0x12 PS_TEXTUREMODES_DOT_RFLCT_SPEC_CONST texm3x3spec DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV

Also known from nvidia docs:

  • texm3x3pad [stage 1, stage 2]
  • texm3x3spec [stage 3]
  • texm3x3vspec [stage 3]
  • texm3x3tex [stage 3]

Debugging

PIX from the Microsoft XDK provides great debugging capabilities.

References and links