This project is now hosted on GitHub
. This site is being maintained for now, but please move to using GitHub.
UVAtlas implements the same isochart atlas algorithm as was present in the deprecated D3DX9 utility library. For an overview of this technology, see the Direct3D 9 documentation on MSDN:
The majority of the header files here are intended for internal implementation of the library only. Only the
folder is meant as a 'public' header for the library.
All the functions in the library are in the DirectX
is the result output from the atlas creation, partition, and pack operations. It contains a position (which is taken from the original input data possibly with vertex duplication) with unique uv data which is the result of the isochart
The following standard parameters are used throughout the library:
: A 16-bit or 32-bit indexed description of the triangles in a mesh. This must have 3 * nFaces entries, and every group of 3 describes the vertices for a triangle face.
: If using 16-bit indices, use DXGI_FORMAT_R16_UINT. If using 32-bit indices, use DXGI_FORMAT_R32_UINT. No other value is supported.
: Number of faces in the mesh.
: The vertex positions of the mesh as indexed by entries in indices
. This must have nVerts entries.
: The UV texture coordinates of the mesh as indexed by entries in
. This must have nVerts entries.
: Number of vertices in the mesh.
: A 32-bit index array with nFaces * 3 entries containing the
for each face in a mesh. Can be -1u to indicate an unused entry.
Note: this can be computed from mesh data using DirectXMesh
: Since the atlas creation process can be very CPU intensive, this allows the programmer to specify a function to be called periodically to provide feedback status to the user. It should return S_OK to continue and E_ABORT to abort the
- This lets you specify how often the callback will be invoked. You can use the default value of UVATLAS_DEFAULT_CALLBACK_FREQUENCY.
Adding to a VS solution
In your application's solution, right-click on the Solution and use "Add \ Existing Project..." to add the appropriate .vcxproj file to your solution.
- UVAtlas_2015 is for Windows desktop applications building with VS 2015
- UVAtlas_2013 is for Windows desktop applications building with VS 2013 Express for Desktop, VS 2013 Community, VS 2013 Professional or higher
- UVAtlas_2012 is for Windows desktop applications building with VS 2012 Express for Desktop, VS 2012 Professional or higher
- UVAtlas_Windows10 is for universal Windows apps building with VS 2015 targeting Windows 10
- UVAtlas_Windows81 is for Windows Store apps building with VS 2013 targeting Windows 8.1
- UVAtlas_XboxOneXDK is for Xbox One exclusive apps building with VS 2012 using the Xbox One XDK
- UVAtlas_XboxOneADK is for Xbox One hub apps building with VS 2012 using the Xbox One ADK
In your application's project, right-click on the Project and use "References...", then "Add New Reference...", and then check the UVAtlas project name and click OK. For a
Windows Store app
or Xbox One
solution, you need to set Reference Assembly Output
since UVAtlas is a static C++ library and not a WinRT component.
In your application's project settings, on the "C++ / General" page set Configuration to "All Configurations", set Platform to "All Platforms", and then add the relative path to
--assuming you have the UVAtlas folder in the same directory as your sln file, it should be
--to the Additional Include Directories
properties. Click Apply.
Note: You'll likely want to add both DirectXTex and DirectXMesh to your solution as well, although it's not strictly required.
Zhou et al, "Iso-charts: Stretch-driven Mesh Parameterization using Spectral Analysis", Eurographics Symposium on Geometry Processing (2004)
Sander et al. "Signal-Specialized Parametrization" Europgraphics 2002