DirectXMesh "sister" library proposal

Coordinator
Jun 19, 2012 at 6:35 PM
Edited Jun 19, 2012 at 6:36 PM

DirectXTex is a full-featured replacement for the D3DX11 texture processing functionality, which should fully cover all the existing scenarios for texture processing. For the runtime scenarios, the DirectXTK's DDSTexureLoader and WICTextureLoader provide low-overhead loading of Direct3D 11 texture resources.

There are, however, a number of scenarios around geometry processing that were not carried forward to D3DX11 that are not addressed elsewhere. A proposed 'sister' library to DirectXTex is "DirectXMesh" to provide the following functionality for preparing geometry data:

  • OptimizeFaces
  • OptimizeVerticies
  • GenerateAdjacencyAndPointsReps
  • GenerateGSAdjacency
  • ComputeTangentFrame

The biggest challenge is that there's no 'universal' runtime mesh format that is analogous to .DDS files for textures. A such, these functions need to be written so they can be used generically with many kind of layouts rather than be wrapped up in another "ID3DXMesh" equivalent. Existing content pipelines and exporters have to marshal data into and out of the D3DX Mesh object to just call these functions in the legacy D3DX API, so this design should be more suitable to such scenraios.

DirectXMesh will share DirectXTex's focus on offline processing, and as such seems like a worthy addition to this project.

Aug 23, 2013 at 7:07 AM
It would be great!

But how about: (DirectXTK + DirectXTex + DirectXMesh) = new fundamental for a new DXUT replacement? (maybe with some DirectXMath, so we can better squeeze modern CPUs) :D
Coordinator
Aug 27, 2013 at 6:15 AM
Edited Jan 24 at 6:23 AM
DXUT was intended to solve a specific problem space: a Win32 desktop sample framework. The vast majority of the complex code in DXUT was to deal with the enumeration of devices and capabilities, provide a basic wrapper for the Win32 desktop swap chain and message pump, handling mouse/keyboard, and provide some GUI widgets for Direct3D. The rest was complex wrappers to try to support both Direct3D 9 and Direct3D 11 (if desired) in the same sample.

Update: There is a distinct CodePlex for DXUT

There is certainly some value in that, but it's pretty narrow in scope. It's also not particular useful for Windows Store apps where the input and presentation model is not as simplistic, uses a touch-centric UI, and has much strong requirements for power-friendly async handling.

DirectXTK, DirectXTex, and eventually DirectXMesh are all more general-purpose and support Win32 desktop, Windows Store apps, Windows phone apps, and other Windows 8-based platforms.