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