Realtime Rendering 3rd笔记 4

从1984年的初步构想到2007年的ShaderModel4.0,可编程着色器经历了从概念到广泛应用的过程。早期的尝试通过多遍渲染实现,直到2001年NVIDIA的GeForce3首次在GPU上支持了可编程顶点着色器。随后DirectX和OpenGL不断引入新版本的ShaderModel,增加了诸如几何着色器和流输出等功能,推动了GPU通用计算的发展。

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 第四版》是一本关于实时渲染的书籍,目前该书已经发行第四版。实时渲染是计算机图形学中的一个重要领域,主要研究实时生成展示逼真图像的技术。 该书的第四版主要更新了一些最新的实时渲染技术算法,随着计算机硬件的不断发展,实时渲染的效果速度都有了巨大的进步。新版的内容包括光线追踪、全局光照、阴影算法、材质处理、几何处理等方面的最新研究成果实践经验。 这本书对于计算机图形学游戏开发等领域的从业人员非常有价值,尤其是对于需要实时渲染的应用游戏开发者而言,是一本不可多得的参考书。它详细介绍了实时渲染的基本原理、算法技术,并提供了大量的实例代码,帮助读者理解应用这些知识。 与前几版相比,第四版更新了很多新的内容,对一些经典算法进行了改进优化。同时,该书还考虑了现代图形硬件的架构特性,提供了更加全面深入的实时渲染知识。读者可以通过学习本书,了解到实时渲染技术的最新进展,掌握实时渲染算法的原理实现方法,提高实时渲染的效果性能。 总而言之,《realtime rendering 第四版》是一本权威且实用的实时渲染指南,对于计算机图形学游戏开发领域的从业人员来说,是一本必备的参考书籍。阅读本书可以帮助读者深入理解实时渲染的原理技术,并应用到实际的项目中,提升渲染效果性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值