Re: [请益] Shader 是抽象层?

楼主: holymars   2015-03-05 12:53:42
※ 引述《lovesnake (LoyalDog)》之铭言:
: 标题: [请益] Shader 是抽象层?
: 时间: Wed Mar 4 23:35:35 2015
:
: 看了一堆文章头昏脑胀决定直接问了!
:
: 看Nvidia的CUDA架构……
: 每颗SP都是一样的东西,哪来分什么shader
: 但之前的Unified Shader又强调硬件上将
: Shader整合
: 然后看着Graphics Pipeline……
:
: 那些究竟是抽象的东西,还是硬件上真的这样做呢?
看年代
基本上GPU硬件的发展过程,就是一个特化结构朝向通用结构发展的过程
最早最早的显示卡(当时叫3D加速卡)
就是把整套rasterize-based graphics pipeline
用硬件整个实作出来
今天我们把这种完全固定功能,只能由API作一些参数改动的称为fixed-pipeline
但是fixed-pipeline的功能太受限,无法应付日新月异的算法
就把fixed-pipeline中特别需要灵活性的两个stage->Vertex Pixel拆出来
在里面加入类似于CPU的设计,有一组相对简单的指令集,可以作有限编程
进入programmable pipeline的年代,开始有vertex shader和pixel shader
而这些指令集需要一种程式语言来描述,这就是所谓的shader language
早期的vertex shader和pixel shader是两种不同的硬件
发展到后期发现同样的运算单元在两个地方都出现是很不经济的
开始有硬件商思考要让vertex shader和pixel shader共用硬件
最早是ATI用在游戏主机上,这就是stream processer的开始
从这个年代硬件就朝向General-purpose GPU (GPGPU)的方向发展
所以也有了CUDA之类的东西出现
简单的说 fixed -> programmable -> general purpose这是一个历史进程
但是回到硬件层设计说,有些东西是没办法programmable的
越灵活的运算单位,所需要的电晶体就越高
一颗CPU核心和一颗SP核心,die size可能差个几十倍
因为CPU里面有很深的pipeline(不是graphics pipeline的那个pipiline)
有branch-prediction,有很大块的register和cache
相对的来说就是编程灵活度和异核协调性是完全不同的
总而言之GPU设计就是一个在灵活和效率中间找寻新的平衡点的过程
: 呃…
: 换个问法…… 像是resterizer,他是硬件直接做还是透过GPU General 的 IS拼出来的呢
: ?
目前的resterizer都是硬件实作
类似的情况还有texel unit / blending unit
这些都是作成fixed比作成programmable有更小的die size
灵活度某种程度上是必要牺牲
当然随着年代推进,programmable blending也越来越重要
所以下一代的硬件也都有这功能了
: 我的抽象层是指这个……
:
: 其他像是VS FS GS TS 等等,是有专门的硬件实作他们个别的功能。 还是也是都相同的
: 硬件,透过不同的IS去拼出来的呢?
programmable pipeline的年代,VS / PS是不同硬件
GPGPU的年代 VS / PS=FS / GS=TS是同一个硬件
:
: 谢谢
:
: 话说计组人脑也很好理解啊XDD
: ※ 编辑: lovesnake (140.121.221.204), 03/05/2015 00:38:12
: 推 cowbaying: 这个问题首先要看driver写到哪边 03/05 08:39
: → cowbaying: 记得是04还是05年开始 显卡硬件改为stream processor 03/05 08:41
: → cowbaying: 这个部份要细看一下CHIP的diagram 03/05 08:46
: 推 cowbaying: 记得没错 除了绘图卡有硬件着色器外 一般的卡都是由 03/05 08:47
: 推 cowbaying: 驱动程是转译成SP能辨识的资料 03/05 08:48
作者: chchwy (mat)   2015-03-05 12:59:00
推 说得很清楚
作者: lovesnake (LoyalDog)   2015-03-05 13:11:00
超清楚的T_T 谢谢!! 另外请问 TS = GS 是指?
楼主: holymars   2015-03-05 13:19:00
Tessellation shader和geometry shader是同一个东西pixel shader和fragment shader指的也是同一个东西
作者: cjcat2266 (CJ Cat)   2015-03-05 13:31:00
TS和GS是不同东西吧
楼主: holymars   2015-03-05 13:33:00
要讲古的话最早的GS概念 = TCS+TCS+GS 包山包海都作..那时有人叫这东西GS也有人叫TS,后来再细分stage是另外的事了会有这么多名词差异指来指去,都是openGL和D3D害的=3=
作者: lovesnake (LoyalDog)   2015-03-05 13:36:00
原来如此,受教!
楼主: holymars   2015-03-05 13:37:00
FS<->PS TCS<->HS TES<->DS...为什么大家都爱自创名词
作者: a27417332 (等号卡比)   2015-03-05 13:57:00
3GS虽然可以小幅细分曲面,但速度比不上Tessellation吧为啥前面冒出一个3 QQ
作者: dreamnook (亚龙)   2015-03-05 14:15:00
自创名词显得很潮呀 把事情弄的越复杂越好骗人XD
作者: doomleika (iSuck)   2015-03-07 15:36:00

Links booklink

Contact Us: admin [ a t ] ucptt.com