Realtime Rendering 3rd笔记 4

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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必须支持标准模型。
(略过)

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学动态神经网络领域的学术界工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束系统动力学的情况下;②解决带有参数不确定性的线性非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真实验进一步验证书中提出的理论技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值