1.  Graphics pipline和DirectX各版本的重大变化

1.1 Graphics pipline概述

Graphics pipline是描述图形系统将3D场景渲染到2D屏幕需要执行的步骤的概念模型。包括以下步骤:

(1)3D model input:

三角形,三个顶点各自携带几何坐标、光照颜色、纹理坐标信息。

(2)Transform&lighting:

(a)空间变化流程:

Object space(Modeling Transformations)->World space(计算光照,然后进行透视变化)->Eye space(除法,回到三维)->NDC(视穿变换)->Screen space

(b)计算光照

对每个顶点计算光照和颜色

TIPS1:为什么要采用齐次坐标?

a.合并操作矩阵,将缩放、旋转、平移矩阵操作合成一个单一的矩阵;b.可以表示无穷远的点。

难点1:clipping剪裁在什么时机进行?

(3)Rasterization:

计算机三角形覆盖屏幕上的哪些像素

(4)Texture Mapping:

纹理是用来包裹物体,使其更加真实的位图。关键是纹理采样。纹理和光照进行叠加,生成图像。

难点2:所有坐标需要进行透视校正

(5)Depth Test

每个三角形离屏幕都有一个深度,记录在Depth-buffer中,离屏幕近的显示在上面,离屏幕远的可能就被遮挡了,不用画了。

1.2 DirectX各版本的重大变化

(1)DirectX9

Transform&Lighting->Vertex shader

Texture&coloring->Pixel shader

(2)DirectX10

Geometry shader:输入一个三角形,输出k个三角形。可以放大输入顶点的数量,消除从CPU到GPU的瓶颈。导致了硬件设计的重大困难

Stream out:算出来的内部数据可以循环使用,GPU计算下一个时刻的颜色和位置等,不需要CPU参与。不仅是性能福利,也使粒子系统完全独立于CPU

提出Unified shader的理念:Vertex shader和Pixel shader负载不均衡,所以统一着色器架构,共用硬件,用公平的调度算法分配资源

(3)DirectX11

输入不再是三角形而是曲面(Patch Prim),曲面上有16个控制点。

Hull shader:对曲面的16个控制点进行变换,并生成细分因子

Tessellator:生成36个三角形网格的其次坐标

Domain shader:网格坐标结合原始的patch带入曲面方程,进行36次插值

2. Graphics Architecture设计的基本理念

2.1 EU模块设计

Vertex shader & Pixel shader并行处理,互不相关。执行shader的硬件由三部分组成:Fetch/Decode,ALU,Execution context。传统的CPU中的方法在GPU中并不适用,GPU中的核心设计思想是:

        KeyConcept1:slimmed down cores to make it light and can fly in parallel

减小每个单元的成本,增加并行单元数量

KeyConcept2:SIMD,单指令多数据流

分享指令流,运算单元是各自的,但是取址和解码是共享的。一个指令流运算8个像素,硬件中16个core,128个像素并行处理能力。

KeyConcept3:并发交错以隐藏停顿

解决纹理采样中速度的不匹配问题,纹理访问到Memory中取需要100-1000个cycles。交错执行,core一直处理忙碌状态,先前等待的资源到了,继续执行。

EU执行单元设计总结:

16core同时输入16串指令流,每个core中8个ALU单元,每个core可以4个流同时并发交错执行,所以总计可以同时计算512个片段。

2.2 core调度

设计要点:预分配资源;动态派发;保证顺序。

KeyConcept1:保持硬件忙碌

静态预分配所有必要的资源,在任务开始前避免死锁这种情况同时保证进行向前。Geometry shader很慢,因为其允许动态膨胀,消耗硬件资源。

KeyConcept2:动态派发实现负载均衡

通过动态生成、聚合和重新分配任务来管理不规则性。VS生成的三角形的像素不一定要自己的core执行,通过Fixed Function进行动态派发,将任务发配给闲置的单元。

KeyConcept3:preallocate outputs in FIFO order

动态派发可能导致乱序问题,进来的时候,预先分配好出去的顺序,先进先出。乱序执行但是按顺序输出,然后进行blending。

(1)为什么Rasterization不用EU来执行?

a)    它会导致不规则的数据膨胀

b)    它需要进行动态派发,为后续的PS中所有的core都能忙碌起来。

c)     必须在保证顺序的情况下重新分发。

(2)为什么ZU不用EU来执行?

ZU会导致early reject,会减少任务的数目,需要重新派发的过程,所以ZU不能成为shader。此外,ZU必须保持先后顺序一定相关,所以必须进行重新排序。

3. Fiexd-Function模块

逻辑和实际硬件设计模块的映射关系

(1)IA->BCI 输入指令,考虑了硬件特性重新取名,和逻辑上功能一致

(2)Tess 和逻辑上功能一致

(3)PA->TAS 三角形属性设置模块,包含两部分功能:算出三角形三条边的方程,算出三角形内部的每一个像素用来插值的属性。

(4)Rast->SG(重新派发),TG,IU

SG:一条条扫描线覆盖屏幕上的每一像素点,判断点在三角形内部还是外部

TG:拼贴成8乘8的块,以便后面计算方便

