3.3 The Evolution of Programmable Shading
早在1984年就出现了可编程shading框架的想法,RenderMan shading语言在80年代后期被开发出来至今仍然在电影渲染中使用。
在GPU原生支持可编程shader之前,有一些尝试是通过多遍渲染(multiple rendering passes)去实现可编程shader。在2000年,Peercy et al.描述了一个系统将RenderMan Shaders转换为多pass渲染。他们发现GPU缺少两个特性来使得这种尝试非常通用:(1)使用计算结果作为纹理坐标的能力(dependent texture reads)(2)在纹理和color buffer中支持扩展范围和精度的数据类型。
在2001年初,NVIDIA的GeForce 3是第一个支持可编程vertex shader的GPU,通过DirectX 8.0和OpenGL扩展暴露出来。这些shader使用类汇编语言编写并且在驱动中实时转换为microcode。
pixel shader也是在DirectX 8.0中被引入的,但是pixel shader SM 1.1缺乏真正的可编程性-他们只是非常有限的被支持的“程序”-被驱动转换为纹理混合状态。这些“程序”不但长度受限并且缺少上面说的两个特性(dependent texture reads & float data)- 对真正的可编程性来说是至关紧要的。
那个时候的shader是不支持控制流的(即分支),因此条件语句必须通过计算两个部分然后在结果中选择或插值来模拟。DirectX定义了Shader Model的概念来区别具有不同shader能力的硬件。GeForce3支持vertex shader model 1.1和pixel shader model 1.1。在2001年期间,GPU向通用的pixel shader编程模型方面发展。DirectX 8.1增加了pixel shader model 1.2到1.4(每个意味着不同的硬件),进一步扩展了pixel shader的能力,增加了更多的指令和对dependent texture reads更普遍的支持。
2002年DirectX9.0发布,包含了Shader Model 2.0(以及扩展版本2.X),具有真正的可编程vertex和pixel shader。OpenGL方面,相似的功能也通过各种扩展增加进来。支持任意的dependent texture reads和16位浮点数值存储被增加进来,这样最终完成了2000年Peercy et al.定义的需求集。指令,纹理,寄存器这些受限制的shader资源都增加了,因此shader可以做更复杂的效果。控制流的支持也被加入。shader的长度和复杂性的增长使得汇编语言模型逐渐的笨重。幸运的是,DirectX9.0也引入了一种新的shader编程语言,叫做HLSL(High Level Shading Language)。HLSL由微软和NVIDIA合作开发,NVIDIA自己也发布了跨平台的Cg语言。差不多同时,OpenGL ARB为OpenGL发布了一个类似的语言,叫做GLSL(也叫做GLslang)。
Shader Model 3.0在2004年被引入,将一些可选的特性变成必须的,进一步增加了受限资源,为vertex shader增加了有限的texture read支持。2005年发布的Xbox 360和2006年发布的PS3都具有支持Shader Model3.0的GPU。
下一个大的进步是2007年出现的Shader Model 4.0 (包含于DirectX10.0以及OpenGL扩展),引入了几个主要的特性,例如geometry shader和stream output。SM4.0引入了一个统一化的编程模型(对于所有类型的shader:vertex,pixel,geometry),即之前介绍过的common-shader core。受限资源进一步增加了,并且支持了整数类型(包括位操作)。并且,SM4.0只支持高级语言shader,即HLSL,GLSL,用户不能再使用汇编语言接口了。
GPU厂商、微软和OpenGL ARB持续的进化和扩展可编程shading的能力。除了已存在的API的版本更新,一些新的编程模型,如NVIDIA的CUDA和AMD的CTM已经将目标指向非图形化的程序。这种GPU上的一般目的计算领域(GPGPU)将在后面简要介绍。
3.3.1 Comparison of Shader Models
比较了DirectX的shader model 2.x, 3.0, 4.0。DirectX9以及之前,IHV(独立硬件提供商)可以通过“capability bits”提供自己的GPU的特性。DirectX10开始,所有的IHV必须支持标准模型。
(略过)
分享到:
相关推荐
Realtime Rendering, 3D, CG, Graphics Realtime Rendering 3ed 第三版 pdf 英文版
Real-Time Rendering.3rd.pdf 图片版,凑合用吧
Real-Time Rendering, Fourth Edition 实时渲染最新版 第四版PDF,下载地址见文档....
real-time rendering4th 高清免解压优质资源百度网盘下载绝对高清版本
realtime rendering 第三版 英文版 pdf格式
只要3分,全彩图全文字,关键是只有39M,不是可怕的910M.
Real-Time Rendering 4th Edition 全彩892M百度网盘下载地址
Real Time Rendering 4th Edition 高清版 ,带目录。
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
游戏开发引擎的基本知识,很有用。包括渲染、碰撞,非扫描版哦。
Audio Visualization Using ThMAD Realtime Graphics Rendering for Ubuntu Linux 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Realtime 3d Polygon Rendering using BSP Trees.pdf
Audio Visualization Using ThMAD Realtime Graphics Rendering for Ubuntu Linux 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如...
2008 年新出的好书,英文版。 希望大家喜欢。 需要用djvu打开,可以打印。
浙江大学cad实验室自主研发图形引擎架构设计实现的有关资料
Real-Time Rendering 4th Edition完整版 全彩 pdf 892MB 这里挂的是百度云链接
Brought to you by Wolfgang Engel and the same team of editors who made the ShaderX series a success, this volume covers advanced rendering techniques, engine design, GPGPU techniques, related ...
scout_realtime, 在你的浏览器中,实时服务器度量 侦察实时将实时服务器和流程指标发送到你的浏览器 ! 开始:在要监视的服务器上:安装 gem: gem install scout_realtime启动守护进程:scout_realtime start在你的...