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必须支持标准模型。
(略过)
分享到:
相关推荐
Real-Time Rendering.3rd.pdf 图片版,凑合用吧
但是根据标题和描述,我们可以推断出有关《Realtime Rendering 3ed 第三版 pdf》的知识点。该书是关于实时渲染技术的权威参考书籍,聚焦于计算机图形学在实时应用程序中的应用,如视频游戏、模拟、可视化等领域。...
Real-Time Rendering, Fourth Edition 实时渲染最新版 第四版PDF,下载地址见文档....
实时渲染4th版(Real-Time Rendering, 4th Edition)由Tomas Akenine-Moller、Erik Haines和Nathan Vella三位专家合著,涵盖了自上一版以来该领域的最新发展和技术进步。本书深入探讨了包括光照模型、阴影技术、纹理...
realtime rendering 第三版 英文版 pdf格式
#### 4. 高级渲染技术 - **屏幕空间反射**:介绍了一种基于屏幕空间的反射技术,可以在不大幅增加计算量的情况下实现高质量的反射效果。 - **动态模糊**:解释了如何通过模拟物体运动轨迹来实现动态模糊效果,增强...
Real-Time Rendering 4rd最新版,高清大概800M,详细介绍渲染知识
Real-Time Rendering 4th Edition完整版 全彩 pdf 892MB 这里挂的是百度云链接
Real-Time Rendering 4th Edition(实时渲染第4版) 高清全彩版,图形学/游戏方向实时渲染经典书籍推荐,仅供学习使用。百度网盘下载链接永久有效。
附件为百度网盘链接。...Real-Time Rendering Forth Edition 2018年最新第四版,实时计算机图形学百科全书全新版本,图形学必备,完美pdf版本,非扫描版,可以选择字体,强烈推荐。文件较大,将近1G。
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
《实时渲染》(Real-Time Rendering)第四版是一本在计算机图形学领域内备受推崇的专业书籍。本书由Tomas Akenine-Möller、Eric Haines、Naty Hoffmann、Angelo Pesce、Michał Iwanicki以及Sébastien Hillaire共同...
4. **关键技术亮点与应用实例:** - **渲染面部皱纹**:通过高精度的纹理映射和高效的计算方法,实现在实时渲染中展现逼真的面部细节。 - **表面细节地图与软自阴影**:采用快速向量纹理映射技术,在Valve的Source...
Audio Visualization Using ThMAD Realtime Graphics Rendering for Ubuntu Linux 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
4. **性能优化**:讨论了如何通过数据结构优化、并行计算、纹理压缩和LOD(Level of Detail)技术来提高渲染效率,以满足实时性要求。 5. **光照与阴影**:详细讲解了各种光照计算方法,包括环境光、点光源、聚光灯...