Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | Namespace Members | Class Members | Related Pages

DirectX Pixel Shader Assembler

The DirectX and OpenGL renderers support the DirectX Pixel Shader Assembler (PSA) versions 1.0 to 1.4. Generally, the same restrictions and limitations apply as documented in the DirectX SDK documentation. Note, in particular, that the constant registers can only be assumed to have a range of -1 to 1. Even though all data types and also state tracking are supported, all values outside the range will typically be clamped to [-1, 1] by each instruction. Additionally XEngine defines the depth value result of a texm3x2depth instruction to be undefined, if z/w as calculated by that instruction is outside the interval [0, 1]. This effectively means that the value written to the depth buffer is undefined, possibly resulting in the fragment to be culled.

Please note that the preprocessor is currently unsupported. This will hopefully change in the future.

Also note that currently XEngine does not support the use of the texbem and texbeml texture addressing instructions or the bem arithmetic instructions in pixel shaders version 1.4. This might change though in future revisions once support for signed texture formats is implemented, if demand warrants it.

When using DirectX pixel shaders with the OpenGL renderer of XEngine additional restrictions apply. The following restrictions apply when DirectX pixel shaders 1.0-1.3 are translated to the NV_register_combiners/NV_texture_shader extensions, which typically happens when running on NVIDIA hardware:

Currently, pixel shaders written in version 1.4 cannot be used with the OpenGL renderer on NVIDIA hardware, and only on GeForceFX cards or better in Direct3D.

The following restrictions apply when DirectX pixel shaders 1.0-1.3 are internally translated to ATI_text_fragment_shader, which typically happens when running on ATI hardware:

The following restrictions apply when DirectX pixel shaders 1.4 are internally translated to ATI_text_fragment_shader, which typically happens when running on ATI hardware: