glsl语法

本文详细介绍了GLSL的基础类型、数组和结构体、运算符等内容,并提供了顶点和片段着色器的示例代码。

 

一、基础类型

  • void 空类型
  • bool 布尔类型 true,false
  • int 带符号的整数 signed integer
  • float 带符号的浮点数 floating scalar
  • vec2, vec3, vec4 n维浮点数向量
  • bvec2, bvec3, bvec4 n维布尔向量
  • ivec2, ivec3, ivec4 n维整数向量
  • mat2, mat3, mat4 2x2, 3x3, 4x4 浮点数矩阵
  • sampler1D 用于内建的纹理函数中引用指定的1D纹理的句柄。只可以作为一致变量或者函数参数使用
  • sampler2D 2D纹理句柄
  • sampler3D 三维纹理句柄
  • samplerCube cube map纹理句柄
  • sampler1DShadow 一维深度纹理句柄
  • sampler2DShadow 二维深度纹理句柄

 

二、数组和结构体

  • float foo[3] glsl只支持1维数组
  • struct type-name{} 类似c语言中的 结构体
//一般类型
float pSize = 10.0;
float pSize1;
pSize1=10.0;
...

//复合类型
vec4 color = vec4(0.0, 1.0, 0.0, 1.0);
vec4 color1;
color1 =vec4(0.0, 1.0, 0.0, 1.0);
...

//结构
struct light {
    float intensity;
    vec3 position;
};
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));

//数组
const float c[3] = float[3](5.0, 7.2, 1.1);

 

三、运算符

  • () a*(b+c)
  • [] () . ++ – 数组下标[],方法参数fun(arg1,arg2,arg3),属性访问a.b,自增/减后缀a++ a–
  • ++ – + - ! 自增/减前缀++a –a,正负号(一般正号不写)a ,-a,取反!false
  • * / 乘除数学运算
  • + - 加减数学运算
  • < > <= >= 关系运算符
  • == != 相等性运算符
  • && 逻辑与
  • ^^ 逻辑排他或(用处基本等于!=)
  • || 逻辑或
  • ? : 三目运算符
  • = += -= *= /= 赋值与复合赋值
  • , 顺序分配运算

四、变量限定符

  • none (默认的可省略)本地变量,可读可写,函数的输入参数既是这种类型
  • varying 主要负责在vertex 和 fragment 之间传递变量
  • const 常量值必须在声明时初始化。它是只读的不可修改的。
  • attribute 只能存在于vertex shader中,一般用于保存顶点或法线数据,它可以在数据缓冲区中读取数据。表示只读的顶点数据,只用在顶点着色器中。数据来自当前的顶点状态或者顶点数组。它必须是全局范围声明的,不能在函数内部。一个attribute可以是浮点数类型的标量,向量,或者矩阵。不可以是数组或者结构体
  • uniform 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。一致变量在顶点着色器和片段着色器之间是共享的。它也只能在全局范围进行声明。
  • varying 顶点着色器的输出。例如颜色或者纹理坐标,(插值后的数据)作为片段着色器的只读输入数据。必须是全局范围声明的全局变量。可以是浮点数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值