GLSL基础

OpenGL Shading Language GLSL作为一种着色语言是纯粹的和GPU打交道的计算机语言。

因为GPU是多线程并行处理器,所以GLSL直接面向SIMD模型的多线程计算。

GLSL编写的着色器函数是对每个数据同时执行的。

每个顶点都会由顶点着色器中的算法处理,每个像素也都会由片段着色器中的算法处理。

因此,初学者在编写自己的着色器时,需要考虑到SIMD的并发特性,并用并行计算的思路来思考问题。 

最常见用法是在顶点着色器里生成所需要的值,然后传给片断着色器用。  

GLSL能做什么?

  • 日以逼真的材质 -- 金属,岩石,木头,油漆等
  • 日益逼真的光照效果 -- 区域光和软阴影
  • 非现实材质 -- 美术效果,钢笔画,水墨画和对插画技术的模拟
  • 针对纹理内存的新用途
  • 更少的纹理访问 
  • 图形处理 -- 选择,边缘钝化遮蔽和复杂混合
  • 动画效果 -- 关键帧插值,粒子系统
  • 用户可编程的反走样方法

GLSL注意

  • GLSL支持函数重载
  • GLSL不存在数据类型的自动提升,类型必须严格保持一致。
  • GLSL不支持指针,字符串,字符,它基本上是一种处理数字数据的语言
  • GLSL不支持联合、枚举类型、结构体位字段及按位运算符

数据类型

GLSL有三种基本数据类型:float,int和bool,以及由这些数据类型组成的数组和结构体。

需要注意的是,GLSL并不支持指针。与C/C++不同的是,GLSL将向量和矩阵作为基本数据类型。

注意:GLSL不存在数据类型的自动提升,类型必须严格保持一致。

猜你喜欢

转载自blog.csdn.net/lutherluov/article/details/52636987