Parhelia Features

Let's have a little look at some of the features that Parhelia has to offer.

Displacement Mapping - Now included as part of the DirectX9 feature set, and developed by Matrox, Parhelia features hardware displacement mapping. This feature uses a texture (Displacement Map) to generate height values that can be applied to tessellated geometry to generate much more complicated scenes or characters. The geometry sent to the graphics board is very simple and along with the displacement map the high detail output is internally generated by the graphics processor, meaning that CPU/system usage is kept to a minimum whilst generating potentially much more complicated output.



Displacement Mapping


Parhelia also features depth adaptive tessellation so that the further the displacement mapped object is into the viewport the lower the tessellation, hence detail, will be. This ensures that the highest level of detail is only applied to the important areas and time is not wasted unnecessarily rendering where it's not needed.

Beyond3D will take a closer look at Displacement Mapping at a later date.

Vertex Shaders - With Parhelia, Matrox have opted to concentrate quite heavily on the geometry end of the pipeline. Parhelia implements a total of four Vertex Shaders, to DX9 Vertex Shader 2.0 specification. 



Parhelia Vertex Shader Array

The Vertex Shader array has a 512 instruction cache and 256 constant registers.

Quad Texturing / 64 Sample Texture Filtering - Parhelia offers four texture sample units on each of the four texture pipelines, giving a total of 16 texture sampling units. Matrox also describe this as "64 Super Sample Texture Filtering", though it appears that the 64 figure is in relation to the entire pixel array, meaning each texture unit is capable of four sample filtering.

Pixel Shaders - Unlike the Vertex Shaders, Matrox opted to go for a DX8 compliant Pixel (fragment) Shader pipeline. Presumably, along with 3Dlabs, Matrox felt there wasn't enough room to manoeuvre with 0.15µ, hence floating point pixel pipelines just weren't feasible just yet, thus opting for a hybrid design with DX9 Vertex Shaders (which are presumably far less complex than the pixel shaders) and DX8.1 Pixel Shaders. The Pixel Shader capabilities fall in line with DirectX's PS1.3 version.



Parhelia Pixel Shader Array

Matrox describe this as a 36 stage array with 4 pixel pipes, each with 4 texture stages (units), and a 5 stage Pixel Shader array. This makes 9 stages per pipe, or 36 in total. However, it's unclear exactly what these 5 Pixel Shader stages actually are. We know that ATI have opted for a three stage Pixel Shader pipe line with one texture look-up, one texture address operation, and one colour operation; however, what all these stages do in Parhelia is unclear. The diagram above also indicates that Parhelia can chain two Pixel Shader pipes together to achieve 10 stages on 2 pixels rather than just 5 stages on 4 pixels.


Click for a bigger version

Parhelia Reef Demo


The image above is taken from Matrox's impressive 'Reef' demonstration. The Reef demo utilises all four of Parhelia's texture layers in conjunction with Vertex and Pixel Shaders to show off Parhelia's abilities.

Unlike newer DirectX9 parts, which are going towards at least 64-bit floating point accuracy, both the Vertex and Pixel Shader pipelines of Parhelia have 40-bit accuracy.