转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=1437

Windows 8 developer preview不但向开发者提供了Win8和VS2011的预览,还在其中隐藏了之前没有宣布过的Direct3D 11.1。现在,D3D11.1的初期文档也出现在MSDN中,让我们来看看D3D11.1提供了哪些新特性。

已经添加入D3D11.1的新功能有:

  • Shader tracing。在API层面提供更多调试shader的能力。
  • Direct3D device sharing。让D3D 10的API和D3D 11的API可以共享同一个渲染设备。
  • Check support of new Direct3D 11.1 features and formats。更新了ID3D11Device::CheckFeatureSupport和ID3D11Device::CheckFormatSupport,以支持D3D 11.1和DXGI 1.2提供的新格式。
  • Create larger constant buffers than a shader can access。可以建立超过64K的cbuffer,在使用的时候选择一个区间让shader访问。
  • Use logical operations in a render target。OpenGL和D3D7都提供了逻辑操作(and、or、xor等方式进行alpha blending),但在后来的D3D中删掉了(可以通过比较复杂的方式模拟出来)。现在D3D 11.1再次原生地提供了逻辑操作的blending方式。
  • Force the sample count to create a rasterizer state。在建立rasterizer state对象的时候可以强制设置采样数。
  • Process video resources with shaders。在shader里处理视频的能力。
  • Change subresources with new copy options。取消了CopySubresourceRegion和UpdateSubresource对源资源和目标资源不允许相同和重叠的要求。
  • Discard resources and resource views。通知GPU某个资源或view已经不再使用。
  • Support a larger number of UAVs。支持更大量UAV。
  • Bind a subrange of a constant buffer to a shader。把cbuffer的一个区间绑定给shader。
  • Retrieve the subrange of a constant buffer that is bound to a shader。获取一个cbuffer被绑定在shader的区间。
  • Clear all or part of a resource view。清除所有或部分resource view,填充一个指定的颜色。(不用再从CPU端填充,或者通过Clear RTV来填充)
  • Map SRVs of dynamic buffers with NO_OVERWRITE。所有动态buffer的SRV都可以用NO_OVERWRITE来Map,之前只允许在VB和IB上做这件事情。
  • Use UAVs at every pipeline stage。流水线的所有阶段都可以用UAV,以前限制为CS和PS可用而已。

更多细节可以在这里找到。这些是已经添加到Win8开发者预览版中的D3D 11.1的新特性,不排除在D3D 11.1正式发布之前还增加新特性的可能性。