• 顶点着色器: 执行顶点的变换、光照、材质的应用与计算等顶点的相关操作, 每个顶点会执行一次. ?
  • 片元着色器: ?
  • OpenGL ES 仅允许使用三角形搭建物体
  • 采用左手三维坐标系

修饰符

标量 浮点 float 整形 int 布尔 bool
浮点向量 vec2 vec3 vec4
整形向量 ivec2 ivec3 ivec4
布尔向量 bvec2 bvec3 bvec4
浮点矩阵 mat2 2x2 mat3 3x3 mat4 4x4
采样器 sampler2D sampler3D samplerCube
其他 结构体 strcut 数组 空类型 void

限定符

attribute

  • 只能用于顶点着色器
  • 修饰 float, vec*, mat
  • 其值由宿主程序批量传入渲染管线

uniform

  • 顶点着色器或片元着色器
  • 修饰 float, int, bool
  • 值由宿主程序传入

varying

  • 将顶点着色器的值传入片元着色器中

const

  • 编译时常量
  • 声明时必须初始化
  • 片元着色器中浮点必须指明精度
    • lowp
    • mediump
    • highp
    • precision lowp/mediump/highp float/int;

程序基本机构

  • 全局变量声明
  • 自定义函数
  • main 函数

内建变量

  • 输入变量: 将渲染管线中固定功能部分产生的信息传递进着色器
  • 输出变量: 将着色器产生的信息传递给渲染管线中固定功能的部分
  • 顶点着色器
    • gl_Position, vec4 类型, 输出变量
    • gl_PointSize, float 类型, 输出变量
  • 片元着色器
    • 输入变量
      • gl_FragCoord, vec4, 当前片元相对于窗口位置的坐标值
      • gl_FrontFacing
    • 输出变量
      • gl_FragColor, vec4, 将片元颜色值送入渲染管线
      • gl_FragData, vec4 数组

内建函数

  • 独特硬件功能的访问接口
  • 简单的数学函数
  • 复杂的函数