您的位置:首页 > 其它

着色语言(Shader Language),以及HLSL VS GLSL VS CG

2011-07-20 21:41 507 查看
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”

In the last year I have never had to write a single HLSL/GLSL shader. Bottom line, I can’t think of any reason NOT to use CG.

shader language,称为着色语言,shade在英语是阴影、颜色深浅的意思,Wikipedia上对shader language的解释为“The job of a surface shading procedure is to choose a color for each pixel on a surface, incorporating any variations in color of the surface itself and the effects of lights that
shine on the surface(Marc Olano)”,即,shader language基于物体本身属性和光照条件,计算每个像素的颜色值。

实际上这种解释具有明显的时代局限性,在GPU编程发展的早期,shader language的提出目标是加强对图形处理算法的控制,所以对该语言的定义亦针对于此。但随着技术的进步,目前的shader language早已经用于通用计算研究。

shader language被定位为高级语言,如,GLSL的全称是“High Level Shading Language”,Cg语言的全称为“C for Graphic”,并且这两种shader language的语法设计非常类似于C语言。不过高级语言的一个重要特性是“独立于硬件”,在这一方面shader language暂时还做不到,shader language完全依赖于GPU构架,这一特征在现阶段是非常明显的!任意一种shader language都必须基于图形硬件,所以GPU编程技术的发展本质上还是图形硬件的发展。在shader
language存在之前,展示基于图形硬件的编程能力只能靠低级的汇编语言。

目前,shader language的发展方向是设计出在便捷性方面可以和C++\JAVA相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法的效率”。Shader language目前主要有3种语言:基于OpenGL的GLSL,基于Direct3D的HLSL,还有NVIDIA公司的Cg 语言。

本章的目的是阐述shader language的基本原理和运行流程,首先从硬件的角度对Programmable Vertex Processor(可编程顶点处理器,又称为顶点着色器)和 Programmable Fragment Processor(可编程片断处理器,又称为片断着色器)的作用进行阐述,然后在此基础上对vertex program和fragment program进行具体论述,最后对GLSL、HLSL和Cg进行比较。

http://bbs.gameres.com/showthread.asp?threadid=138918

上述网址有对不同着色语言的争论,看看还是可以增长很多见识的。不见得哪个对,关键是用好哪门语言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: