Difference between revisions of "NV2A/Pixel Combiner"

From xboxdevwiki
Jump to: navigation, search
(Some corrections based on https://github.com/XboxDev/nxdk/blob/master/tools/fp20compiler/ps1.0_program.cpp#L227)
Line 143: Line 143:
 
|0x09
 
|0x09
 
|PS_TEXTUREMODES_DOT_ST
 
|PS_TEXTUREMODES_DOT_ST
|texm3x2tex?{{citation needed}}
+
|texm3x2tex
|DOT_PRODUCT_NV{{citation needed}}
+
|DOT_PRODUCT_TEXTURE_2D_NV
 
|{{no}}
 
|{{no}}
 
|{{no}}
 
|{{no}}
Line 153: Line 153:
 
|0x0A
 
|0x0A
 
|PS_TEXTUREMODES_DOT_ZW
 
|PS_TEXTUREMODES_DOT_ZW
|texm3x2tex?{{citation needed}}
+
|texm3x2depth
|DOT_PRODUCT_NV{{citation needed}}
+
|
 
|{{no}}
 
|{{no}}
 
|{{no}}
 
|{{no}}
Line 173: Line 173:
 
|0x0C
 
|0x0C
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC
 
|PS_TEXTUREMODES_DOT_RFLCT_SPEC
|texm3x3spec
+
|texm3x3vspec
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV{{citation needed}}
+
|DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV
 
|{{no}}
 
|{{no}}
 
|{{no}}
 
|{{no}}
Line 248: Line 248:
 
== References and links ==
 
== References and links ==
  
 +
* [http://developer.download.nvidia.com/assets/gamedev/docs/ProgrammableTextureBlending.pdf Overview about programmable fragment shading] <!-- Mirror: https://www.nvidia.com/object/programmable_texture_blending.html -->
 +
* [https://github.com/XboxDev/nxdk/blob/77b5de45f0c64e70f2ff68248873448d5edccc71/tools/fp20compiler/ps1.0_program.cpp#L227 Code from nvparse (NVIDIA SDK 9.52) in nxdk, which handles shader to OpenGL conversion]
 
* http://developer.download.nvidia.com/assets/gamedev/docs/GDC2K1_DX8_Pixel_Shaders.pdf
 
* http://developer.download.nvidia.com/assets/gamedev/docs/GDC2K1_DX8_Pixel_Shaders.pdf
* http://developer.download.nvidia.com/assets/gamedev/docs/ProgrammableTextureBlending.pdf
 
  
 
[[Category:NV2A]]
 
[[Category:NV2A]]

Revision as of 22:03, 25 June 2019

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 DOT_PRODUCT_TEXTURE_2D_NV
0x0A PS_TEXTUREMODES_DOT_ZW texm3x2depth
0x0B PS_TEXTUREMODES_DOT_RFLCT_DIFF texm3x3diff DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV[citation needed]
0x0C PS_TEXTUREMODES_DOT_RFLCT_SPEC texm3x3vspec DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV
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

Debugging

PIX from the Microsoft XDK provides great debugging capabilities.

References and links