Some D3D10.1 antialiasing details and pixel-coverage-masks

DmitryKo

Veteran
DirectX Graphics: Direct3D 10 and Beyond [WinHEC 2006; 4.81 MB]
Slide 31, Direct3D 10.1 features
Full anti-aliasing control
  • Application control over:
    • Multi-sample AA (smooth edges)
      or
    • Super-sample AA(smooth edges and interior)
    • Selecting sample patterns
      [*]Pixel coverage mask
      • High-quality vegetation, motion blur, particles...
  • Minimum of 4 samples/pixel required
Slide 32, Direct3D 10.1 features
Increased pipeline and shader capability
  • Improved shader resource access
    • Greater control over MSSA readback
      • Custom downsample filters
    • Improved shadow filtering
    • Float32 filtering requirement
      • Better HDR
 
Last edited by a moderator:
  • Like
Reactions: Geo
Pixel coverage mask
About time D3D gets this feature. It's only been in core GL for like 5 years (although admitedly, the mask was determined from the alpha channel which made it more difficult to do alpha blending and sample masking at the same time).
 
About time D3D gets this feature. It's only been in core GL for like 5 years (although admitedly, the mask was determined from the alpha channel which made it more difficult to do alpha blending and sample masking at the same time).

This is called Alpha to Coverage and already part of D3D10.
 
Now what does 'pixel coverage mask' actually mean?
Sounds to me like regular multi-sample anti-aliasing, just standardized as part of the Direct3D 10.1 specification. So implementations are no longer free to use other approaches. It could make it easier to work with anti-aliased surfaces by having a standard format. :?:
 
I seem to recall a statement somewhere (I'm thinking it was at R3D) from Sireric a couple years back re AA in D3D; something reasonably close to "there is a general consensus that the current api is somewhat broken". Does D3D10 and/or 10.1 address this? And if so, how?

Edit: Well, reasonably close, Dec 2004: http://www.rage3d.com/board/showpost.php?p=1333401610&postcount=5

It's generally agreed that the current API for MSAA is somewhat broken, but that can be fixed.
 
So, it basically can be used for the antialiasing of transparent edges similar to NVidia's Transparency AA, but employing dedicated coverage mask instead of alpha values?;)
 
So, it basically can be used for the antialiasing of transparent edges similar to NVidia's Transparency AA, but employing dedicated coverage mask instead of alpha values?;)

There are separate features:

1. sample coverage (mask) - use to globally turn off part of the coverage. use to do transparency of a whole primitive (for example)

2. alpha to coverage - use to convert fragment alpha values to coverage values. For primitives with feathered edges (foliage), it can be used to approximate coverage of the edges though there is no correlation at the sample level with actual edges.

3. shader output of coverage (aka omask) - a generalization of 1) & 2) above since the shader can perform the conversion from alpha itself, incorporate a per-primitive mask, etc.

4. selective-super sampling - perform shading calculations at sample frequency rather than pixel frequency for a primtive. This means that texture lookups and shading computations are performed separately for each sample, perhaps by iterating the shader over each sample. This can improve the alpha texture antialiasing by taking a larger number of texture samples (one per fragment sample) and then alpha testing on each sample.

1 & 2 were available in the multisample extension for OpenGL since SGI first implemented it circa 1993. 3 & 4 are new, though 4 is a generalization of "transparency AA".
 
here's a picture of that slide 31:
IMG0017559.jpg

[source: http://www.behardware.com/articles/631-2/directx-10-and-gpus.html ]
 
Back
Top