IU:对每个顶点用算出来的属性值进行插值

(5)OM->Z(ZL1,ZL2,ZL3),WBU

ZL1(实际已经去除):在TG8乘8的块基础上,做计算

ZL2:去除被遮挡的像素,节省资源

ZL3:重新进行深度检查

TAS算过属性值,存在buffer中,需要插值pixel属性值时的时候直接从buffer中取就行了,实现复用。

WBU对顺序有要求,所以也不能在shader中执行。3.0提出blending可以在shader中执行,这对硬件提出了很大的挑战。

FLU:fixed-function中各个模块都需要进行基本运算,共用FLU单元,有需求时就利用FLU单元进行计算。

动态共享cache,那个模块需要就利用共享的cache。

从memory中预取数据放到cache中,减少读取数据的等待时间。

EU有并行高速的处理能力,FF处理能力能否匹配?设置多个Slice,每个slice对应一个FF。

对于对性能要求不高的任务,可以将EU模块全部停电,甚至取一个slice,实现低能耗。

转载于:https://www.cnblogs.com/italysue/p/9383124.html

Basic Concepts in Graphics and Architecture相关推荐

  1. 未来:spring响应式编程 Hands-On Reactive Programming in Spring 5(二)------Basic Concepts

    看完这篇文章你会有很大收获! 好学近乎知,力行近乎仁,知耻而后勇. The previous chapter explained why it is important to build reacti ...

  2. 网络系统结构和设计的基本规则(Basic rules for network system architecture and design)

    网络系统结构和设计的基本规则(Basic rules for network system architecture and design) PSTN ( Public Switched Teleph ...

  3. Cluster analysis :Basic Concepts and Algorithms -- Part 5 Cluster Evalation

    系列文章 Cluster analysis :Basic Concepts and Algorithms – Part 1 Overview Cluster analysis :Basic Conce ...

  4. Cluster analysis :Basic Concepts and Algorithms -- Part 3 Hierarchical Clustering

    系列文章目录 Cluster analysis :Basic Concepts and Algorithms – Part 1 Overview Cluster analysis :Basic Con ...

  5. 1.1「Motoko——Basic concepts and terms Mutable state」

    1.1「Motoko--Basic concepts and terms && Mutable state」 1.[从声明到块表达式] "声明列表(Declarations) ...

  6. Basic concepts behind Web Audio API

    Audio graphs 1.创建audio context 2.在context中创建source,例如<audio>, OscillatorNode, sound/video file ...

  7. Cluster analysis :Basic Concepts and Algorithms -- Part 1 Overview

    参考文献:(1)<Introduction to Data Mining (Second Edition)>,2018,Tan, Pang-Ning:Steinbach, Michael: ...

  8. JXTA promotion 3, basic concepts

    JXTA基本概念 JXTA的是Juxtapose(并列)的缩写. 当你在使用分布于各处的计算机时,你需要标示这些节点的IP地址.假如是服务器,你可以通过他们拥有的静态指定的IP来识别他们,而在局域网中 ...

  9. SQL Server全程

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

最新文章

  1. 经典教材《模式识别和机器学习》官方免费下载!
  2. 和大家分享一个小TIP
  3. mysql5.5 配置_MySQL5.5 安装配置方法教程
  4. pycharm 如何自动添加头注释,比如时间,作者信息等
  5. Qt——P6 QPushButton创建
  6. [python]一个遍历多层文件夹,然后替换文件内容和目录名称的案例
  7. Python web爬虫
  8. php7使用什么缓存,PHP7 opcache缓存清理问题
  9. Maven 安装教程
  10. 线性代数第6章答案(仅供参考!!!)
  11. 04L型匹配和T型匹配的核心算法
  12. 安卓设备脱离pc自动化测试,Termux模拟器下python+uiautomator2的环境设置。本人亲测,踩坑总结。
  13. origin导出矢量图变色,怎么办?
  14. 联调QuartersII + ModelSim(下载安装)
  15. c语言中,关于延迟函数的理解
  16. 概率分布,独立同分布在图像分类与检测中到底代表什么?
  17. 【有奖征集】地球一小时:让万物感受你的爱,用H5表达你的心!
  18. NGINX源码之:ngx_arrayngx_listngx_string
  19. 广东自考计算机应用,2020年广东省自考计算机应用技术(610201)专业考试计划...
  20. 一文讲透图像分割经典网络:FCN、Unet、DeepLabV3+、Vnet、Unet++

热门文章

  1. 【inline、inline-block间的空隙】
  2. 计算机教育软件排名,电脑教学软件
  3. 十字路口待转区什么用_左转待转区的几种违章 稍不注意你绝对就要中招
  4. VF2, VF3算法
  5. 2017年6月大学英语六级真题(第一套)阅读理解(一)(每日一摸)
  6. 惠普喷墨打印机卡纸了
  7. Ubuntu死机卡死问题
  8. 阿里大S,强推,接口测试之必会接口加密类型
  9. 常用颜色的RGB值及调色方法
  10. 喜讯 | 创新引领,数据赋能,数说故事再度斩获金鼠标数字营销大赛双项大奖