DirectX之DirectCompute的计算着色器(1)

                                                          Compute Shader Overview

                                                               计算着色器概述

  • 本文翻译自MSDN网站

 

计算着色器是一个可编程着色器阶段,扩展了微软Direct3D 11,超越图形编程。计算着色器技术也称为 DirectCompute 技术。

和其他可编程着色器(例如顶点和几何着色器)一样,计算着色器也是用 HLSL 设计和实现的,但这只是相似之处。 计算着色器提供高速通用计算,并利用图形处理单元(GPU)上的大量并行处理器。 计算着色器提供内存共享和线程同步特性,以允许更有效的并行编程方法。 您可以调用 ID3D11DeviceContext::Dispatch  或  ID3D11DeviceContext::DispatchIndirect  方法以在计算着色器中执行命令。一个计算着色器能够在多个线程上并行运行。

 

 

在 Direct3D 10.x硬件上使用计算着色器

 

微软Direct3D 10上的一个计算着色器也被称为 DirectCompute 4.x.

如果你使用Direct3D 11 API和更新的驱动程序, feature level(特性级别)10和10.1 Direct3D 硬件能够选择性的使用cs_4_0和cs_4_1 profiles(配置文件)支持一个有限制的DirectCompute形式。当您在这个硬件上使用 DirectCompute 时,请记住以下限制

  1. 每个组的最大线程数限制为 D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP (768) 。
  2. numthreads的X和Y维度被限制为D3D11_CS_4_X_THREAD_GROUP_MAX_X (768) 和 D3D11_CS_4_X_THREAD_GROUP_MAX_Y (768).
  3. numthreads 的Z维度限制为1。
  4. dispatch分派的Z维被限制为 D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION (1).
  5. 只有一个无序访问视图能够被绑定到着色器 (D3D11_CS_4_X_UAV_REGISTER_COUNT是 1).
  6. 只有RWStructuredBuffers 和RWByteAddressBuffers 可以作为无序访问视图使用。
  7. 线程只能访问groupshared组共享)内存中自己的区域来进行写入,但它可以从任何位置读取。
  8. 在访问用于写入的groupshared组共享)内存时,必须使用 SV_GroupIndex 或 SV_DispatchThreadID 
  9. Groupshared 内存限制为每组16KB。
  10. 单个线程被限制为256字节的groupshared 组共享)内存区域,以供写入。
  11. 没有原子指令可用。
  12. 没有双精度值可用。

 

 

在Direct3D 11.x硬件上使用计算着色器

 

Direct3D 11上的计算着色器也称为DirectCompute 5.0。

当您使用cs_5_0profiles配置文件)支持的DirectCompute时,请记住以下几点:

  1. 每个组的最大线程数限制为D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP (1024)。
  2. numthreadsXY维度被限制为D3D11_CS_THREAD_GROUP_MAX_X (1024) 和 D3D11_CS_THREAD_GROUP_MAX_Y (1024).
  3. numthreadsZ维度被限于D3D11_CS_THREAD_GROUP_MAX_Z (64).
  4. dispatch(分派)最大维度被限制在 D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION (65535).
  5. 可以绑定到着色器的无序访问视图的最大数量是 D3D11_PS_CS_UAV_REGISTER_COUNT (8).
  6. 支持RWStructuredBuffers、RWByteAddressBuffers和类型化的无序访问 (RWTexture1DRWTexture2DRWTexture3D等等).
  7. 原子指令是可用的。
  8. 可以提供双精度支持。或者有关如何确定双精度是否可用的信息,请参阅D3D11_FEATURE_DOUBLES.

 

本节内容

主题

描述

  1. 新资源类型

Direct3D 11中增加了几种新的资源类型。

  1. 访问资源

访问资源的几种方法。

  1. 原子函数

要访问新的资源类型或共享内存,使用一个互锁的内在函数。联锁函数保证原子操作。也就是说,它们保证按照程序的顺序发生。本节列出原子函数。

 

 

相关主题

  1. 图形管线
  1. 如何:创建一个计算着色器
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值