【Directx12】资源绑定

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描述符
  • 初始化描述符堆
时间: 2024-10-08 16:45:16

【Directx12】资源绑定的相关文章

Spring MVC资源绑定视图解析器

ResourceBundleViewResolver使用属性文件中定义的视图bean来解析视图名称. 以下示例显示如何使用Spring Web MVC框架中的ResourceBundleViewResolver. ResourceBundleViewResolver-servlet.xml 配置如下所示 - <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <p

开源云平台 Nano v0.9.1发布 - 镜像重构/资源绑定/日志

大家好,Nano 0.9.1发布了.这个版本最大的变化是镜像服务器所有实现全部重构,独立构造了一个全新的镜像服务模块,统一管理镜像信息,彻底解决了以前版本中,镜像信息.尺寸不一致,传输失败导致镜像锁定等类似问题,同时也为后续从Core模块中剥离镜像服务独立部署做准备. 其次,从0.9.1开始,所有云主机实例和镜像资源都会绑定到当前登录用户,用户只能看到自己拥有的资源,管理员可以通过多用户分配,实现资源隔离. 新版本下用户的大部分操作都会生成操作日志,便于管理员审计和故障排查 升级后,在角色权限中

资源绑定ResourceBundle

package com.init; import java.util.ResourceBundle; public class Resources { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } public Resources() { // TODO Auto-generated constructor stub ResourceBundle

struts2官方 中文教程 系列七:消息资源文件

介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字段标签,并根据用户的语言环境将文本更改为特定的语言. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列七:消息资源文件  即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html 下载本章节代码 信息资源属性文件 在Struts2 we

[免费了] SailingEase .NET Resources Tool (.NET 多语言资源编辑器)

这是我2010年左右,写 Winform IDE 项目时延伸出的一个小项目. 最初是以共享软件的形式存在的.    后来忙于其它事情,没有精力再去打理,就被雪藏至今,最近抽了几天时间,把软件里的注册验证相关逻辑都去掉了,以完全免费的形式发布,希望对大家有用. 痛点: 通常我们为了让软件支持多语言,会使用 .NET 自带的资源文件来存储不同的语言资源,在程序中加载和调用,但是对于大型工程或者团队开发,包括不断演进的版本,会让多语言开发十分的麻烦,存在许多不可控的因素,比如以下几点: 1)过去的资源

[问答题]有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?

方法1(对于PHP5及更高版本): $readcontents = fopen("http://www.phpres.com/index.html", "rb"); $contents = stream_get_contents($readcontents); fclose($readcontents); echo $contents; 方法2: echo file_get_contents("http://www.phpres.com/index.htm

springMVC(3)方法入参灵活绑定

在原生Servlet中,我们通过在doGet和doPost方法绑定web资源访问接口:HttpServletRequest和HttpServletResponse到入参来进一步通过request.getParameter()等方法获取我们的web资源.在SpringMVC中,我们一样可以将HttpServletRequest和HttpServletResponse绑定到入参中使用,但除此之外,SpringMVC还能进一步分析我们处理方法的入参信息,将各类请求资源绑定到我们的方法入参上,并将数据类

ASP.NET网站实现中英文转换(本地化资源)

主要内容: 1. 简单例子 2. 进一步认识Localization 3. 语言转换 4. 解决方案 一. 简单例子   1.下面通过一个简单的例子来实现本地化是那么的简单,首先我们打开Visual Studio 2010,新建一个名叫[中英文转换]的工程(名字就无关紧要了,随你喜欢--),如下所示: 2.然后我们在Index.aspx这张页面上放一些控件,添加完之后的页面就好像下面的一样: <%@ Page Language="C#" AutoEventWireup="

LMT NODE PBS作业排队系统——高效分配网格资源

LMT NODE PBS作业排队系统--高效分配网格资源 网格是一个集成的计算与资源环境,充分吸收各种计算资源,并将它们转化成一种随处可得的.可靠的.标准的同时还是经济的计算能力.与传统的网络资源不同,网格资源具有异构性.动态性和自治性的特点. 网格资源的这些特性给网格资源自身的管理带来了实现上的困难和不可控性.同时为了满足高性能计算的目的,必须提供高效的资源管理服务.网格系统的资源管理负责决定作业请求CPU服务等待时间.作业的内存分配.以及怎样平衡计算负载等多方面的问题.资源管理同时负责在所有