GLSL一些常见的词汇表注解

目录

类型


  • void

    // 这个没什么好说的非常常见 `当函数没有参数或函数不返回值时使用。
    void main(void);
    int aFunction(void);
    void bFunction(float);
  • bool,int,float

    // 这几个也是一样,布尔值,有符号整形,浮点数
  • bvec2 ,bvec3,bvec4

    // 上面这三个指的是布尔向量,分别是2,3,4维的向量
    bvec2 aBvec2 = bvec2(true, true);
    bvec2 bBvec2 = bvec2(true);

    bvec2 cBvec2 = bvec2(aBvec3);
    bvec2 dBvec2 = bvec2(aBvec3.x, aBvec3.y);

    类推。。3,4写法
  • ivec2 ,ivec3 ,ivec4

    // 二维整数向量,分别是2,3,4维的向量
    bvec2 aIvec2 = ivec2(1, 1);
    bvec2 bIvec2 = ivec2(1);
    bvec2 cIvec2 = ivec2(aIvec3);
    bvec2 dIvec2 = ivec2(aIvec3.x, aIvec3.y);

    类推。。3,4写法
  • vec2 ,vec3 ,vec4

    // 二维浮点向量,当然了也是跟上面的一样
    vec2 aVec2 = vec2(1.0, 1.0);
    vec2 bVec2 = vec2(1.0);

    vec2 cVec2 = vec2(aVec3);
    vec2 dVec2 = vec2(aVec3.x, aVec3.y);
  • mat2 ,mat3,mat4

    接下来这几个是矩阵n*n浮点矩阵
    mat2 aMat2 = mat2(1.0, 0.0, // 1. column
    0.0, 1.0); // 2. column
    mat2 bMat2 = mat2(1.0);
    mat2 cMat2 = mat2(aVec2, bVec2);
    mat2 dMat2 = mat2(aVec3, aFloat);

    ------

    mat4 aMat4 = mat4(1.0, 0.0, 0.0, 0.0, // 1. column
    0.0, 1.0, 0.0, 0.0, // 2. column
    0.0, 0.0, 1.0, 0.0, // 3. column
    0.0, 0.0, 0.0, 1.0); // 4. column
    mat4 bMat4 = mat4(1.0);

    mat4 cMat4 = mat4(aVec4, bVec4, cVec4, dVec4);
    mat4 dMat4 = mat4(aVec4, aVec3, bVec4, cVec4, aFloat);

    mat4数据类型为 4x4 浮点矩阵。正如你在上面看到的,可以用不同的方式初始化:
    逐列为每个组件提供一个值。
    提供一个用于主对角线上组件的值。
    提供向量和标量的组合。
    以相同的方式可以按组件或逐列访问数据:

    aMat4[3][3] = 1.0;
    float aFloat = aMat4[3][3];

    aMat4[0] = vec4(1.0);
    vec4 aVec4 = aMat4[0];
  • sampler2D

    sampler2D用于处理二维纹理,它表示一个从纹理中获取像素颜色的采样器。通过使用sampler2D,可以在着色器中读取和处理二维纹理图像的像素信息。这样可以实现纹理映射、纹理混合、纹理过滤等功能,使渲染效果更加细腻和逼真。
  • samplerCube

    samplerCube用于处理立方体贴图,它表示一个从立方体贴图中获取像素颜色的采样器。立方体贴图是由六个面构成的纹理,可以用于模拟环境反射、天空盒等效果。通过samplerCube,可以在着色器中对立方体贴图进行采样,获取对应方向上的颜色信息。
  • struct

    //结构变量类型,声明基于标准类型的自定义数据结构。自动创建具有相同名称的结构的构造函数
    struct matStruct {
    vec4 ambientColor;
    vec4 diffuseColor;
    vec4 specularColor;
    float specularExponent;
    } newMaterial;

    newMaterial = matStruct(vec4(0.1, 0.1, 0.1, 1.0),
    vec4(1.0, 0.0, 0.0, 1.0),
    vec4(0.7, 0.7, 0.7, 1.0),
    50.0);

装饰符(限定符 )


  • attribute

    //顶点属性数据。
    //attribute`包含从 WebGL/OpenGL 环境共享到顶点着色器的数据的只读变量。
    //因为顶点着色器对每个顶点执行一次,所以属性是按顶点数据指定的,通常包含诸如顶点的空间位置、颜色、法线方向和纹理坐标等信息。

    attribute **vec4** v_color;
  • const

    //常量符
    //const限定符可应用于任何变量的声明,以指定其值不会更改。

    const float PI = 3.14159265359;
  • uniform

    uniform变量包含从 WebGL/OpenGL 环境共享到顶点或片段着色器的只读数据。
    该值是针对每个图元的,因此对于沿图元、帧或场景保持不变的变量很有用。

    uniform vec4 direction;
  • varying

    可变变量限定符。
    varying变量包含从顶点着色器到片段着色器共享的数据。
    变量必须写入顶点着色器,片段着色器中的只读值然后从构成片段的顶点进行插值。

    varying vec3 position;
  • precision

    //还不知道
  • highp

    //还不知道
  • mediump

    //还不知道
  • lowp

    //还不知道
  • in

    //还不知道
  • out

    //还不知道
  • inout

    //还不知道

内置变量


  • gl_Position

  • gl_PointSize

  • gl_PointCoord

  • gl_FrontFacing

  • gl_FragCoord

  • gl_FragColor

内置常量


  • gl_MaxVertexAttribs

  • gl_MaxVaryingVectors

  • gl_MaxVertexTextureImageUnits

  • gl_MaxCombinedTextureImageUnits

  • gl_MaxTextureImageUnits

  • gl_MaxFragmentUniformVectors

  • gl_MaxDrawBuffers