Hi Ken,

Functions provided in concurrency::direct3d namespace include D3D interop utilties, and thin wrappers of intrinsics that maps to
HLSL intrinsic functions. For the latter, the usage should be straightforward. The XML comments of these functions provide simple summary on the meaning of the function, parameters, and return values. It's worth mentioning that it includes a
set of fast_** math functions, (eg. fast_sin, fast_cos etc). These functions map to corresponding HLSL
*single-precision* math intrinsics. They could be used in scenarios (e.g. graphics) where the precision is not that important and speed is more important (thus "*fast_*"). When precision/error is concerned (e.g. finance applications),
the
C++ AMP math functions in concurrency namespace should be used. There are also atomic functions, memory fence/barrier, as well as some other stuff.

In the
NBody-simulation sample, there are actually usages of concurrency::direct3d namespace

- D3D Interop:
- nbody.h: search
direct3d::create_accelerator_view -- create a C++ AMP accelerator_view from an ID3D11Device
- nbody.cpp: search direct3d::get_buffer -- return a ID3D11Buffer from a C++ AMP concurrency::array

- fast math functions:
- nbody.cpp: search direct3d::fast_rsqrt,

The follow-up blog post will walk through the code and explain details in depth.

We will also provide blog posts for more details and examples on each topics: D3D interop, fast math functions, atomic functions, and other APIs in concurrency::direct3d namespace in the near future.

---

Weirong