[C++]DirectX 12 3D游戏开发实战—第13章 学习笔记01 2019.5.10
2019-05-11 17:12
459 查看
版权声明:个人学习使用,请勿转载 https://blog.csdn.net/qq_36028073/article/details/90081240
词汇
流式操作:streaming operation 流式多处理器:streaming multiprocessor,SM
通用GPU程序设计:General Purpose GPU Programming,GPGPU Programming
数据并行算法:data-parallel algorithm 计算着色器:compute shader 模糊:blur
线程组:thread group 调度:dispatch
CUDA核心
内容
第13章 计算着色器
现代GPU可以代替CPU进行同时的大量相同计算
计算着色器可以让我们访问GPU来实现数据并行算法
学习目标
- 学习编写计算着色器。
- 对硬件处理线程组以及其中线程的方式等高级知识有一定的认识。
- 探究哪些Direct3D资源可以被设置为计算着色器的输入与输出。
- 了解各种线程ID及用法。
- 学习共享内存的相关知识,并知道它为什么可以优化性能。
- 探究如何获取更多关于GPGPU编程的细节信息。
13.1 线程与线程组
- GPU编程过程中可将线程划分为由线程组构成的网格。一个线程运行于一个多处理器之上。对于16个多处理器的GPU,至少需要将任务分解为16个线程组,以此让每个多处理器都能充分运转。
- 要获得更佳性能,需要将每个多处理器至少拥有2个线程组,可以让他们切换到不同的线程组进行处理。
- 每个线程组都有一块共享内存供组内的线程访问。
- 一个线程组中含有n,硬件会将这些线程分为多个wrap(32个线程),多处理器则会以SIMD32的方式(32个线程同时进行相同指令序列)处理wrap,每个CUDA核心都可以处理一个线程。假设GPU架构中的每个多处理器由32个CUDA核心,Direct3D中处于性能考虑,应设线程组的大小为wrap尺寸的整数倍。
- 对于各种型号的图形硬件来说,线程数为256的线程组是一种普遍适合的初始设置,可以据此为基础,再根据具体需求尝试将其调整为其它大小,线程组中的线程数会对线程组的分派次数产生影响
Direct3D中启动线程组的方法
void ID3D12GraphicsCommandList::Dispatch( UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ);
若创建一个3x2=6个线程组的网格:
cmdList->Dispatch(3,2,1);
相关文章推荐
- [C++]DirectX 12 3D游戏开发实战—第13章 学习笔记02 2019.5.20
- [C++]DirectX 12 3D 4000 游戏开发实战—第13章 学习笔记04 2019.5.13
- [C++]DirectX 12 3D游戏开发实战—第13章 学习笔记02 2019.5.11
- [C++]DirectX 12 3D游戏开发实战—第14章 学习笔记01
- [C++]DirectX 12 3D游戏开发实战—第13章 学习笔记05 2019.5.14
- [C++]DirectX 12 3D游戏开发实战—第13章 学习笔记06 2019.5.16
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之10: Chap12: Blending
- 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架
- C++ DirectX 游戏开发视频教程 01 资源下载链接
- HTML网页开发学习笔记(燕十八)-12 margin首页实战
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试
- Layabox 3D游戏开发学习笔记---射线检测,鼠标控制物体运动
- 【笔记】《DirectX 9.0 3D游戏开发编程基础》:Direct3D初始化
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之5: Chap7: Drawing in Direct3D ---- Part I
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之3: Chap5: Timing, Direct Input, and Animation and Sprites
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第一章:向量代数
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十章:混合
- 【Unity 3D游戏开发学习笔记】总结摄像机和光源的使用方法
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线