(二) shader 简介

shader language被定位为高级语言,如,GLSL的全称是“High Level ShadingLanguage”Cg语言的全称为“C for Graphic”, 不过高级语言的一个重要特性是独立于硬件,在这一方面shader language暂时还做不到,shader language完全依赖于GPU构架 。Shader language目前主要有3种语言:基于OpenGLGLSL(OpenGL Shading Language,基于Direct3DHLSL,还有NVIDIA公司的Cg语言。 


使用shader language编写的程序称之为shader program(着色程序)。着色程序分为两类:vertex shader program(顶点着色程序)和fragment shader program(片断着色程序)。 


GPU上的两个组件:Programmable Vertex Processor(可编程顶点处理器,又称为顶点着色器)和Programmable Fragment Processor(可编程片断处理器,又称为片断着色器) 。顶点和片段处理器被分离成可编程单元,可编程顶点处理器是一个硬件单元,可以运行顶点程序,而可编程片段处理器则是一个可以运行片段程序的单元。 


顶点着色器控制顶点坐标转换过程;片段着色器控制像素颜色计算过程。这样就区分出顶点着色程序和片段着色程序的各自分工:Vertex program 负责顶点坐标变换;Fragment program负责像素颜色计算;前者的输出是后者的输入。 


顶点着色程序GPU前端模块(寄存器)中提取图元信息(顶点位置、法向量、纹理坐标等),并完成顶点坐标空间转换、法向量空间转换、光照计算等操作,最后将计算好的数据传送到指定寄存器中;然后片断着色程序从中获取需要的数据,通常为纹理坐标、光照信息等,并根据这些信息以及从应用程序传递的纹理信息(如果有的话)进行每个片断的颜色计算,最后将处理后的数据送光栅操作模块。 


片断着色程序对每个片断进行独立的颜色计算,最后输出颜色值的就是该片段最终显示的颜色。可以这样说,顶点着色程序主要进行几何方面的运算,而片段着色程序主要针对最终的颜色值进行计算。 

 

可编程图形渲染管线 示意图:




shader语言简介


1、基于 OpenGLGLSL(OpenGLShading Language ),基于 OpenGL的接口 ;


2、基于Direct3D HLSL(High Level ShadingLanguage), 基于Direct3D 的接口。以上两者不能混用 。


 3、NVIDIA公司的 Cg(C for Graphic)语言 。

Cg 是一个可以被 OpenGLDirect3D广泛支持的图形处理器编程语言。Cg语言和 OpenGLDirectX并不是同一层次的语言,而是

OpenGLDirectX的上层,即:Cg程序是运行在 OpenGLDirectX标准顶点和像素着色的基础上的。cg基于知识联盟(MicrosoftNVIDIA),且拥有跨平台性 。


Cg 同时被 OpenGL Direct3D 两种编程 API 所支持。一个正确编写的 Cg应用程序可以不做任何修改的同时工作在 OpenGL

Direct3D 之上。 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值