码迷,mamicode.com
首页 > 其他好文 > 详细

【Directx12】资源绑定

时间:2017-12-15 22:43:15      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:pos   ble   常量   str   存在   order   const   enc   texture2d   

D3D12中涉及资源绑定的关键部分是描述符(descriptor),描述符表(desciptor table),描述堆(descriptor heap)和根签名(root signature)。

 

资源和图形管线

 

Shader资源(诸如贴图,常量表,图片,缓冲等等)并非是直接绑定在shader管线上,而是通过描述符(descriptor)知名的。一个描述符包含一个资源的所有信息。

 

描述符会组合到一起形成描述符表(descriptor table)。每个描述符表储存某一(多)类型的资源信息。常见的资源有:

  • Constant buffer views(CBVs)
  • Unordered access views(UAVs)
  • Shader resource views(SRVs)
  • Samplers

CBVs,UAVs和SRVs可以被合并在同一个描述符表里。

图形和计算管线通过索引定位描述符表访问资源。

描述符表储存在一个描述符堆(descriptor heap)里。根签名是一种绑定规范(binding convention),shader通过其定位所需的资源。根签名储存了:

  • 到描述符表的索引,索引通过描述符表的layout提前定义。
  • 常量,使得用户定义的常量可以在shader中使用。
  • 有一小部分的描述符是直接谓语根签名内的,比如每次draw丢在变化的常量缓冲视图(CBV),就避免了每次都要把这些描述符存进描述符堆里。

D3D12中设计绑定资源是独立于其他任务的存在。

 

资源类型和视图

 

资源类型和D3D11一样:

  • Texture1D, and Texture1DArray
  • Texture2D, and Texture2DArray, Texture2DMS, Texture2DMSArray
  • Texture3D
  • Buffers (typed, structured and raw)

资源视图则和11有稍许不同,多出了顶点和索引缓冲视图。:

  • Constant buffer view (CBV)
  • Unordered access view (UAV)
  • Shader resource view (SRV)
  • Samplers
  • Render Target View (RTV)
  • Depth Stencil View (DSV)
  • Index Buffer View (IBV)
  • Vertex Buffer View (VBV)
  • Stream Output View (SOV)

只有前四个是对shader可见的。

 

资源绑定流程

 

  • 创建一/多个根签名对象
  • 创建要用到的根签名对象的shader和管线状态
  • 创建一/多个描述符堆,内含SRV,UAV和CBV描述符
  • 初始化描述符堆

 

【Directx12】资源绑定

标签:pos   ble   常量   str   存在   order   const   enc   texture2d   

原文地址:http://www.cnblogs.com/liez/p/8044909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!