Final Fantasy XIV on PIX

SquareEnix released a Final Fantasy XIV benchmark application, which according to them, displays actual maps and characters to assign a score to your PC and rate its performance for actual play of FINAL FANTASY XIV for Windows.

Being curious about the character’s polygon count and texture maps, I decided to get some information about the game using PIX (Performance Investigator for DirectX), a tool that comes with the DirectX SDK. Using PIX, I ran the benchmark and when an interesting image appeared (shown in the screenshot below) I captured a Direct 3D frame, which contains all the API calls, data buffers (including vertices, textures and render targets) and shaders.

FFXIV Screenshot

First I would like to say that every time I captured a Direct3D frame it came with thousands of API calls, making it difficult to find out where the interesting information really was. Also, I believe that because it is a benchmark the game is doing some repeated/unnecessary work. The following picture shows some of the rendering calls captured with PIX.

Direct3D Frame

Next, I would like to investigate the rendering of the character who appears in the upper right part of the first picture. This character is draw inside the MultiScreenManager::Draw method as a set of parts/chunks. Note that in the previous picture the MultiScreenManager::Draw call was not expanded because it has lots of calls inside. The table below shows all the rendered parts/chunks of the investigated character.

Part/Chunk Name     Vertex Count     Triangle Count     Vertex/Triangle Rate    
Head 1043 1322 0.788
Eye 50 64 0.781
Upper Body Cloth1 1000 840 1.190
Upper Body Cloth2 240 184 1.304
Upper Body Cloth3 654 752 0.869
Trousers 332 536 0.619
Hands 462 628 0.735
Foot Cloth 1008 434 2.322
Foot 214 168 1.273
Hair 939 1009 0.930
TOTAL 5942 5937 1.000

As you can see, this character has almost 6K polygons divided into 10 chunks. All the chunks were drawn using an indexed triangle list with three DXT1 textures for diffuse color, normal map and specular map (or a mask, in some cases). I will not post any picture of the character textures but his face, for example, has three 128×256 textures.

The analyzed chunks have an average rate of one vertex per triangle, however, in a closed mesh with lots of triangles, each vertex is shared on average by 6 faces. Therefore, it might be possible to achieve a 0.5 vertex/triangle rate but I will leave this discussion for a future post.

Comments (3)

  1. [...] This post was mentioned on Twitter by Luciano José, Bruno Evangelista. Bruno Evangelista said: New blog post: Final Fantasy XIV on PIX. [...]

  2. Fala Bruno,

    Maneiro o post, nao sabia do PIX, gostei de saber da existencia dessa ferramenta bem util.

    Tem um errinho no teu ingles no final em ” but I will left this discussion for a future post.”. Troca LEFT por LEAVE.


  3. saad says:

    I’ll thank you if you help me or send to me robot game(xna) in 2d

Leave a Comment