传统渲染管线与可编程Shader着色器

传统渲染管线与可编程Shader着色器

  1.GUP的问世

      上世纪的绝大多数显示加速芯片都不能称之为完整意义上的GPU,因为它们仅仅只有像素填充和纹理贴图的基本功能。而 NVIDIA 公司在1999年所发布的GeForce 256图形处理芯片则首次提出了GPU的概念。GPU所采用的核心技术有硬件T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L(Transform and Lighting,多边形转换与光源处理)技术可以说是GPU问世的标志。

 2.传统的固定渲染管线

  渲染管线类似工作流水线,为了提高工作能力和效率。
什么叫做一条“像素渲染管线”?简单的说,传统的一条渲染管线是由包括Pixel Shader Unit(像素着色单元)+ TMU(纹理贴图单元) + ROP(光栅化引擎)三部分组成的。用公式表达可以简单写作:PS=PSU+TMU+ROP 。从功能上看,PSU完成像素处理,TMU负责纹理渲染,而ROP则负责像素的最终输出。所以,一条完整的像素管线意味着在一个时钟周期完成至少进行1个PS运算,并输出一次纹理。

 3.Shader(着色器)的引入和三种Shader编程语言

  而GPU的下一次革新则是引入可编程Shader(着色器)。着色器代替了传统的渲染管线,可以实现3D图形学中的相关计算。由于可编程性,由于可编程性,从而实现各种各样的图像效果,而不受显卡固定渲染管线限制。这极大的提高了图像的画质。而从GeForce 3到GeForce 9,GPU的发展都是一直基于这种用于显卡硬件几何架构/渲染过程的Shader来进行的。
目前面向GPU的编程有三种高级图像语言库可供选择:微软提供HLSL(high level shading language),低层是通过Direct3D编写的。OpenGL提供GLSL(OpenGl Shading language),第三个就是NVIDIA研发的CG(C for graphics)语言。由于CG是由NVIDIA和微软公司共同研发的,也就是以HLSL为基础开发的,二者很相识。不过CG同时兼容D3D和OpenGL图形接口,这意味着Cg编写的shader可以编译到D3D和OpenGL都能适应运行的环境。

 4.Shader(着色器)的分类

早期的Shader(着色器)有两种,一种是顶点着色器,称为Vertex Shader(Opengl叫Vertex program 也有叫Vertex Shader),取代渲染管线中的变换和光照部分,程序员可以自己控制顶点变换和光照等。另一种是像素作色器,称为Pixel Shader(OpenGL称为fragment program,也有叫fragment  Shader)取代固定渲染管线中的光栅化部分,程序员可以自己控制像素颜色和纹理采样等。

 5. GPU的像素着色单元和顶点着色单元

在图形处理中,最常见的像素都是由RGB(红绿蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的算数逻辑运算器(ALU)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值